1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#ifndef DataFormats_ParticleFlowReco_PFSimParticle_h
#define DataFormats_ParticleFlowReco_PFSimParticle_h
#include "DataFormats/ParticleFlowReco/interface/PFTrack.h"
#include <iostream>
namespace reco {
/**\class PFSimParticle
\brief true particle for particle flow
Additional information w/r to PFTrack:
- pdg code
- information about mother and daughters
\author Renaud Bruneliere
\date July 2006
*/
class PFSimParticle : public PFTrack {
public:
PFSimParticle();
PFSimParticle(double charge,
int pdgCode,
unsigned id,
int motherId,
const std::vector<int>& daughterIds,
unsigned rectrackId,
const std::vector<unsigned>& recHitContrib,
const std::vector<double>& recHitContribFrac);
PFSimParticle(const PFSimParticle& other);
/// \return pdg code
int pdgCode() const { return pdgCode_; }
/// \return id
unsigned id() const { return id_; }
/// \return mother id
int motherId() const { return motherId_; }
/// \return vector of daughter ids
const std::vector<int>& daughterIds() const { return daughterIds_; }
//accessing MCTruth Matching Info
unsigned rectrackId() const { return rectrackId_; }
std::vector<unsigned> recHitContrib() const { return recHitContrib_; }
std::vector<double> recHitContribFrac() const { return recHitContribFrac_; }
private:
/// pdg code
int pdgCode_;
/// position in particle vector
unsigned id_;
/// id of mother particle. -1 if no mother
int motherId_;
/// id of daughter particles (can be > 2 in hadron showers)
std::vector<int> daughterIds_;
unsigned rectrackId_;
std::vector<unsigned> recHitContrib_;
std::vector<double> recHitContribFrac_;
};
std::ostream& operator<<(std::ostream& out, const PFSimParticle& track);
} // namespace reco
#endif
|