src
eventRecordInterfaces
src/eventRecordInterfaces/PhotosHepMCParticle.h
1
#ifndef _PhotosHepMCParticle_h_included_
2
#define _PhotosHepMCParticle_h_included_
3
4
/**
5
* @class PhotosHepMCParticle
6
*
7
* @brief Interface to HepMC::GenParticle objects
8
*
9
* This class implements the virtual methods of
10
* PhotosParticle. In this way it provides an
11
* interface between the generic PhotosParticle class
12
* and a HepMC::GenParticle object.
13
*
14
* @author Nadia Davidson
15
* @date 17 June 2008
16
*
17
* This code is licensed under GNU General Public Licence.
18
* For more informations, see: http://www.gnu.org/licenses/
19
*/
20
21
#include <vector>
22
23
#include "HepMC/GenParticle.h"
24
#include "PhotosParticle.h"
25
26
using namespace
std
;
27
28
namespace
Photospp
29
{
30
31
class
PhotosHepMCParticle
:
public
PhotosParticle
{
32
33
public
:
34
/** General constructor */
35
PhotosHepMCParticle
();
36
37
/** Constructor which keeps a pointer to the HepMC::GenParticle*/
38
PhotosHepMCParticle
(HepMC::GenParticle * particle);
39
40
/** Constructor which creates a new HepMC::GenParticle and
41
sets the properties pdg_id, statu and mass. */
42
PhotosHepMCParticle
(
int
pdg_id,
int
status,
double
mass);
43
44
/** Destructor */
45
~
PhotosHepMCParticle
();
46
47
/** return the HepMC::GenParticle */
48
HepMC::GenParticle * getHepMC();
49
50
/** Set the mothers of this particle via a vector of PhotosParticle*/
51
void
setMothers(std::vector<PhotosParticle*> mothers);
52
53
/** Set the daughters of this particle via a vector of PhotosParticle*/
54
void
setDaughters(std::vector<PhotosParticle*> daughters);
55
56
/** Add a new daughter to the end vertex of this particle */
57
void
addDaughter(
PhotosParticle
* daughter);
58
59
/** Returns the mothers of this particle via a vector of PhotosParticle */
60
std::vector<PhotosParticle*> getMothers();
61
62
/** Returns the daughters of this particle via a vector of PhotosParticle
63
IMPORTANT: this method will remeber list from the first call. Particles
64
(e.g. photons) added later will be ignored */
65
std::vector<PhotosParticle*> getDaughters();
66
67
/** Returns all particles in the decay tree of this particle
68
via a vector of PhotosParticle */
69
std::vector<PhotosParticle*> getAllDecayProducts();
70
71
/** Set the PDG ID code of this particle */
72
void
setPdgID(
int
pdg_id);
73
74
/** Set the status of this particle */
75
void
setStatus(
int
statu);
76
77
/** Set the mass of this particle */
78
void
setMass(
double
mass);
79
80
/** Get the PDG ID code of this particle */
81
int
getPdgID();
82
83
/** Get the status of this particle */
84
int
getStatus();
85
86
/** Get the barcode of this particle */
87
int
getBarcode();
88
89
/** check that the 4 momentum in conserved at the vertices producing
90
and ending this particle */
91
bool
checkMomentumConservation();
92
93
/** Create a new particle of type PhotosHepMCParticle, with the given
94
properties. The new particle bares no relations to this
95
particle, but it provides a way of creating a instance of
96
this derived class. eg. createNewParticle() is used inside
97
filhep_() so that a PhotosHepMCParticle can be created without
98
the method having explicit knowledge of the PhotosHepMCParticle
99
class */
100
PhotosHepMCParticle
* createNewParticle(
int
pdg_id,
int
status,
double
mass,
101
double
px,
double
py,
102
double
pz,
double
e);
103
104
/** Create history entry for HepMC event record.
105
Creates copy of this particle with status = 3 */
106
void
createHistoryEntry();
107
108
/** Create a self-decay vertex for this particle
109
with 'out' being the outgoing particle in new vertex */
110
void
createSelfDecayVertex(
PhotosParticle
*out);
111
112
/** Print some information about this particle to standard output */
113
void
print();
114
115
/** Returns the px component of the four vector*/
116
double
getPx();
117
118
/** Returns the py component of the four vector */
119
double
getPy();
120
121
/** Returns the pz component of the four vector */
122
double
getPz();
123
124
/** Returns the energy component of the four vector */
125
double
getE();
126
127
/** Returns the mass taken from event record */
128
double
getMass();
129
130
/** Set the px component of the four vector */
131
void
setPx(
double
px );
132
133
/** Set the px component of the four vector */
134
void
setPy(
double
py );
135
136
/** Set the pz component of the four vector */
137
void
setPz(
double
pz );
138
139
/** Set the energy component of the four vector */
140
void
setE(
double
e );
141
142
private
:
143
/** Internal function used to clear particles from the vector */
144
void
clear(std::vector<PhotosParticle*> v);
145
146
/** A pointer to the HepMC::GenParticle particle */
147
HepMC::GenParticle * m_particle;
148
149
/** A vector of this particles mothers */
150
std::vector<PhotosParticle*> m_mothers;
151
152
/** A vector of this particles daughters */
153
std::vector<PhotosParticle*> m_daughters;
154
155
/** A vector of all decay products of this particle */
156
std::vector<PhotosParticle*> m_decay_products;
157
158
/** list to keep track of new particles which have been
159
created from this one, so we can call their destructor later */
160
std::vector<PhotosParticle*> m_created_particles;
161
162
};
163
164
}
// namespace Photospp
165
#endif
166
std
STL namespace.
Photospp
Definition:
include/Photos/forW-MEc.h:6
PhotosParticle
Abstract base class for particle in the event. This class also handles boosting.
PhotosHepMCParticle
Interface to HepMC::GenParticle objects.
Generated by
1.8.14