diff --git a/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.cc b/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.cc deleted file mode 100644 --- a/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.cc +++ /dev/null @@ -1,133 +0,0 @@ -// -*- C++ -*- -// -// QTildeShowerKinematics1to2.cc is a part of Herwig - A multi-purpose Monte Carlo event generator -// Copyright (C) 2002-2017 The Herwig Collaboration -// -// Herwig is licenced under version 3 of the GPL, see COPYING for details. -// 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" -#include "Herwig/Shower/QTilde/Base/ShowerParticle.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 "ThePEG/Helicity/LorentzSpinorBar.h" - -using namespace Herwig; -using namespace ThePEG::Helicity; - -vector QTildeShowerKinematics1to2::getBasis() const { - vector dum; - dum.push_back( _pVector ); - dum.push_back( _nVector ); - return dum; -} - -void QTildeShowerKinematics1to2::setBasis(const Lorentz5Momentum &p, - const Lorentz5Momentum & n, - Frame inframe) { - _pVector=p; - _nVector=n; - frame(inframe); - Boost beta_bb; - if(frame()==BackToBack) { - beta_bb = -(_pVector + _nVector).boostVector(); - } - else if(frame()==Rest) { - beta_bb = -pVector().boostVector(); - } - else - assert(false); - Lorentz5Momentum p_bb = pVector(); - Lorentz5Momentum n_bb = nVector(); - p_bb.boost( beta_bb ); - n_bb.boost( beta_bb ); - // rotate to have z-axis parallel to p/n - Axis axis; - if(frame()==BackToBack) { - axis = p_bb.vect().unit(); - } - else if(frame()==Rest) { - axis = n_bb.vect().unit(); - } - else - assert(false); - LorentzRotation rot; - if(axis.perp2()>1e-10) { - double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); - rot.rotate(acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); - } - else if(axis.z()<0.) { - rot.rotate(Constants::pi,Axis(1.,0.,0.)); - } - _xPerp=LorentzVector(1.,0.,0.,0.); - _yPerp=LorentzVector(0.,1.,0.,0.); - _xPerp.transform(rot); - _yPerp.transform(rot); - // boost back - _xPerp.boost( -beta_bb ); - _yPerp.boost( -beta_bb ); -} - -void QTildeShowerKinematics1to2::setMomentum(tShowerParticlePtr particle, - bool timeLike) const { - Energy mass = particle->mass() > ZERO ? particle->mass() : particle->data().mass(); - // calculate the momentum of the assuming on-shell - Energy2 pt2 = sqr(particle->showerParameters().pt); - double alpha = timeLike ? particle->showerParameters().alpha : particle->x(); - double beta = 0.5*(sqr(mass) + pt2 - sqr(alpha)*pVector().m2())/(alpha*p_dot_n()); - Lorentz5Momentum porig=sudakov2Momentum(alpha,beta, - particle->showerParameters().ptx, - particle->showerParameters().pty); - porig.setMass(mass); - particle->set5Momentum(porig); -} - -void QTildeShowerKinematics1to2::constructSpinInfo(tShowerParticlePtr particle, - bool timeLike) const { - // now construct the required spininfo and calculate the basis states - PDT::Spin spin(particle->dataPtr()->iSpin()); - if(spin==PDT::Spin0) { - ScalarWaveFunction::constructSpinInfo(particle,outgoing,timeLike); - } - // calculate the basis states and construct the SpinInfo for a spin-1/2 particle - else if(spin==PDT::Spin1Half) { - // outgoing particle - if(particle->id()>0) { - vector > stemp; - SpinorBarWaveFunction::calculateWaveFunctions(stemp,particle,outgoing); - SpinorBarWaveFunction::constructSpinInfo(stemp,particle,outgoing,timeLike); - } - // outgoing antiparticle - else { - vector > stemp; - SpinorWaveFunction::calculateWaveFunctions(stemp,particle,outgoing); - SpinorWaveFunction::constructSpinInfo(stemp,particle,outgoing,timeLike); - } - } - // calculate the basis states and construct the SpinInfo for a spin-1 particle - else if(spin==PDT::Spin1) { - bool massless(particle->id()==ParticleID::g||particle->id()==ParticleID::gamma); - vector vtemp; - VectorWaveFunction::calculateWaveFunctions(vtemp,particle,outgoing,massless); - VectorWaveFunction::constructSpinInfo(vtemp,particle,outgoing,timeLike,massless,vector_phase); - } - else { - throw Exception() << "Spins higher than 1 are not yet implemented in " - << "FS_QtildaShowerKinematics1to2::constructVertex() " - << Exception::runerror; - } -} -void QTildeShowerKinematics1to2::transform(const LorentzRotation & r) { - _pVector *= r; - _nVector *= r; - _xPerp *= r; - _yPerp *= r; -} diff --git a/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.h b/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.h deleted file mode 100644 --- a/Shower/QTilde/Kinematics/QTildeShowerKinematics1to2.h +++ /dev/null @@ -1,132 +0,0 @@ -// -*- C++ -*- -// -// QTildeShowerKinematics1to2.h is a part of Herwig - A multi-purpose Monte Carlo event generator -// Copyright (C) 2002-2017 The Herwig Collaboration -// -// Herwig is licenced under version 3 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/QTilde/Kinematics/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 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 - */ - Lorentz5Momentum sudakov2Momentum(double alpha, double beta, - Energy px, Energy py) const { - return alpha*_pVector + beta*_nVector + px*_xPerp+py*_yPerp; - } - - /** - * Transform the shower kinematics (usually the reference vectors) - */ - virtual void transform(const LorentzRotation & r); - -protected: - - /** - * Set the basis vectors - */ - void setBasis(const Lorentz5Momentum &p, const Lorentz5Momentum & n, - Frame frame); - - /** - * Set a preliminary momentum for the particle - */ - void setMomentum(tShowerParticlePtr,bool timelike) const; - - /** - * Construct the spin info object for a shower particle - */ - void constructSpinInfo(tShowerParticlePtr,bool timelike) const; - -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; - - /** - * x \f$q_\perp\f$ reference vector - */ - LorentzVector _xPerp; - - /** - * y \f$q_\perp\f$reference vector - */ - LorentzVector _yPerp; -}; - -} - -#endif /* HERWIG_QTildeShowerKinematics1to2_H */