ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootParticle.h
Revision: 1.9
Committed: Wed Jun 10 11:17:06 2009 UTC (15 years, 10 months ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: all_3_3_2_01, all_3_2_5_02, all_3_2_5_01, all_2_2_9_03, all_2_2_9_02, all_2_2_9_01, HEAD
Branch point for: CMSSW_2_2_X_br
Changes since 1.8: +114 -116 lines
Log Message:
Better protection against missing collection / Cleaning data format selection / Last iteration for migration to PAT of Photons

File Contents

# Content
1 #ifndef TRootParticle_h
2 #define TRootParticle_h
3
4 #include <string>
5 #include <iostream>
6 #include <iomanip>
7
8 #include "Rtypes.h"
9 #include "TLorentzVector.h"
10 #include "TVector3.h"
11 #include "TRef.h"
12
13 using namespace std;
14
15 class TRootParticle : public TLorentzVector
16 {
17
18 public:
19
20 TRootParticle() :
21 TLorentzVector()
22 ,vertex_()
23 ,type_(0)
24 ,charge_(0.)
25 ,genParticleIndex_(-1)
26 ,genParticle_(0)
27 {;}
28
29 TRootParticle(const TRootParticle& particle) :
30 TLorentzVector(particle)
31 ,vertex_(particle.vertex_)
32 ,type_(particle.type_)
33 ,charge_(particle.charge_)
34 ,genParticleIndex_(particle.genParticleIndex_)
35 ,genParticle_(particle.genParticle_)
36 {;}
37
38 TRootParticle(Double_t px, Double_t py, Double_t pz, Double_t e) :
39 TLorentzVector(px,py,pz,e)
40 ,vertex_()
41 ,type_(0)
42 ,charge_(0.)
43 ,genParticleIndex_(-1)
44 ,genParticle_(0)
45 {;}
46
47 TRootParticle(Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vtx_x, Double_t vtx_y, Double_t vtx_z) :
48 TLorentzVector(px,py,pz,e)
49 ,vertex_(vtx_x,vtx_y,vtx_z)
50 ,type_(0)
51 ,charge_(0.)
52 ,genParticleIndex_(-1)
53 ,genParticle_(0)
54 {;}
55
56 TRootParticle(Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vtx_x, Double_t vtx_y, Double_t vtx_z,Int_t type, Float_t charge) :
57 TLorentzVector(px,py,pz,e)
58 ,vertex_(vtx_x,vtx_y,vtx_z)
59 ,type_(type)
60 ,charge_(charge)
61 ,genParticleIndex_(-1)
62 ,genParticle_(0)
63 {;}
64
65
66 TRootParticle(const TLorentzVector &momentum) :
67 TLorentzVector(momentum)
68 ,vertex_()
69 ,type_(0)
70 ,charge_(0.)
71 ,genParticleIndex_(-1)
72 ,genParticle_(0)
73 {;}
74
75 TRootParticle(const TLorentzVector &momentum, const TVector3 &vertex) :
76 TLorentzVector(momentum)
77 ,vertex_(vertex)
78 ,type_(0)
79 ,charge_(0.)
80 ,genParticleIndex_(-1)
81 ,genParticle_(0)
82 {;}
83
84 TRootParticle(const TLorentzVector &momentum, const TVector3 &vertex, Int_t type, Float_t charge) :
85 TLorentzVector(momentum)
86 ,vertex_(vertex)
87 ,type_(type)
88 ,charge_(charge)
89 ,genParticleIndex_(-1)
90 ,genParticle_(0)
91 {;}
92
93 ~TRootParticle() {;}
94
95
96 Double_t vx() const { return vertex_.x(); }
97 Double_t vy() const { return vertex_.y(); }
98 Double_t vz() const { return vertex_.z(); }
99 Int_t type() const { return type_; }
100 Float_t charge() const { return charge_; }
101 Int_t genParticleIndex() const { return genParticleIndex_; }
102 TRootParticle* genParticle() const { return (TRootParticle*) genParticle_.GetObject() ;}
103 virtual TString typeName() const { return "TRootParticle"; }
104
105
106 // FIXME setVx, setVy and setVz must modify the TLorentzVector ?
107 void setVx(Double_t vx) { vertex_.SetX(vx); }
108 void setVy(Double_t vy) { vertex_.SetY(vy); }
109 void setVz(Double_t vz) { vertex_.SetZ(vz); }
110 void setType(Int_t type) { type_ = type; }
111 void setCharge(Int_t charge) { charge_ = charge; }
112 void setGenParticleIndex(Int_t genParticleIndex) { genParticleIndex_ = genParticleIndex; }
113 void setGenParticle(TObject* genParticle) { genParticle_ = genParticle; }
114
115 friend std::ostream& operator<< (std::ostream& stream, const TRootParticle& part)
116 {
117 stream << "Type=" << part.type_ << " Charge=" << part.charge_ << " (Et,eta,phi)=("<< setw(10) << part.Et() <<","<< setw(10) << part.Eta() <<","<< setw(10) << part.Phi() << ")"
118 << " vertex(x,y,z)=("<< part.vx() <<","<< part.vy() <<","<< part.vz() << ")";
119 return stream;
120 };
121
122
123 protected:
124
125 TVector3 vertex_;
126 Int_t type_;
127 Float_t charge_;
128 Int_t genParticleIndex_;
129 TRef genParticle_;
130
131 ClassDef (TRootParticle,2);
132
133 };
134
135 #endif