ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/grimes/TrackingTruthCode/SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h
Revision: 1.1
Committed: Wed Mar 20 17:13:47 2013 UTC (12 years, 1 month ago) by grimes
Content type: text/plain
Branch: MAIN
CVS Tags: OldTrackingParticles_v0, base_6_0_0, HEAD
Branch point for: NewTrackingParticles
Log Message:
First commit of the base 6.0.0 files

File Contents

# Content
1 #ifndef SimDataFormats_TrackingParticle_h
2 #define SimDataFormats_TrackingParticle_h
3
4 /** Concrete TrackingParticle.
5 * All track parameters are passed in the constructor and stored internally.
6 */
7
8 #include <map>
9
10 #include "SimDataFormats/EncodedEventId/interface/EncodedEventId.h"
11 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
12 #include "SimDataFormats/TrackingAnalysis/interface/ParticleBase.h"
13 #include "SimDataFormats/TrackingAnalysis/interface/TrackingVertex.h"
14 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
15 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
16 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
17 #include "DataFormats/DetId/interface/DetId.h"
18
19 namespace HepMC
20 {
21 class GenParticle;
22 }
23 class TrackingVertex;
24
25 class TrackingParticle : public ParticleBase
26 {
27
28 friend std::ostream& operator<< (std::ostream& s, TrackingParticle const & tp);
29
30 public:
31
32 /// reference to HepMC::GenParticle
33 typedef edm::RefVector<edm::HepMCProduct, HepMC::GenParticle > GenParticleRefVector;
34 typedef edm::Ref<edm::HepMCProduct, HepMC::GenParticle > GenParticleRef;
35 typedef GenParticleRefVector::iterator genp_iterator;
36 typedef std::vector<SimTrack>::const_iterator g4t_iterator;
37
38 typedef std::vector<TrackingVertex> TrackingVertexCollection;
39 typedef edm::Ref<TrackingVertexCollection> TrackingVertexRef;
40 typedef edm::RefVector<TrackingVertexCollection> TrackingVertexRefVector;
41 typedef TrackingVertexRefVector::iterator tv_iterator;
42
43 typedef std::multimap<DetId::Detector, PSimHit> DetectorToPSimHit;
44
45 /// default constructor
46 TrackingParticle() {}
47
48 /// constructor from pointer to generator particle
49 TrackingParticle( char q, const LorentzVector & p4, const Point & vtx,
50 double t, const int pdgId, const int status, const EncodedEventId eventId);
51
52 // destructor
53 ~TrackingParticle();
54
55 /// PDG id, signal source, crossing number
56 int pdgId() const
57 {
58 return pdgId_;
59 }
60 EncodedEventId eventId() const
61 {
62 return eventId_;
63 }
64
65 ///iterators
66 genp_iterator genParticle_begin() const;
67 genp_iterator genParticle_end() const;
68 g4t_iterator g4Track_begin() const;
69 g4t_iterator g4Track_end() const;
70
71 /** Returns the begin of the vector of ALL the PSimHits of the TrackingParticle */
72 const std::vector<PSimHit>::const_iterator pSimHit_begin() const;
73 /** Returns the end of the vector of ALL the PSimHits of the TrackingParticle */
74 const std::vector<PSimHit>::const_iterator pSimHit_end() const;
75
76 // Setters for G4 and HepMC
77 void addG4Track(const SimTrack&);
78 void addGenParticle(const GenParticleRef&);
79
80 void addPSimHit(const PSimHit&);
81 void setParentVertex(const TrackingVertexRef&);
82 void addDecayVertex(const TrackingVertexRef&);
83 void clearParentVertex();
84 void clearDecayVertices();
85 void setMatchedHit(const int&);
86 void setVertex(const Point & vtx, double t);
87
88 // Getters for Embd and Sim Tracks
89 const GenParticleRefVector& genParticle() const
90 {
91 return genParticles_;
92 }
93 const std::vector<SimTrack>& g4Tracks() const
94 {
95 return g4Tracks_ ;
96 }
97 const TrackingVertexRef& parentVertex() const
98 {
99 return parentVertex_;
100 }
101 /** The vector of ALL the PSimHits of the TrackingParticle */
102 const std::vector<PSimHit>& trackPSimHit() const
103 {
104 return trackPSimHit_;
105 }
106
107 // PSimHits discriminated by subdetector
108 std::vector<PSimHit> trackPSimHit(DetId::Detector) const;
109
110 // Accessors for vector of decay vertices
111 const TrackingVertexRefVector& decayVertices() const
112 {
113 return decayVertices_;
114 }
115 tv_iterator decayVertices_begin() const
116 {
117 return decayVertices_.begin();
118 }
119 tv_iterator decayVertices_end() const
120 {
121 return decayVertices_.end();
122 }
123 int matchedHit() const
124 {
125 return matchedHit_;
126 }
127
128 private:
129
130 /// production time
131 float t_;
132 /// PDG identifier, signal source, crossing number
133 int pdgId_;
134 EncodedEventId eventId_;
135
136 /// Total Number of Hits belonging to the TrackingParticle
137 int matchedHit_;
138
139 /// references to G4 and HepMC tracks
140 std::vector<SimTrack> g4Tracks_;
141 GenParticleRefVector genParticles_;
142
143 // TrackPSimHitRefVector trackPSimHit_;
144 std::vector<PSimHit> trackPSimHit_;
145
146 // Source and decay vertices
147 TrackingVertexRef parentVertex_;
148 TrackingVertexRefVector decayVertices_;
149 };
150
151 #endif // SimDataFormats_TrackingParticle_H