9 #ifndef ThePEG_Transverse_H
10 #define ThePEG_Transverse_H
13 #include "ThePEG/Config/ThePEG.h"
14 #include "ThePEG/Vectors/Lorentz5Vector.h"
15 #include "Transverse.fh"
29 template <
typename Value>
35 typedef typename BinaryOpTraits<Value,Value>::MulT
Value2;
128 BasePair::first -= pt.
x();
129 BasePair::second -= pt.
y();
144 BasePair::first += pt.
x();
145 BasePair::second += pt.
y();
153 BasePair::first *= a;
154 BasePair::second *= a;
162 BasePair::first /= a;
163 BasePair::second /= a;
173 Value
x()
const {
return BasePair::first; }
178 Value
y()
const {
return BasePair::second; }
188 Value
pt()
const {
return sqrt(
pt2()); }
193 double phi()
const {
return atan2(
y(),
x()); }
199 template <
typename OStream,
typename T,
typename UT>
205 template <
typename IStream,
typename T,
typename UT>
213 template <
typename Value>
214 inline Transverse<Value>
220 template <
typename Value>
221 inline Transverse<Value>
227 template <
typename ValueA,
typename ValueB>
229 Transverse<typename BinaryOpTraits<ValueA,ValueB>::MulT>
231 typedef typename BinaryOpTraits<ValueB,ValueA>::MulT ResultT;
236 template <
typename ValueA,
typename ValueB>
238 Transverse<typename BinaryOpTraits<ValueA,ValueB>::MulT>
240 typedef typename BinaryOpTraits<ValueB,ValueA>::MulT ResultT;
245 template <
typename Value>
246 inline Transverse<double>
252 template <
typename ValueA,
typename ValueB>
254 Transverse<typename BinaryOpTraits<ValueA,ValueB>::DivT>
256 typedef typename BinaryOpTraits<ValueA,ValueB>::DivT ResultT;