diff --git a/Contrib/RadiativeZPrime/AnomalousVVVVertex.h b/Contrib/RadiativeZPrime/AnomalousVVVVertex.h --- a/Contrib/RadiativeZPrime/AnomalousVVVVertex.h +++ b/Contrib/RadiativeZPrime/AnomalousVVVVertex.h @@ -1,139 +1,148 @@ // -*- 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, complex<Energy> mass=-GeV, complex<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; + /** + * Dummy setCouplings for a four point interaction + * This method is virtual and must be implemented in + * classes inheriting from this. + */ + virtual void setCoupling(Energy2,tcPDPtr,tcPDPtr,tcPDPtr,tcPDPtr) { + assert(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(); 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 */ diff --git a/Contrib/RadiativeZPrime/FFZPrimeVertex.cc b/Contrib/RadiativeZPrime/FFZPrimeVertex.cc --- a/Contrib/RadiativeZPrime/FFZPrimeVertex.cc +++ b/Contrib/RadiativeZPrime/FFZPrimeVertex.cc @@ -1,77 +1,77 @@ // -*- 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) { + for(long ix=1;ix<7;++ix) { addToList(-ix,ix,32); } // the leptons - for(unsigned int ix=11;ix<17;++ix) { + for(long 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(); } diff --git a/Contrib/RadiativeZPrime/LHC-RadiativeZPrime.in b/Contrib/RadiativeZPrime/LHC-RadiativeZPrime.in --- a/Contrib/RadiativeZPrime/LHC-RadiativeZPrime.in +++ b/Contrib/RadiativeZPrime/LHC-RadiativeZPrime.in @@ -1,123 +1,123 @@ ################################################## # 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 snippets/PPCollider.in 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 +set EventGenerator:NumberOfEvents 10000000 +set EventGenerator:RandomNumberGenerator:Seed 31122001 +set EventGenerator:PrintEvent 10 +set EventGenerator:MaxErrors 10000 # these switch off the shower and hadronization -#set LHCGenerator:EventHandler:CascadeHandler NULL -#set LHCGenerator:EventHandler:HadronizationHandler NULL +#set EventGenerator:EventHandler:CascadeHandler NULL +#set EventGenerator:EventHandler:HadronizationHandler NULL # Intrinsic pT tune extrapolated to LHC energy -set /Herwig/Shower/Evolver:IntrinsicPtGaussian 5.7*GeV +set /Herwig/Shower/ShowerHandler: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/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 +#insert SubProcess:MatrixElements[0] MEqq2ZPrime2ff # # q qbar -> Z' > Z gamma (2 -> 2 process) # #create RadiativeZPrime::MEqq2ZPrime2ZGamma MEqq2ZPrime2ZGamma -#insert SimpleQCD:MatrixElements[0] MEqq2ZPrime2ZGamma +#insert SubProcess:MatrixElements[0] MEqq2ZPrime2ZGamma # # q qbar -> Z' -> Z gamma -> f f bar gamma (2 -> 3 process ) # #create RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma MEqq2ZPrime2ZGamma2ffGamma -#insert SimpleQCD:MatrixElements[0] MEqq2ZPrime2ZGamma2ffGamma +#insert SubProcess: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 +insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/SimpleZPrime # # save the run # -saverun LHC-RadiativeZPrime LHCGenerator +saverun LHC-RadiativeZPrime EventGenerator diff --git a/Contrib/RadiativeZPrime/RadiativeZPrime.model b/Contrib/RadiativeZPrime/RadiativeZPrime.model --- a/Contrib/RadiativeZPrime/RadiativeZPrime.model +++ b/Contrib/RadiativeZPrime/RadiativeZPrime.model @@ -1,75 +1,72 @@ ################################################## # 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:QCD/RunningAlphaS /Herwig/Couplings/NLOAlphaS +set Model:EW/RunningAlphaEM /Herwig/Couplings/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 +set EventGenerator:StandardModelParameters /Herwig/NewPhysics/RadiativeZPrime/Model