Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
PositionVector3D.h
Go to the documentation of this file.
1// @(#)root/mathcore:$Id$
2// Authors: W. Brown, M. Fischler, L. Moneta 2005
3
4/**********************************************************************
5 * *
6 * Copyright (c) 2005 , LCG ROOT MathLib Team *
7 * *
8 * *
9 **********************************************************************/
10
11// Header file for class PositionVector3D
12//
13// Created by: Lorenzo Moneta at Mon May 30 15:25:04 2005
14//
15// Last update: $Id$
16//
17#ifndef ROOT_MathX_GenVectorX_PositionVector3D
18#define ROOT_MathX_GenVectorX_PositionVector3D 1
19
21
23
25
27
29
31
33
34using namespace ROOT::ROOT_MATH_ARCH;
35
36#include <cassert>
37
38namespace ROOT {
39
40namespace ROOT_MATH_ARCH {
41
42//__________________________________________________________________________________________
43/**
44 Class describing a generic position vector (point) in 3 dimensions.
45 This class is templated on the type of Coordinate system.
46 One example is the XYZPoint which is a vector based on
47 double precision x,y,z data members by using the
48 ROOT::Math::Cartesian3D<double> Coordinate system.
49 The class is having also an extra template parameter, the coordinate system tag,
50 to be able to identify (tag) vector described in different reference coordinate system,
51 like global or local coordinate systems.
52
53 @ingroup GenVectorX
54
55 @see GenVectorX
56*/
57
58template <class CoordSystem, class Tag = DefaultCoordinateSystemTag>
60
61public:
62 typedef typename CoordSystem::Scalar Scalar;
63 typedef CoordSystem CoordinateType;
65
66 // ------ ctors ------
67
68 /**
69 Default constructor. Construct an empty object with zero values
70 */
71
73
74 /**
75 Construct from three values of type <em>Scalar</em>.
76 In the case of a XYZPoint the values are x,y,z
77 In the case of a polar vector they are r,theta,phi
78 */
80
81 /**
82 Construct from a position vector expressed in different
83 coordinates, or using a different Scalar type
84 */
85 template <class T>
89
90 /**
91 Construct from an arbitrary displacement vector
92 */
93 template <class T>
97
98 /**
99 Construct from a foreign 3D vector type, for example, Hep3Vector
100 Precondition: v must implement methods x(), y() and z()
101 */
102 template <class ForeignVector>
104 {
105 }
106
107#ifdef LATER
108 /**
109 construct from a generic linear algebra vector of at least size 3
110 implementing operator []. This could be also a C array
111 \par v LAVector
112 \par index0 index where coordinates starts (typically zero)
113 It works for all Coordinates types,
114 ( x= v[index0] for Cartesian and r=v[index0] for Polar )
115 */
116 template <class LAVector>
117 PositionVector3D(const LAVector &v, size_t index0)
118 {
119 fCoordinates = CoordSystem(v[index0], v[index0 + 1], v[index0 + 2]);
120 }
121#endif
122
123 // compiler-generated copy ctor and dtor are fine.
124
125 // ------ assignment ------
126
127 /**
128 Assignment operator from a position vector of arbitrary type
129 */
130 template <class OtherCoords>
132 {
133 fCoordinates = v.Coordinates();
134 return *this;
135 }
136
137 /**
138 Assignment operator from a displacement vector of arbitrary type
139 */
140 template <class OtherCoords>
142 {
143 fCoordinates = v.Coordinates();
144 return *this;
145 }
146
147 /**
148 Assignment from a foreign 3D vector type, for example, Hep3Vector
149 Precondition: v must implement methods x(), y() and z()
150 */
151 template <class ForeignVector>
153 {
154 SetXYZ(v.x(), v.y(), v.z());
155 return *this;
156 }
157
158#ifdef LATER
159 /**
160 assign from a generic linear algebra vector of at least size 3
161 implementing operator [].
162 \par v LAVector
163 \par index0 index where coordinates starts (typically zero)
164 It works for all Coordinates types,
165 ( x= v[index0] for Cartesian and r=v[index0] for Polar )
166 */
167 template <class LAVector>
168 PositionVector3D &assignFrom(const LAVector &v, size_t index0 = 0)
169 {
170 fCoordinates = CoordSystem(v[index0], v[index0 + 1], v[index0 + 2]);
171 return *this;
172 }
173#endif
174
175 /**
176 Retrieve a copy of the coordinates object
177 */
178 const CoordSystem &Coordinates() const { return fCoordinates; }
179
180 /**
181 Set internal data based on a C-style array of 3 Scalar numbers
182 */
184 {
185 fCoordinates.SetCoordinates(src);
186 return *this;
187 }
188
189 /**
190 Set internal data based on 3 Scalar numbers
191 */
193 {
194 fCoordinates.SetCoordinates(a, b, c);
195 return *this;
196 }
197
198 /**
199 Set internal data based on 3 Scalars at *begin to *end
200 */
201 template <class IT>
203 {
204 IT a = begin;
205 IT b = ++begin;
206 IT c = ++begin;
207 (void)end;
208 assert(++begin == end);
209 SetCoordinates(*a, *b, *c);
210 return *this;
211 }
212
213 /**
214 get internal data into 3 Scalar numbers
215 */
216 void GetCoordinates(Scalar &a, Scalar &b, Scalar &c) const { fCoordinates.GetCoordinates(a, b, c); }
217
218 /**
219 get internal data into a C-style array of 3 Scalar numbers
220 */
221 void GetCoordinates(Scalar dest[]) const { fCoordinates.GetCoordinates(dest); }
222
223 /**
224 get internal data into 3 Scalars at *begin to *end (3 past begin)
225 */
226 template <class IT>
227 void GetCoordinates(IT begin, IT end) const
228 {
229 IT a = begin;
230 IT b = ++begin;
231 IT c = ++begin;
232 (void)end;
233 assert(++begin == end);
234 GetCoordinates(*a, *b, *c);
235 }
236
237 /**
238 get internal data into 3 Scalars at *begin
239 */
240 template <class IT>
241 void GetCoordinates(IT begin) const
242 {
243 Scalar a = Scalar(0);
244 Scalar b = Scalar(0);
245 Scalar c = Scalar(0);
246 GetCoordinates(a, b, c);
247 *begin++ = a;
248 *begin++ = b;
249 *begin = c;
250 }
251
252 /**
253 set the values of the vector from the cartesian components (x,y,z)
254 (if the vector is held in polar or cylindrical eta coordinates,
255 then (x, y, z) are converted to that form)
256 */
258 {
259 fCoordinates.SetXYZ(a, b, c);
260 return *this;
261 }
262
263 // ------------------- Equality -----------------
264
265 /**
266 Exact equality
267 */
268 bool operator==(const PositionVector3D &rhs) const { return fCoordinates == rhs.fCoordinates; }
269 bool operator!=(const PositionVector3D &rhs) const { return !(operator==(rhs)); }
270
271 // ------ Individual element access, in various coordinate systems ------
272
273 /**
274 Cartesian X, converting if necessary from internal coordinate system.
275 */
276 Scalar X() const { return fCoordinates.X(); }
277
278 /**
279 Cartesian Y, converting if necessary from internal coordinate system.
280 */
281 Scalar Y() const { return fCoordinates.Y(); }
282
283 /**
284 Cartesian Z, converting if necessary from internal coordinate system.
285 */
286 Scalar Z() const { return fCoordinates.Z(); }
287
288 /**
289 Polar R, converting if necessary from internal coordinate system.
290 */
291 Scalar R() const { return fCoordinates.R(); }
292
293 /**
294 Polar theta, converting if necessary from internal coordinate system.
295 */
296 Scalar Theta() const { return fCoordinates.Theta(); }
297
298 /**
299 Polar phi, converting if necessary from internal coordinate system.
300 */
301 Scalar Phi() const { return fCoordinates.Phi(); }
302
303 /**
304 Polar eta, converting if necessary from internal coordinate system.
305 */
306 Scalar Eta() const { return fCoordinates.Eta(); }
307
308 /**
309 Cylindrical transverse component rho
310 */
311 Scalar Rho() const { return fCoordinates.Rho(); }
312
313 // ----- Other fundamental properties -----
314
315 /**
316 Magnitute squared ( r^2 in spherical coordinate)
317 */
318 Scalar Mag2() const { return fCoordinates.Mag2(); }
319
320 /**
321 Transverse component squared (rho^2 in cylindrical coordinates.
322 */
323 Scalar Perp2() const { return fCoordinates.Perp2(); }
324
325 // It is physically meaningless to speak of the unit vector corresponding
326 // to a point.
327
328 // ------ Setting individual elements present in coordinate system ------
329
330 /**
331 Change X - Cartesian3D coordinates only
332 */
334 {
335 fCoordinates.SetX(xx);
336 return *this;
337 }
338
339 /**
340 Change Y - Cartesian3D coordinates only
341 */
343 {
344 fCoordinates.SetY(yy);
345 return *this;
346 }
347
348 /**
349 Change Z - Cartesian3D coordinates only
350 */
352 {
353 fCoordinates.SetZ(zz);
354 return *this;
355 }
356
357 /**
358 Change R - Polar3D coordinates only
359 */
361 {
362 fCoordinates.SetR(rr);
363 return *this;
364 }
365
366 /**
367 Change Theta - Polar3D coordinates only
368 */
370 {
371 fCoordinates.SetTheta(ang);
372 return *this;
373 }
374
375 /**
376 Change Phi - Polar3D or CylindricalEta3D coordinates
377 */
379 {
380 fCoordinates.SetPhi(ang);
381 return *this;
382 }
383
384 /**
385 Change Rho - CylindricalEta3D coordinates only
386 */
388 {
389 fCoordinates.SetRho(rr);
390 return *this;
391 }
392
393 /**
394 Change Eta - CylindricalEta3D coordinates only
395 */
397 {
398 fCoordinates.SetEta(etaval);
399 return *this;
400 }
401
402 // ------ Operations combining two vectors ------
403 // need to specialize to exclude those with a different tags
404
405 /**
406 Return the scalar (Dot) product of this with a displacement vector in
407 any coordinate system, but with the same tag
408 */
409 template <class OtherCoords>
411 {
412 return X() * v.x() + Y() * v.y() + Z() * v.z();
413 }
414
415 /**
416 Return vector (Cross) product of this point with a displacement, as a
417 point vector in this coordinate system of the first.
418 */
419 template <class OtherCoords>
421 {
423 result.SetXYZ(Y() * v.z() - v.y() * Z(), Z() * v.x() - v.z() * X(), X() * v.y() - v.x() * Y());
424 return result;
425 }
426
427 // The Dot and Cross products of a pair of point vectors are physically
428 // meaningless concepts and thus are defined as private methods
429
430 // It is physically meaningless to speak of the Unit vector corresponding
431 // to a point.
432
433 /**
434 Self Addition with a displacement vector.
435 */
436 template <class OtherCoords>
438 {
439 SetXYZ(X() + v.X(), Y() + v.Y(), Z() + v.Z());
440 return *this;
441 }
442
443 /**
444 Self Difference with a displacement vector.
445 */
446 template <class OtherCoords>
448 {
449 SetXYZ(X() - v.X(), Y() - v.Y(), Z() - v.Z());
450 return *this;
451 }
452
453 /**
454 multiply this vector by a scalar quantity
455 */
457 {
458 fCoordinates.Scale(a);
459 return *this;
460 }
461
462 /**
463 divide this vector by a scalar quantity
464 */
466 {
467 fCoordinates.Scale(1 / a);
468 return *this;
469 }
470
471 // The following methods (v*a and v/a) could instead be free functions.
472 // They were moved into the class to solve a problem on AIX.
473 /**
474 Multiply a vector by a real number
475 */
477 {
478 PositionVector3D tmp(*this);
479 tmp *= a;
480 return tmp;
481 }
482
483 /**
484 Division of a vector with a real number
485 */
487 {
488 PositionVector3D tmp(*this);
489 tmp /= a;
490 return tmp;
491 }
492
493 // Limited backward name compatibility with CLHEP
494
495 Scalar x() const { return fCoordinates.X(); }
496 Scalar y() const { return fCoordinates.Y(); }
497 Scalar z() const { return fCoordinates.Z(); }
498 Scalar r() const { return fCoordinates.R(); }
499 Scalar theta() const { return fCoordinates.Theta(); }
500 Scalar phi() const { return fCoordinates.Phi(); }
501 Scalar eta() const { return fCoordinates.Eta(); }
502 Scalar rho() const { return fCoordinates.Rho(); }
503 Scalar mag2() const { return fCoordinates.Mag2(); }
504 Scalar perp2() const { return fCoordinates.Perp2(); }
505
506private:
507 CoordSystem fCoordinates;
508
509 // Prohibited methods
510
511 // this should not compile (if from a vector or points with different tag
512
513 template <class OtherCoords, class OtherTag>
515
516 template <class OtherCoords, class OtherTag>
518
519 template <class OtherCoords, class OtherTag>
521
522 template <class OtherCoords, class OtherTag>
524
525 template <class OtherCoords, class OtherTag>
527
528 template <class OtherCoords, class OtherTag>
530
531 // /**
532 // Dot product of two position vectors is inappropriate
533 // */
534 // template <class T2, class U>
535 // PositionVector3D Dot( const PositionVector3D<T2,U> & v) const;
536
537 // /**
538 // Cross product of two position vectors is inappropriate
539 // */
540 // template <class T2, class U>
541 // PositionVector3D Cross( const PositionVector3D<T2,U> & v) const;
542};
543
544// ---------- PositionVector3D class template ends here ----------------
545// ---------------------------------------------------------------------
546
547/**
548 Multiplication of a position vector by real number a*v
549*/
550template <class CoordSystem, class U>
553{
554 return v *= a;
555 // Note - passing v by value and using operator *= may save one
556 // copy relative to passing v by const ref and creating a temporary.
557}
558
559/**
560 Difference between two PositionVector3D vectors.
561 The result is a DisplacementVector3D.
562 The (coordinate system) type of the returned vector is defined to
563 be identical to that of the first position vector.
564*/
565
566template <class CoordSystem1, class CoordSystem2, class U>
573
574/**
575 Addition of a PositionVector3D and a DisplacementVector3D.
576 The return type is a PositionVector3D,
577 of the same (coordinate system) type as the input PositionVector3D.
578*/
579template <class CoordSystem1, class CoordSystem2, class U>
585
586/**
587 Addition of a DisplacementVector3D and a PositionVector3D.
588 The return type is a PositionVector3D,
589 of the same (coordinate system) type as the input PositionVector3D.
590*/
591template <class CoordSystem1, class CoordSystem2, class U>
597
598/**
599 Subtraction of a DisplacementVector3D from a PositionVector3D.
600 The return type is a PositionVector3D,
601 of the same (coordinate system) type as the input PositionVector3D.
602*/
603template <class CoordSystem1, class CoordSystem2, class U>
609
610// Scaling of a position vector with a real number is not physically meaningful
611
612#if !defined(ROOT_MATH_SYCL) && !defined(ROOT_MATH_CUDA)
613// ------------- I/O to/from streams -------------
614
615template <class char_t, class traits_t, class T, class U,
616 typename std::enable_if<std::is_arithmetic<typename PositionVector3D<T, U>::Scalar>::value>::type * = nullptr>
617std::basic_ostream<char_t, traits_t> &
618operator<<(std::basic_ostream<char_t, traits_t> &os, PositionVector3D<T, U> const &v)
619{
620 if (os) {
621
622 typename T::Scalar a = 0;
623 typename T::Scalar b = 0;
624 typename T::Scalar c = 0;
625 v.GetCoordinates(a, b, c);
626
630 BR::Output(os, a);
631 BR::Output(os, b);
632 BR::Output(os, c);
633 } else {
636 }
637 }
638 return os;
639} // op<< <>()
640
641template <
642 class char_t, class traits_t, class T, class U,
643 typename std::enable_if<!std::is_arithmetic<typename PositionVector3D<T, U>::Scalar>::value>::type * = nullptr>
644std::basic_ostream<char_t, traits_t> &
645operator<<(std::basic_ostream<char_t, traits_t> &os, PositionVector3D<T, U> const &v)
646{
647 if (os) {
648 os << "{ ";
649 for (std::size_t i = 0; i < PositionVector3D<T, U>::Scalar::Size; ++i) {
650 os << "(" << v.x()[i] << "," << v.y()[i] << "," << v.z()[i] << ") ";
651 }
652 os << "}";
653 }
654 return os;
655} // op<< <>()
656
657template <class char_t, class traits_t, class T, class U>
658inline std::basic_istream<char_t, traits_t> &
659operator>>(std::basic_istream<char_t, traits_t> &is, PositionVector3D<T, U> &v)
660{
661 if (!is)
662 return is;
663
664 typename T::Scalar a, b, c;
665
669 BR::Input(is, a);
670 BR::Input(is, b);
671 BR::Input(is, c);
672 } else {
674 is >> a;
676 is >> b;
678 is >> c;
680 }
681
682 if (is)
683 v.SetCoordinates(a, b, c);
684 return is;
685
686} // op>> <>()
687#endif
688
689} // namespace ROOT_MATH_ARCH
690
691} // namespace ROOT
692
693#endif /* ROOT_MathX_GenVectorX_PositionVector3D */
#define b(i)
Definition RSha256.hxx:100
#define c(i)
Definition RSha256.hxx:101
#define a(i)
Definition RSha256.hxx:99
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Class describing a 3D cartesian coordinate system (x, y, z coordinates)
Definition Cartesian3D.h:52
Class describing a generic position vector (point) in 3 dimensions.
bool operator==(const PositionVector3D &rhs) const
Exact equality.
PositionVector3D & operator-=(const DisplacementVector3D< OtherCoords, OtherTag > &)
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Scalar Mag2() const
Magnitute squared ( r^2 in spherical coordinate)
PositionVector3D & operator=(const DisplacementVector3D< OtherCoords, OtherTag > &)
PositionVector3D(const PositionVector3D< OtherCoords, OtherTag > &)
PositionVector3D & operator=(const PositionVector3D< OtherCoords, OtherTag > &)
bool operator!=(const PositionVector3D &rhs) const
PositionVector3D(const DisplacementVector3D< OtherCoords, OtherTag > &)
Scalar Eta() const
Polar eta, converting if necessary from internal coordinate system.
PositionVector3D< CoordSystem, Tag > & SetR(Scalar rr)
Change R - Polar3D coordinates only.
PositionVector3D & operator*=(Scalar a)
multiply this vector by a scalar quantity
PositionVector3D< CoordSystem, Tag > & SetPhi(Scalar ang)
Change Phi - Polar3D or CylindricalEta3D coordinates.
PositionVector3D< CoordSystem, Tag > & SetCoordinates(IT begin, IT end)
Set internal data based on 3 Scalars at *begin to *end.
void GetCoordinates(IT begin) const
get internal data into 3 Scalars at *begin
constexpr PositionVector3D() noexcept=default
Default constructor.
Scalar Phi() const
Polar phi, converting if necessary from internal coordinate system.
PositionVector3D(const PositionVector3D< T, Tag > &v)
Construct from a position vector expressed in different coordinates, or using a different Scalar type...
PositionVector3D< CoordSystem, Tag > & SetCoordinates(Scalar a, Scalar b, Scalar c)
Set internal data based on 3 Scalar numbers.
void GetCoordinates(IT begin, IT end) const
get internal data into 3 Scalars at *begin to *end (3 past begin)
Scalar Dot(const DisplacementVector3D< OtherCoords, Tag > &v) const
Return the scalar (Dot) product of this with a displacement vector in any coordinate system,...
PositionVector3D & operator/=(Scalar a)
divide this vector by a scalar quantity
PositionVector3D< CoordSystem, Tag > & SetX(Scalar xx)
Change X - Cartesian3D coordinates only.
PositionVector3D< CoordSystem, Tag > & SetZ(Scalar zz)
Change Z - Cartesian3D coordinates only.
PositionVector3D< CoordSystem, Tag > & SetRho(Scalar rr)
Change Rho - CylindricalEta3D coordinates only.
void GetCoordinates(Scalar dest[]) const
get internal data into a C-style array of 3 Scalar numbers
Scalar Z() const
Cartesian Z, converting if necessary from internal coordinate system.
PositionVector3D< CoordSystem, Tag > & SetCoordinates(const Scalar src[])
Set internal data based on a C-style array of 3 Scalar numbers.
PositionVector3D< CoordSystem, Tag > & SetXYZ(Scalar a, Scalar b, Scalar c)
set the values of the vector from the cartesian components (x,y,z) (if the vector is held in polar or...
PositionVector3D operator*(Scalar a) const
Multiply a vector by a real number.
PositionVector3D & operator+=(const DisplacementVector3D< OtherCoords, Tag > &v)
Self Addition with a displacement vector.
PositionVector3D Cross(const DisplacementVector3D< OtherCoords, Tag > &v) const
Return vector (Cross) product of this point with a displacement, as a point vector in this coordinate...
PositionVector3D & operator=(const PositionVector3D< OtherCoords, Tag > &v)
Assignment operator from a position vector of arbitrary type.
PositionVector3D< CoordSystem, Tag > & SetTheta(Scalar ang)
Change Theta - Polar3D coordinates only.
PositionVector3D & operator=(const DisplacementVector3D< OtherCoords, Tag > &v)
Assignment operator from a displacement vector of arbitrary type.
const CoordSystem & Coordinates() const
Retrieve a copy of the coordinates object.
PositionVector3D(const DisplacementVector3D< T, Tag > &p)
Construct from an arbitrary displacement vector.
Scalar Rho() const
Cylindrical transverse component rho.
Scalar Perp2() const
Transverse component squared (rho^2 in cylindrical coordinates.
PositionVector3D< CoordSystem, Tag > & SetEta(Scalar etaval)
Change Eta - CylindricalEta3D coordinates only.
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
Scalar Theta() const
Polar theta, converting if necessary from internal coordinate system.
PositionVector3D operator/(Scalar a) const
Division of a vector with a real number.
PositionVector3D(const ForeignVector &v)
Construct from a foreign 3D vector type, for example, Hep3Vector Precondition: v must implement metho...
PositionVector3D & operator+=(const DisplacementVector3D< OtherCoords, OtherTag > &)
PositionVector3D & operator-=(const DisplacementVector3D< OtherCoords, Tag > &v)
Self Difference with a displacement vector.
void GetCoordinates(Scalar &a, Scalar &b, Scalar &c) const
get internal data into 3 Scalar numbers
Scalar R() const
Polar R, converting if necessary from internal coordinate system.
PositionVector3D & operator=(const ForeignVector &v)
Assignment from a foreign 3D vector type, for example, Hep3Vector Precondition: v must implement meth...
PositionVector3D< CoordSystem, Tag > & SetY(Scalar yy)
Change Y - Cartesian3D coordinates only.
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
std::basic_istream< char_t, traits_t > & require_delim(std::basic_istream< char_t, traits_t > &is, manip_t m)
char_t get_manip(std::basic_ios< char_t, traits_t > &ios, manip_t m)
Definition GenVectorIO.h:60
void set_manip(std::basic_ios< char_t, traits_t > &ios, manip_t m, char_t ch)
Definition GenVectorIO.h:77
std::ostream & operator<<(std::ostream &os, const AxisAngle &a)
Stream Output and Input.
Definition AxisAngle.cxx:98
std::basic_istream< char_t, traits_t > & operator>>(std::basic_istream< char_t, traits_t > &is, DisplacementVector2D< T, U > &v)
DisplacementVector2D< CoordSystem1, U > operator-(DisplacementVector2D< CoordSystem1, U > v1, DisplacementVector2D< CoordSystem2, U > const &v2)
Difference between two DisplacementVector2D vectors.
AxisAngle operator*(RotationX const &r1, AxisAngle const &r2)
Multiplication of an axial rotation by an AxisAngle.
DisplacementVector2D< CoordSystem1, U > operator+(DisplacementVector2D< CoordSystem1, U > v1, const DisplacementVector2D< CoordSystem2, U > &v2)
Addition of DisplacementVector2D vectors.