Particle_ROOT.cc
Go to the documentation of this file.
1 #include <io/Particle_ROOT.h>
2 #include <io/StreamerUtilities.h>
3 #include <utl/Particle.h>
4 #include <det/Detector.h>
5 
6 using namespace io;
7 
8 
9 ClassImp(io::Particle_ROOT)
10 
11 
13 {
14  delete fParent;
15  delete fProductionPoint;
16 }
17 
18 
21 {
22  if (this != &p) {
23  fType = p.fType;
24  fSource = p.fSource;
26  fPosition = p.fPosition;
27  fTime = p.fTime;
28  fWeight = p.fWeight;
32  }
33  return *this;
34 }
35 
36 
38  fType(p.GetType()),
39  fSource(p.GetSource()),
40  fDirection(p.GetDirection()),
41  fPosition(p.GetPosition()),
42  fTime(p.GetTime().GetInterval()),
43  fWeight(p.GetWeight()),
44  fKineticEnergy(p.GetKineticEnergy()),
45  fParent(nullptr),
46  fProductionPoint(nullptr)
47 {
48  if (p.HasParent())
50  if (p.HasProductionPoint())
52 }
53 
54 
55 void
57  const
58 {
59  utl::Vector dir;
60  fDirection >> dir;
61 
62  utl::Point point;
63  fPosition >> point;
64 
65  p = utl::Particle(static_cast<utl::Particle::Type>(fType),
66  static_cast<utl::Particle::Source>(fSource),
67  point,
68  dir,
70  fWeight,
72 
73  if (fParent) {
74  utl::Particle parent(p);
75  *fParent >> parent;
76  p.SetParent(parent);
77  }
78  if (fProductionPoint) {
79  utl::Point prodPoint;
80  *fProductionPoint >> prodPoint;
81  p.SetProductionPoint(prodPoint);
82  }
83 }
84 
85 
88  const
89 {
90  const utl::CoordinateSystemPtr cs = det::Detector::GetInstance().GetSiteCoordinateSystem();
92  utl::Point(0, 0, 0, cs), utl::Vector(0, 0, 0, cs),
93  utl::TimeInterval(0), 0);
94  *this >> p;
95  return p;
96 }
const utl::Point & GetProductionPoint() const
Definition: Particle.h:153
utl::Particle Convert() const
Point object.
Definition: Point.h:32
bool HasProductionPoint() const
Definition: Particle.h:152
void ConvertCopy(T *&destination, const U &source)
Particle_ROOT & operator=(const Particle_ROOT &p)
Describes a particle for Simulation.
Definition: Particle.h:26
Particle_ROOT * fParent
Definition: Particle_ROOT.h:45
Particle & GetParent()
Definition: Particle.h:148
void SetProductionPoint(const utl::Point &point)
Definition: Particle.h:154
Vector_ROOT fDirection
Definition: Particle_ROOT.h:40
Point_ROOT * fProductionPoint
Definition: Particle_ROOT.h:46
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
void DeepCopy(T *&destination, U *const source)
bool HasParent() const
Definition: Particle.h:147
A TimeInterval is used to represent time elapsed between two events.
Definition: TimeInterval.h:43
streamer for utl::Particle
Definition: Particle_ROOT.h:26
Vector object.
Definition: Vector.h:30
void SetParent(Particle &parent)
Definition: Particle.h:150
Point_ROOT fPosition
Definition: Particle_ROOT.h:41
void operator>>(utl::Particle &p) const

, generated on Tue Sep 26 2023.