/usr/include/ThePEG/Helicity/WaveFunction/WaveFunctionBase.h is in libthepeg-dev 1.8.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | // -*- C++ -*-
//
// WaveFunctionBase.h is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 2003-2011 Peter Richardson, Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef ThePEG_WaveFunctionBase_H
#define ThePEG_WaveFunctionBase_H
//
// This is the declaration of the WaveFunctionBase class.
#include <ThePEG/Vectors/Lorentz5Vector.h>
#include <ThePEG/Vectors/LorentzVector.h>
#include <ThePEG/PDT/ParticleData.h>
#include <ThePEG/Helicity/HelicityDefinitions.h>
namespace ThePEG {
namespace Helicity {
/** \ingroup Helicity
* Definition of the enumerated values used for the direction of the
* particles in the calculation of the wavefunction.
*/
enum Direction
{
incoming, /**< An incoming particle. */
outgoing, /**< An outgoing particle. */
intermediate /**< An intermediate particle. */
};
/** \ingroup Helicity
* \author Peter Richardson
*
* This class is the base class for all wavefunctions for use in helicity amplitude
* calculations. The general approach is to use a similar philosophy
* to the FORTRAN HELAS code but with additional structure.
*
* This class contains the storage of the particle type and 5-momentum
* and methods to set/access this information.
*
* The methods for the wavefunction itself will be implemented in the classes
* derived from this one for the specific spin type, for example scalar, spinor,
* vector and tensor.
*
* @see ScalarWaveFunction
* @see SpinorWaveFunction
* @see SpinorBarWaveFunction
* @see VectorWaveFunction
* @see RSSpinorWaveFunction
* @see RSSpinorBarWaveFunction
* @see TensorWaveFunction
*/
class WaveFunctionBase{
public:
/// Constructors
//@{
/**
* Default constructor
*/
WaveFunctionBase()
: _particle(), _momentum(), _dir(intermediate)
{}
/**
*
*/
WaveFunctionBase(const Lorentz5Momentum & p,
tcPDPtr pd, Direction dir = intermediate)
: _particle(pd), _momentum(p), _dir(dir)
{
if(_dir==outgoing) _momentum *= -1.0;
if ( dir != outgoing ) {
tcPDPtr anti = pd->CC();
if ( anti ) _particle = anti;
}
}
//@}
/**
* Access to the momentum components and mass
*/
//@{
/**
* Get the x component of the momentum.
*/
Energy px() const {return _momentum.x();}
/**
* Get the y component of the momentum.
*/
Energy py() const {return _momentum.y();}
/**
* Get the z component of the momentum.
*/
Energy pz() const {return _momentum.z();}
/**
* Get the energy.
*/
Energy e() const {return _momentum.e();}
/**
* Get the mass.
*/
Energy mass() const {return _momentum.mass();}
/**
* Get off-shell mass squared.
*/
Energy2 m2() const {return _momentum.m2();}
/**
* Access to the 5-momentum
*/
const Lorentz5Momentum & momentum() const {return _momentum;}
//@}
/**
* Access to the particle properties
*/
//@{
/**
* Get the particle id.
*/
long id() const {return _particle->id();}
/**
* Get 2s+1 for the particle.
*/
PDT::Spin iSpin() const {return _particle->iSpin();}
/**
* Get the particle pointer.
*/
tcPDPtr particle() const {return _particle;}
/**
* Get the direction of particle.
*/
ThePEG::Helicity::Direction direction() const {return _dir;}
/**
* Set the direction of the particle
*/
void direction(ThePEG::Helicity::Direction in) {_dir=in;}
//@}
protected:
/**
* Perform the Lorentz transformation of the wave function
*/
void transformMomentum(const LorentzRotation & r) {
_momentum.transform(r);
}
private:
/**
* Constant pointer to the particle info.
*/
tcPDPtr _particle;
/**
* Lorentz 5 momentum.
*/
Lorentz5Momentum _momentum;
/**
* Incoming or outgoing.
*/
Direction _dir;
};
}
}
#endif
|