CLHEP 2.4.6.4
C++ Class Library for High Energy Physics
Loading...
Searching...
No Matches
LorentzVector.h
Go to the documentation of this file.
1// -*- C++ -*-
2// CLASSDOC OFF
3// $Id: LorentzVector.h,v 1.2 2003/10/23 21:29:52 garren Exp $
4// ---------------------------------------------------------------------------
5// CLASSDOC ON
6//
7// This file is a part of the CLHEP - a Class Library for High Energy Physics.
8//
9// HepLorentzVector is a Lorentz vector consisting of Hep3Vector and
10// double components. Lorentz transformations (rotations and boosts)
11// of these vectors are perfomed by multiplying with objects of
12// the HepLorenzRotation class.
13//
14// .SS See Also
15// ThreeVector.h, Rotation.h, LorentzRotation.h
16//
17// .SS Authors
18// Leif Lonnblad and Anders Nilsson. Modified by Evgueni Tcherniaev, Mark Fischler
19//
20
21#ifndef HEP_LORENTZVECTOR_H
22#define HEP_LORENTZVECTOR_H
23
24#include <iostream>
25#include "CLHEP/Vector/defs.h"
26#include "CLHEP/Vector/ThreeVector.h"
27
28namespace CLHEP {
29
30// Declarations of classes and global methods
31class HepLorentzVector;
32class HepLorentzRotation;
33class HepRotation;
34class HepAxisAngle;
35class HepEulerAngles;
36class Tcomponent;
37HepLorentzVector rotationXOf( const HepLorentzVector & vec, double delta );
38HepLorentzVector rotationYOf( const HepLorentzVector & vec, double delta );
39HepLorentzVector rotationZOf( const HepLorentzVector & vec, double delta );
40HepLorentzVector rotationOf
41 ( const HepLorentzVector & vec, const Hep3Vector & axis, double delta );
42HepLorentzVector rotationOf
43 ( const HepLorentzVector & vec, const HepAxisAngle & ax );
44HepLorentzVector rotationOf
45 ( const HepLorentzVector & vec, const HepEulerAngles & e1 );
46HepLorentzVector rotationOf
47 ( const HepLorentzVector & vec, double phi,
48 double theta,
49 double psi );
50inline
51HepLorentzVector boostXOf( const HepLorentzVector & vec, double beta );
52inline
53HepLorentzVector boostYOf( const HepLorentzVector & vec, double beta );
54inline
55HepLorentzVector boostZOf( const HepLorentzVector & vec, double beta );
57 ( const HepLorentzVector & vec, const Hep3Vector & betaVector );
59 ( const HepLorentzVector & vec, const Hep3Vector & axis, double beta );
60
62
63
64/**
65 * @author
66 * @ingroup vector
67 */
69
70public:
71
72 enum { X=0, Y=1, Z=2, T=3, NUM_COORDINATES=4, SIZE=NUM_COORDINATES };
73 // Safe indexing of the coordinates when using with matrices, arrays, etc.
74 // (BaBar)
75
76 inline HepLorentzVector(double x, double y,
77 double z, double t);
78 // Constructor giving the components x, y, z, t.
79
80 inline HepLorentzVector(double x, double y, double z);
81 // Constructor giving the components x, y, z with t-component set to 0.0.
82
83 explicit HepLorentzVector(double t);
84 // Constructor giving the t-component with x, y and z set to 0.0.
85
87 // Default constructor with x, y, z and t set to 0.0.
88
89 inline HepLorentzVector(const Hep3Vector & p, double e);
90 inline HepLorentzVector(double e, const Hep3Vector & p);
91 // Constructor giving a 3-Vector and a time component.
92
94 inline HepLorentzVector(HepLorentzVector &&) = default;
95 // Copy and move constructors.
96
98 // The destructor.
99
100 inline operator const Hep3Vector & () const;
101 inline operator Hep3Vector & ();
102 // Conversion (cast) to Hep3Vector.
103
104 inline double x() const;
105 inline double y() const;
106 inline double z() const;
107 inline double t() const;
108 // Get position and time.
109
110 inline void setX(double);
111 inline void setY(double);
112 inline void setZ(double);
113 inline void setT(double);
114 // Set position and time.
115
116 inline double px() const;
117 inline double py() const;
118 inline double pz() const;
119 inline double e() const;
120 // Get momentum and energy.
121
122 inline void setPx(double);
123 inline void setPy(double);
124 inline void setPz(double);
125 inline void setE(double);
126 // Set momentum and energy.
127
128 inline Hep3Vector vect() const;
129 // Get spatial component.
130
131 inline void setVect(const Hep3Vector &);
132 // Set spatial component.
133
134 inline double theta() const;
135 inline double cosTheta() const;
136 inline double phi() const;
137 inline double rho() const;
138 // Get spatial vector components in spherical coordinate system.
139
140 inline void setTheta(double);
141 inline void setPhi(double);
142 inline void setRho(double);
143 // Set spatial vector components in spherical coordinate system.
144
145 double operator () (int) const;
146 inline double operator [] (int) const;
147 // Get components by index.
148
149 double & operator () (int);
150 inline double & operator [] (int);
151 // Set components by index.
152
155 // Copy and move assignment operators.
156
159 // Additions.
160
163 // Subtractions.
164
166 // Unary minus.
167
170 // Scaling with real numbers.
171
172 inline bool operator == (const HepLorentzVector &) const;
173 inline bool operator != (const HepLorentzVector &) const;
174 // Comparisons.
175
176 inline double perp2() const;
177 // Transverse component of the spatial vector squared.
178
179 inline double perp() const;
180 // Transverse component of the spatial vector (R in cylindrical system).
181
182 inline void setPerp(double);
183 // Set the transverse component of the spatial vector.
184
185 inline double perp2(const Hep3Vector &) const;
186 // Transverse component of the spatial vector w.r.t. given axis squared.
187
188 inline double perp(const Hep3Vector &) const;
189 // Transverse component of the spatial vector w.r.t. given axis.
190
191 inline double angle(const Hep3Vector &) const;
192 // Angle wrt. another vector.
193
194 inline double mag2() const;
195 // Dot product of 4-vector with itself.
196 // By default the metric is TimePositive, and mag2() is the same as m2().
197
198 inline double m2() const;
199 // Invariant mass squared.
200
201 inline double mag() const;
202 inline double m() const;
203 // Invariant mass. If m2() is negative then -sqrt(-m2()) is returned.
204
205 inline double mt2() const;
206 // Transverse mass squared.
207
208 inline double mt() const;
209 // Transverse mass.
210
211 inline double et2() const;
212 // Transverse energy squared.
213
214 inline double et() const;
215 // Transverse energy.
216
217 inline double dot(const HepLorentzVector &) const;
218 inline double operator * (const HepLorentzVector &) const;
219 // Scalar product.
220
221 inline double invariantMass2( const HepLorentzVector & w ) const;
222 // Invariant mass squared of pair of 4-vectors
223
224 double invariantMass ( const HepLorentzVector & w ) const;
225 // Invariant mass of pair of 4-vectors
226
227 inline void setVectMag(const Hep3Vector & spatial, double magnitude);
228 inline void setVectM(const Hep3Vector & spatial, double mass);
229 // Copy spatial coordinates, and set energy = sqrt(mass^2 + spatial^2)
230
231 inline double plus() const;
232 inline double minus() const;
233 // Returns the positive/negative light-cone component t +/- z.
234
235 Hep3Vector boostVector() const;
236 // Boost needed from rest4Vector in rest frame to form this 4-vector
237 // Returns the spatial components divided by the time component.
238
239 HepLorentzVector & boost(double, double, double);
241 // Lorentz boost.
242
243 HepLorentzVector & boostX( double beta );
244 HepLorentzVector & boostY( double beta );
245 HepLorentzVector & boostZ( double beta );
246 // Boost along an axis, by magnitue beta (fraction of speed of light)
247
248 double rapidity() const;
249 // Returns the rapidity, i.e. 0.5*ln((E+pz)/(E-pz))
250
251 inline double pseudoRapidity() const;
252 // Returns the pseudo-rapidity, i.e. -ln(tan(theta/2))
253
254 inline bool isTimelike() const;
255 // Test if the 4-vector is timelike
256
257 inline bool isSpacelike() const;
258 // Test if the 4-vector is spacelike
259
260 inline bool isLightlike(double epsilon=tolerance) const;
261 // Test for lightlike is within tolerance epsilon
262
263 HepLorentzVector & rotateX(double);
264 // Rotate the spatial component around the x-axis.
265
266 HepLorentzVector & rotateY(double);
267 // Rotate the spatial component around the y-axis.
268
269 HepLorentzVector & rotateZ(double);
270 // Rotate the spatial component around the z-axis.
271
273 // Rotates the reference frame from Uz to newUz (unit vector).
274
275 HepLorentzVector & rotate(double, const Hep3Vector &);
276 // Rotate the spatial component around specified axis.
277
280 // Transformation with HepRotation.
281
284 // Transformation with HepLorenzRotation.
285
286// = = = = = = = = = = = = = = = = = = = = = = = =
287//
288// Esoteric properties and operations on 4-vectors:
289//
290// 0 - Flexible metric convention and axial unit 4-vectors
291// 1 - Construct and set 4-vectors in various ways
292// 2 - Synonyms for accessing coordinates and properties
293// 2a - Setting space coordinates in different ways
294// 3 - Comparisions (dictionary, near-ness, and geometric)
295// 4 - Intrinsic properties
296// 4a - Releativistic kinematic properties
297// 4b - Methods combining two 4-vectors
298// 5 - Properties releative to z axis and to arbitrary directions
299// 7 - Rotations and Boosts
300//
301// = = = = = = = = = = = = = = = = = = = = = = = =
302
303// 0 - Flexible metric convention
304
306 static ZMpvMetric_t getMetric();
307
308// 1 - Construct and set 4-vectors in various ways
309
310 inline void set (double x, double y, double z, double t);
311 inline void set (double x, double y, double z, Tcomponent t);
312 inline HepLorentzVector(double x, double y, double z, Tcomponent t);
313 // Form 4-vector by supplying cartesian coordinate components
314
315 inline void set (Tcomponent t, double x, double y, double z);
316 inline HepLorentzVector(Tcomponent t, double x, double y, double z);
317 // Deprecated because the 4-doubles form uses x,y,z,t, not t,x,y,z.
318
319 inline void set ( double t );
320
321 inline void set ( Tcomponent t );
322 inline explicit HepLorentzVector( Tcomponent t );
323 // Form 4-vector with zero space components, by supplying t component
324
325 inline void set ( const Hep3Vector & v );
326 inline explicit HepLorentzVector( const Hep3Vector & v );
327 // Form 4-vector with zero time component, by supplying space 3-vector
328
330 // Form 4-vector with zero time component, equal to space 3-vector
331
332 inline void set ( const Hep3Vector & v, double t );
333 inline void set ( double t, const Hep3Vector & v );
334 // Set using specified space vector and time component
335
336// 2 - Synonyms for accessing coordinates and properties
337
338 inline double getX() const;
339 inline double getY() const;
340 inline double getZ() const;
341 inline double getT() const;
342 // Get position and time.
343
344 inline Hep3Vector v() const;
345 inline Hep3Vector getV() const;
346 // Get spatial component. Same as vect.
347
348 inline void setV(const Hep3Vector &);
349 // Set spatial component. Same as setVect.
350
351// 2a - Setting space coordinates in different ways
352
353 inline void setV( double x, double y, double z );
354
355 inline void setRThetaPhi( double r, double theta, double phi);
356 inline void setREtaPhi( double r, double eta, double phi);
357 inline void setRhoPhiZ( double rho, double phi, double z );
358
359// 3 - Comparisions (dictionary, near-ness, and geometric)
360
361 int compare( const HepLorentzVector & w ) const;
362
363 bool operator >( const HepLorentzVector & w ) const;
364 bool operator <( const HepLorentzVector & w ) const;
365 bool operator>=( const HepLorentzVector & w ) const;
366 bool operator<=( const HepLorentzVector & w ) const;
367
368 bool isNear ( const HepLorentzVector & w,
369 double epsilon=tolerance ) const;
370 double howNear( const HepLorentzVector & w ) const;
371 // Is near using Euclidean measure t**2 + v**2
372
373 bool isNearCM ( const HepLorentzVector & w,
374 double epsilon=tolerance ) const;
375 double howNearCM( const HepLorentzVector & w ) const;
376 // Is near in CM frame: Applicable only for two timelike HepLorentzVectors
377
378 // If w1 and w2 are already in their CM frame, then w1.isNearCM(w2)
379 // is exactly equivalent to w1.isNear(w2).
380 // If w1 and w2 have T components of zero, w1.isNear(w2) is exactly
381 // equivalent to w1.getV().isNear(w2.v()).
382
383 bool isParallel( const HepLorentzVector & w,
384 double epsilon=tolerance ) const;
385 // Test for isParallel is within tolerance epsilon
386 double howParallel (const HepLorentzVector & w) const;
387
388 static double getTolerance();
389 static double setTolerance( double tol );
390 // Set the tolerance for HepLorentzVectors to be considered near
391 // The same tolerance is used for determining isLightlike, and isParallel
392
393 double deltaR(const HepLorentzVector & v) const;
394 // sqrt ( (delta eta)^2 + (delta phi)^2 ) of space part
395
396// 4 - Intrinsic properties
397
398 double howLightlike() const;
399 // Close to zero for almost lightlike 4-vectors; up to 1.
400
401 inline double euclideanNorm2() const;
402 // Sum of the squares of time and space components; not Lorentz invariant.
403
404 inline double euclideanNorm() const;
405 // Length considering the metric as (+ + + +); not Lorentz invariant.
406
407
408// 4a - Relativistic kinematic properties
409
410// All Relativistic kinematic properties are independent of the sense of metric
411
412 inline double restMass2() const;
413 inline double invariantMass2() const;
414 // Rest mass squared -- same as m2()
415
416 inline double restMass() const;
417 inline double invariantMass() const;
418 // Same as m(). If m2() is negative then -sqrt(-m2()) is returned.
419
420// The following properties are rest-frame related,
421// and are applicable only to non-spacelike 4-vectors
422
424 // This 4-vector, boosted into its own rest frame: (0, 0, 0, m())
425 // The following relation holds by definition:
426 // w.rest4Vector().boost(w.boostVector()) == w
427
428 // Beta and gamma of the boost vector
429 double beta() const;
430 // Relativistic beta of the boost vector
431
432 double gamma() const;
433 // Relativistic gamma of the boost vector
434
435 inline double eta() const;
436 // Pseudorapidity (of the space part)
437
438 inline double eta(const Hep3Vector & ref) const;
439 // Pseudorapidity (of the space part) w.r.t. specified direction
440
441 double rapidity(const Hep3Vector & ref) const;
442 // Rapidity in specified direction
443
444 double coLinearRapidity() const;
445 // Rapidity, in the relativity textbook sense: atanh (|P|/E)
446
448 // Boost needed to get to center-of-mass frame:
449 // w.findBoostToCM() == - w.boostVector()
450 // w.boost(w.findBoostToCM()) == w.rest4Vector()
451
452 Hep3Vector findBoostToCM( const HepLorentzVector & w ) const;
453 // Boost needed to get to combined center-of-mass frame:
454 // w1.findBoostToCM(w2) == w2.findBoostToCM(w1)
455 // w.findBoostToCM(w) == w.findBoostToCM()
456
457 inline double et2(const Hep3Vector &) const;
458 // Transverse energy w.r.t. given axis squared.
459
460 inline double et(const Hep3Vector &) const;
461 // Transverse energy w.r.t. given axis.
462
463// 4b - Methods combining two 4-vectors
464
465 inline double diff2( const HepLorentzVector & w ) const;
466 // (this - w).dot(this-w); sign depends on metric choice
467
468 inline double delta2Euclidean ( const HepLorentzVector & w ) const;
469 // Euclidean norm of differnce: (delta_T)^2 + (delta_V)^2
470
471// 5 - Properties releative to z axis and to arbitrary directions
472
473 double plus( const Hep3Vector & ref ) const;
474 // t + projection in reference direction
475
476 double minus( const Hep3Vector & ref ) const;
477 // t - projection in reference direction
478
479// 7 - Rotations and boosts
480
481 HepLorentzVector & rotate ( const Hep3Vector & axis, double delta );
482 // Same as rotate (delta, axis)
483
484 HepLorentzVector & rotate ( const HepAxisAngle & ax );
486 HepLorentzVector & rotate ( double phi,
487 double theta,
488 double psi );
489 // Rotate using these HepEuler angles - see Goldstein page 107 for conventions
490
491 HepLorentzVector & boost ( const Hep3Vector & axis, double beta );
492 // Normalizes the Hep3Vector to define a direction, and uses beta to
493 // define the magnitude of the boost.
494
496 ( const HepLorentzVector & vec, double delta );
498 ( const HepLorentzVector & vec, double delta );
500 ( const HepLorentzVector & vec, double delta );
502 ( const HepLorentzVector & vec, const Hep3Vector & axis, double delta );
504 ( const HepLorentzVector & vec, const HepAxisAngle & ax );
506 ( const HepLorentzVector & vec, const HepEulerAngles & e );
508 ( const HepLorentzVector & vec, double phi,
509 double theta,
510 double psi );
511
513 ( const HepLorentzVector & vec, double beta );
515 ( const HepLorentzVector & vec, double beta );
517 ( const HepLorentzVector & vec, double beta );
519 ( const HepLorentzVector & vec, const Hep3Vector & betaVector );
521 ( const HepLorentzVector & vec, const Hep3Vector & axis, double beta );
522
523private:
524
525 Hep3Vector pp;
526 double ee;
527
528 static double tolerance;
529 static double metric;
530
531}; // HepLorentzVector
532
533// 8 - Axial Unit 4-vectors
534
535static const HepLorentzVector X_HAT4 = HepLorentzVector( 1, 0, 0, 0 );
536static const HepLorentzVector Y_HAT4 = HepLorentzVector( 0, 1, 0, 0 );
537static const HepLorentzVector Z_HAT4 = HepLorentzVector( 0, 0, 1, 0 );
538static const HepLorentzVector T_HAT4 = HepLorentzVector( 0, 0, 0, 1 );
539
540// Global methods
541
542std::ostream & operator << (std::ostream &, const HepLorentzVector &);
543// Output to a stream.
544
545std::istream & operator >> (std::istream &, HepLorentzVector &);
546// Input from a stream.
547
550
553// Scaling LorentzVector with a real number
554
556// Dividing LorentzVector by a real number
557
558// Tcomponent definition:
559
560// Signature protection for 4-vector constructors taking 4 components
562private:
563 double t_;
564public:
565 explicit Tcomponent(double t) : t_(t) {}
566 operator double() const { return t_; }
567}; // Tcomponent
568
569} // namespace CLHEP
570
571#include "CLHEP/Vector/LorentzVector.icc"
572
573#ifdef ENABLE_BACKWARDS_COMPATIBILITY
574// backwards compatibility will be enabled ONLY in CLHEP 1.9
575using namespace CLHEP;
576#endif
577
578#endif /* HEP_LORENTZVECTOR_H */
friend HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)
double et(const Hep3Vector &) const
HepLorentzVector(const HepLorentzVector &)
HepLorentzVector(const Hep3Vector &v)
double invariantMass() const
HepLorentzVector operator-() const
HepLorentzVector & operator=(const Hep3Vector &v)
bool isParallel(const HepLorentzVector &w, double epsilon=tolerance) const
double pseudoRapidity() const
bool isNearCM(const HepLorentzVector &w, double epsilon=tolerance) const
double theta() const
friend HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
void setV(double x, double y, double z)
Hep3Vector boostVector() const
double perp(const Hep3Vector &) const
HepLorentzVector & boost(const Hep3Vector &)
double cosTheta() const
HepLorentzVector & boost(double, double, double)
bool operator!=(const HepLorentzVector &) const
double et2(const Hep3Vector &) const
HepLorentzVector(const Hep3Vector &p, double e)
HepLorentzVector & boostZ(double beta)
Hep3Vector getV() const
HepLorentzVector(Tcomponent t)
HepLorentzVector rest4Vector() const
bool operator==(const HepLorentzVector &) const
void setVectM(const Hep3Vector &spatial, double mass)
HepLorentzVector(double x, double y, double z)
HepLorentzVector(HepLorentzVector &&)=default
int compare(const HepLorentzVector &w) const
friend HepLorentzVector rotationYOf(const HepLorentzVector &vec, double delta)
friend HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &axis, double delta)
friend HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &axis, double beta)
HepLorentzVector(double x, double y, double z, Tcomponent t)
void set(double x, double y, double z, Tcomponent t)
void set(const Hep3Vector &v, double t)
double diff2(const HepLorentzVector &w) const
double dot(const HepLorentzVector &) const
Hep3Vector vect() const
void set(Tcomponent t, double x, double y, double z)
static ZMpvMetric_t getMetric()
double howParallel(const HepLorentzVector &w) const
bool operator<=(const HepLorentzVector &w) const
HepLorentzVector & operator*=(double)
static double setTolerance(double tol)
double restMass2() const
double deltaR(const HepLorentzVector &v) const
HepLorentzVector & boostX(double beta)
double euclideanNorm() const
double minus() const
void set(double x, double y, double z, double t)
double eta(const Hep3Vector &ref) const
HepLorentzVector & rotate(double, const Hep3Vector &)
HepLorentzVector & rotateZ(double)
friend HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
Hep3Vector v() const
void setRThetaPhi(double r, double theta, double phi)
void setVectMag(const Hep3Vector &spatial, double magnitude)
HepLorentzVector & operator-=(const HepLorentzVector &)
HepLorentzVector operator+(const HepLorentzVector &) const
HepLorentzVector & boostY(double beta)
bool isLightlike(double epsilon=tolerance) const
void setV(const Hep3Vector &)
double howNear(const HepLorentzVector &w) const
double howLightlike() const
double operator[](int) const
double perp2() const
void set(double t, const Hep3Vector &v)
double howNearCM(const HepLorentzVector &w) const
HepLorentzVector & rotateX(double)
double invariantMass2() const
HepLorentzVector(Tcomponent t, double x, double y, double z)
HepLorentzVector & operator+=(const HepLorentzVector &)
bool operator<(const HepLorentzVector &w) const
HepLorentzVector & operator/=(double)
double euclideanNorm2() const
bool isNear(const HepLorentzVector &w, double epsilon=tolerance) const
friend HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
void setVect(const Hep3Vector &)
bool operator>(const HepLorentzVector &w) const
double coLinearRapidity() const
Hep3Vector findBoostToCM() const
void setREtaPhi(double r, double eta, double phi)
HepLorentzVector & rotateUz(const Hep3Vector &)
double perp2(const Hep3Vector &) const
HepLorentzVector(double x, double y, double z, double t)
void set(const Hep3Vector &v)
friend HepLorentzVector rotationXOf(const HepLorentzVector &vec, double delta)
HepLorentzVector(double e, const Hep3Vector &p)
static double getTolerance()
double invariantMass2(const HepLorentzVector &w) const
double delta2Euclidean(const HepLorentzVector &w) const
HepLorentzVector & rotateY(double)
bool isSpacelike() const
void set(Tcomponent t)
friend HepLorentzVector rotationZOf(const HepLorentzVector &vec, double delta)
double operator()(int) const
bool operator>=(const HepLorentzVector &w) const
void setRhoPhiZ(double rho, double phi, double z)
double angle(const Hep3Vector &) const
double restMass() const
static ZMpvMetric_t setMetric(ZMpvMetric_t a1)
HepLorentzVector & operator=(const HepLorentzVector &)
HepLorentzVector & transform(const HepRotation &)
double operator*(const HepLorentzVector &) const
Tcomponent(double t)
#define double(obj)
Definition: excDblThrow.cc:32
HepLorentzVector HepLorentzVectorD
@ TimePositive
Definition: LorentzVector.h:61
@ TimeNegative
Definition: LorentzVector.h:61
HepLorentzVector boostOf(const HepLorentzVector &vec, const Hep3Vector &betaVector)
HepLorentzVector rotationZOf(const HepLorentzVector &vec, double phi)
std::istream & operator>>(std::istream &is, HepRandom &dist)
Definition: Random.cc:225
HepLorentzVector rotationOf(const HepLorentzVector &vec, const Hep3Vector &aaxis, double ddelta)
std::ostream & operator<<(std::ostream &s, const HepDiagMatrix &q)
Definition: DiagMatrix.cc:560
HepLorentzVector rotationYOf(const HepLorentzVector &vec, double phi)
HepLorentzVector HepLorentzVectorF
HepLorentzVector rotationXOf(const HepLorentzVector &vec, double phi)
HepDiagMatrix operator/(const HepDiagMatrix &hm1, double t)
Definition: DiagMatrix.cc:335
HepMatrix operator*(const HepMatrix &hm1, const HepDiagMatrix &hm2)
Definition: DiagMatrix.cc:372
HepLorentzVector boostXOf(const HepLorentzVector &vec, double beta)
HepLorentzVector boostZOf(const HepLorentzVector &vec, double beta)
HepLorentzVector boostYOf(const HepLorentzVector &vec, double beta)