File indexing completed on 2026-08-06 09:38:24
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef ThePEG_WaveFunctionBase_H
0010 #define ThePEG_WaveFunctionBase_H
0011
0012
0013
0014 #include <ThePEG/Vectors/Lorentz5Vector.h>
0015 #include <ThePEG/Vectors/LorentzVector.h>
0016 #include <ThePEG/PDT/ParticleData.h>
0017 #include <ThePEG/Helicity/HelicityDefinitions.h>
0018
0019 namespace ThePEG {
0020
0021 namespace Helicity {
0022
0023
0024
0025
0026
0027
0028
0029 enum Direction
0030 {
0031 incoming,
0032 outgoing,
0033 intermediate
0034 };
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 class WaveFunctionBase{
0059
0060 public:
0061
0062
0063
0064
0065
0066
0067 WaveFunctionBase()
0068 : _particle(), _momentum(), _dir(intermediate)
0069 {}
0070
0071
0072
0073
0074 WaveFunctionBase(const Lorentz5Momentum & p,
0075 tcPDPtr pd, Direction dir = intermediate)
0076 : _particle(pd), _momentum(p), _dir(dir)
0077 {
0078 if(_dir==outgoing) _momentum *= -1.0;
0079 if ( dir != outgoing ) {
0080 tcPDPtr anti = pd->CC();
0081 if ( anti ) _particle = anti;
0082 }
0083 }
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094 Energy px() const {return _momentum.x();}
0095
0096
0097
0098
0099 Energy py() const {return _momentum.y();}
0100
0101
0102
0103
0104 Energy pz() const {return _momentum.z();}
0105
0106
0107
0108
0109 Energy e() const {return _momentum.e();}
0110
0111
0112
0113
0114 Energy mass() const {return _momentum.mass();}
0115
0116
0117
0118
0119 Energy2 m2() const {return _momentum.m2();}
0120
0121
0122
0123
0124 const Lorentz5Momentum & momentum() const {return _momentum;}
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134 long id() const {return _particle->id();}
0135
0136
0137
0138
0139 PDT::Spin iSpin() const {return _particle->iSpin();}
0140
0141
0142
0143
0144 tcPDPtr particle() const {return _particle;}
0145
0146
0147
0148
0149 ThePEG::Helicity::Direction direction() const {return _dir;}
0150
0151
0152
0153
0154 void direction(ThePEG::Helicity::Direction in) {_dir=in;}
0155
0156
0157 protected:
0158
0159
0160
0161
0162 void transformMomentum(const LorentzRotation & r) {
0163 _momentum.transform(r);
0164 }
0165
0166 private:
0167
0168
0169
0170
0171 tcPDPtr _particle;
0172
0173
0174
0175
0176 Lorentz5Momentum _momentum;
0177
0178
0179
0180
0181 Direction _dir;
0182 };
0183 }
0184 }
0185
0186 #endif