9 #ifndef ThePEG_VertexBase_H
10 #define ThePEG_VertexBase_H
14 #include <ThePEG/Interface/Interfaced.h>
15 #include <ThePEG/PDT/ParticleData.h>
16 #include <ThePEG/Helicity/HelicityDefinitions.h>
17 #include <ThePEG/Repository/EventGenerator.h>
18 #include "ThePEG/StandardModel/StandardModelBase.h"
19 #include "VertexBase.fh"
28 namespace VertexType {
138 vector<long>
search(
unsigned int ilist,
long id)
const;
154 bool allowed(
long id1,
long id2,
long id3,
long id4 = 0)
const;
216 generator()->standardModel()->sin2ThetaW());
219 generator()->standardModel()->sin2ThetaW());
224 double sin2ThetaW()
const {
226 return generator()->standardModel()->sin2ThetaW();
271 void addToList(
const vector<long> & ids);
281 void addToList(
long ida,
long idb,
long idc,
long idd = 0);
304 complex<Energy> mass=-GeV,
305 complex<Energy> width=-GeV);
316 complex<Energy> mass=-GeV,
317 complex<Energy> width=-GeV) {
374 for(ix=0;ix<p.size();++ix) {
375 for(iy=0;iy<=ix;++ix) {
376 _kine[ix][iy]=p[ix]*p[iy];
385 Energy2
invariant(
unsigned int ix ,
unsigned int iy)
const {
387 return _kine[ix][iy];
513 struct BaseClassTrait<
ThePEG::Helicity::VertexBase,1> {
523 struct ClassTraits<
ThePEG::Helicity::VertexBase>
524 :
public ClassTraitsBase<ThePEG::Helicity::VertexBase> {
528 static string className() {
return "ThePEG::VertexBase"; }
VertexType::T _theName
Name of vertex.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual Complex propagator(int iopt, Energy2 q2, tcPDPtr part, complex< Energy > mass=-GeV, complex< Energy > width=-GeV)
Calculate the propagator for a diagram.
unsigned int size() const
Access to the particle information.
std::complex< double > Complex
ThePEG code should use Complex for all complex scalars.
double _sw
Fixed value of to use.
string name() const
Returns the name of this object, without the path.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
A concreate implementation of ClassDescriptionBase describing an abstract class with persistent data...
bool isIncoming(tPDPtr p) const
Is a particle allowed as an incoming particle?
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
unsigned int orderInGs() const
Get the order in .
static void Init()
Standard Init function used to initialize the interfaces.
vector< vector< PDPtr > > _particles
Storage of the particles.
Rebinder is a class associating pairs of pointers to objects.
set< tPDPtr > _outpart
ParticleData pointers for the allowed outgoing particles.
static AbstractClassDescription< ThePEG::Helicity::VertexBase > initVertexBase
Describe a concrete class with persistent data.
void orderInGs(unsigned int order)
Set the order in .
This is the main namespace within which all identifiers in ThePEG are declared.
VertexBase & operator=(const VertexBase &)
Private and non-existent assignment operator.
unsigned int _coupopt
option for the coupling
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double strongCoupling(Energy2 q2) const
Strong coupling.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
set< tPDPtr > _inpart
ParticleData pointers for the allowed incoming particles.
Complex _norm
The overall coupling.
bool isOutgoing(tPDPtr p) const
Is a particle allowed as an outgoing particle?
double _ee
Fixed value of the electromagentic coupling to use.
The VertexBase class is the base class for all helicity amplitude vertices.
Energy2 invariant(unsigned int ix, unsigned int iy) const
Get one of the kinematic invariants.
double _gs
Fixed value of strong coupling to use.
unsigned int _ordergS
Order of vertex in .
unsigned int _ordergEM
Order of vertex in .
bool _calckinematics
Whether or not to calculate the kinematic invariants for the vertex.
const T UNDEFINED
Undefined Enum for the Lorentz structures.
virtual IVector getReferences()
Return a vector of all pointers to Interfaced objects used in this object.
ostream & operator<<(ostream &, const VertexBase &)
Output the information on the vertex.
Complex norm() const
Get the coupling.
bool allowed(long id1, long id2, long id3, long id4=0) const
Is a given combination allowed.
vector< long > search(unsigned int ilist, long id) const
Function to search the list.
double electroMagneticCoupling(Energy2 q2) const
Electromagnetic coupling.
bool kinematics() const
Whether or not to calculate the kinematics invariants.
void orderInGem(unsigned int order)
Set the order in .
void calculateKinematics(const vector< Lorentz5Momentum > &p)
Calculate the kinematics for a n-point vertex.
The Interfaced class is derived from the InterfacedBase class adding a couple of things particular to...
VertexBase(VertexType::T name, bool kine=false)
Constructor for -point vertices.
double weakCoupling(Energy2 q2) const
Weak coupling.
const double pi
Good old .
void calculateKinematics(const Lorentz5Momentum &p0, const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, const Lorentz5Momentum &p3)
Calculate the kinematics for a 4-point vertex.
unsigned int _npoint
Number of particles at the vertex.
friend ostream & operator<<(ostream &, const VertexBase &)
The output operator is a friend to avoid the data being public.
tEGPtr generator() const
Return a pointer to the EventGenerator controlling the run.
vector< vector< Energy2 > > _kine
Kinematica quantities needed for loop vertices.
void kinematics(bool kine)
Set whether or not to calculate the kinematics invariants.
void calculateKinematics(const Lorentz5Momentum &p0, const Lorentz5Momentum &p1, const Lorentz5Momentum &p2)
Calculate the kinematics for a 3-point vertex.
VertexType::T getName() const
Get name of Vertex.
static string className()
Return the name of class T.
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
void norm(const Complex &coup)
Members for the amplitude calculations.
unsigned int getNpoint() const
Get number of lines on Vertex.
vector< IBPtr > IVector
A vector of pointers to InterfacedBase objects.
void addToList(const vector< long > &ids)
Members to set-up the particles.
virtual void rebind(const TranslationMap &trans)
Rebind pointer to other Interfaced objects.
Complex normPropagator(int iopt, Energy2 q2, tcPDPtr part, complex< Energy > mass=-GeV, complex< Energy > width=-GeV)
Calculate propagator multiplied by coupling.
const set< tPDPtr > & incoming() const
Get the list of incoming particles.
unsigned int orderInGem() const
Get the order in .
const set< tPDPtr > & outgoing() const
Get the list of outgoing particles.