Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TVector2.cxx
Go to the documentation of this file.
1// @(#)root/physics:$Id$
2// Author: Pasha Murat 12/02/99
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class TVector2
13 \ingroup Physics
14
15\attention \parblock
16TVector2 is a legacy class. It is slower and worse for serialization than the recommended superior alternative ROOT::Math::XYVector.
17
18More details can be found in the documentation of the @ref GenVector package.
19\endparblock
20
21TVector2 is a general two vector class, which can be used for
22the description of different vectors in 2D.
23*/
24
25#include "TROOT.h"
26#include "TVector2.h"
27#include "TMath.h"
28#include "TBuffer.h"
29
30
32Double_t const kTWOPI = 2.*kPI;
33
35
36////////////////////////////////////////////////////////////////////////////////
37/// Constructor
38
40{
41 fX = 0.;
42 fY = 0.;
43}
44
45////////////////////////////////////////////////////////////////////////////////
46/// Constructor
47
49{
50 fX = v[0];
51 fY = v[1];
52}
53
54////////////////////////////////////////////////////////////////////////////////
55/// Constructor
56
58{
59 fX = x0;
60 fY = y0;
61}
62
63
64////////////////////////////////////////////////////////////////////////////////
65/// Return modulo of this vector
66
68{
69 return TMath::Sqrt(fX*fX+fY*fY);
70}
71
72////////////////////////////////////////////////////////////////////////////////
73/// Return module normalized to 1
74
76{
77 return (Mod2()) ? *this/Mod() : TVector2();
78}
79
80////////////////////////////////////////////////////////////////////////////////
81/// Return vector phi
82
84{
85 return TMath::Pi()+TMath::ATan2(-fY,-fX);
86}
87
88////////////////////////////////////////////////////////////////////////////////
89/// Returns phi angle in the interval [0,2*PI)
90
92 if(TMath::IsNaN(x)){
93 gROOT->Error("TVector2::Phi_0_2pi","function called with NaN");
94 return x;
95 }
96 while (x >= kTWOPI) x -= kTWOPI;
97 while (x < 0.) x += kTWOPI;
98 return x;
99}
100
101////////////////////////////////////////////////////////////////////////////////
102/// Returns phi angle in the interval [-PI,PI)
103
105 if(TMath::IsNaN(x)){
106 gROOT->Error("TVector2::Phi_mpi_pi","function called with NaN");
107 return x;
108 }
109 while (x >= kPI) x -= kTWOPI;
110 while (x < -kPI) x += kTWOPI;
111 return x;
112}
113
114////////////////////////////////////////////////////////////////////////////////
115/// Rotation by phi
116
118{
119 return TVector2( fX*TMath::Cos(phi)-fY*TMath::Sin(phi), fX*TMath::Sin(phi)+fY*TMath::Cos(phi) );
120}
121
122////////////////////////////////////////////////////////////////////////////////
123/// Set vector using mag and phi
124
126{
127 Double_t amag = TMath::Abs(mag);
128 fX = amag * TMath::Cos(phi);
129 fY = amag * TMath::Sin(phi);
130}
131////////////////////////////////////////////////////////////////////////////////
132/// Stream an object of class TVector2.
133
135{
136 if (R__b.IsReading()) {
138 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
139 if (R__v > 2) {
140 R__b.ReadClassBuffer(TVector2::Class(), this, R__v, R__s, R__c);
141 return;
142 }
143 //====process old versions before automatic schema evolution
144 if (R__v < 2) TObject::Streamer(R__b);
145 R__b >> fX;
146 R__b >> fY;
147 R__b.CheckByteCount(R__s, R__c, TVector2::IsA());
148 //====end of old versions
149
150 } else {
151 R__b.WriteClassBuffer(TVector2::Class(),this);
152 }
153}
154
156{
157 //print vector parameters
158 Printf("%s %s (x,y)=(%f,%f) (rho,phi)=(%f,%f)",GetName(),GetTitle(),X(),Y(),
159 Mod(),Phi()*TMath::RadToDeg());
160}
short Version_t
Class version identifier (short)
Definition RtypesCore.h:79
double Double_t
Double 8 bytes.
Definition RtypesCore.h:73
const char Option_t
Option string (const char)
Definition RtypesCore.h:80
#define ClassImp(name)
Definition Rtypes.h:376
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
constexpr Double_t kPI
Definition TEllipse.cxx:24
#define gROOT
Definition TROOT.h:411
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
Definition TString.cxx:2510
Double_t const kPI
Definition TVector2.cxx:31
Double_t const kTWOPI
Definition TVector2.cxx:32
Buffer base class used for serializing objects.
Definition TBuffer.h:43
virtual const char * GetName() const
Returns name of object.
Definition TObject.cxx:458
virtual void Streamer(TBuffer &)
Stream an object of class TObject.
Definition TObject.cxx:973
virtual const char * GetTitle() const
Returns title of object.
Definition TObject.cxx:502
void Print(Option_t *option="") const override
This method must be overridden when a class wants to print itself.
Definition TVector2.cxx:155
Double_t Phi() const
Return vector phi.
Definition TVector2.cxx:83
void SetMagPhi(Double_t mag, Double_t phi)
Set vector using mag and phi.
Definition TVector2.cxx:125
Double_t Y() const
Definition TVector2.h:74
static Double_t Phi_0_2pi(Double_t x)
Returns phi angle in the interval [0,2*PI)
Definition TVector2.cxx:91
Double_t Mod2() const
Definition TVector2.h:68
TVector2()
Constructor.
Definition TVector2.cxx:39
TClass * IsA() const override
Definition TVector2.h:108
Double_t fX
Definition TVector2.h:24
void Streamer(TBuffer &) override
Stream an object of class TVector2.
Definition TVector2.cxx:134
Double_t X() const
Definition TVector2.h:73
Double_t fY
Definition TVector2.h:25
static TClass * Class()
static Double_t Phi_mpi_pi(Double_t x)
Returns phi angle in the interval [-PI,PI)
Definition TVector2.cxx:104
TVector2 Rotate(Double_t phi) const
Rotation by phi.
Definition TVector2.cxx:117
Double_t Mod() const
Return modulo of this vector.
Definition TVector2.cxx:67
TVector2 Unit() const
Return module normalized to 1.
Definition TVector2.cxx:75
Double_t x[n]
Definition legend1.C:17
Bool_t IsNaN(Double_t x)
Definition TMath.h:898
Double_t ATan2(Double_t y, Double_t x)
Returns the principal value of the arc tangent of y/x, expressed in radians.
Definition TMath.h:652
Double_t Sqrt(Double_t x)
Returns the square root of x.
Definition TMath.h:668
Double_t Cos(Double_t)
Returns the cosine of an angle of x radians.
Definition TMath.h:600
constexpr Double_t Pi()
Definition TMath.h:38
Double_t Sin(Double_t)
Returns the sine of an angle of x radians.
Definition TMath.h:594
constexpr Double_t RadToDeg()
Conversion from radian to degree: .
Definition TMath.h:73
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Definition TMathBase.h:124