ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootParticle.h
Revision: 1.8
Committed: Tue Apr 7 17:09:06 2009 UTC (16 years ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: JeSuisBeaucoupPlusGrosQunReco_2_2_7_01, RecoPhoton_2_2_7_02, pat_2_2_7_01, RecoPhoton_2_2_7_01, pat_2_2_5_03, pat_2_2_5_02
Changes since 1.7: +3 -2 lines
Log Message:
Cleaning dependencies / Add genMETs and genJets and references to them in reco objects

File Contents

# User Rev Content
1 mlethuil 1.1 #ifndef TRootParticle_h
2     #define TRootParticle_h
3    
4     #include <string>
5     #include <iostream>
6 lethuill 1.8 #include <iomanip>
7 mlethuil 1.1
8     #include "Rtypes.h"
9     #include "TLorentzVector.h"
10     #include "TVector3.h"
11 lethuill 1.3 #include "TRef.h"
12 mlethuil 1.1
13     using namespace std;
14    
15     class TRootParticle : public TLorentzVector
16     {
17 mlethuil 1.2
18 mlethuil 1.1 public:
19    
20 lethuill 1.6 TRootParticle() :
21     TLorentzVector()
22     ,vertex_()
23     ,type_(0)
24     ,charge_(0.)
25     ,genParticleIndex_(-1)
26 lethuill 1.7 ,genParticle_(0)
27 lethuill 1.6 {;}
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 lethuill 1.7 ,genParticle_(0)
45 lethuill 1.6 {;}
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 lethuill 1.7 ,genParticle_(0)
54 lethuill 1.6 {;}
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 lethuill 1.7 ,genParticle_(0)
63 lethuill 1.6 {;}
64    
65    
66     TRootParticle(const TLorentzVector &momentum) :
67     TLorentzVector(momentum)
68     ,vertex_()
69     ,type_(0)
70     ,charge_(0.)
71     ,genParticleIndex_(-1)
72 lethuill 1.7 ,genParticle_(0)
73 lethuill 1.6 {;}
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 lethuill 1.7 ,genParticle_(0)
82 lethuill 1.6 {;}
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 lethuill 1.7 ,genParticle_(0)
91 lethuill 1.6 {;}
92    
93 mlethuil 1.1 ~TRootParticle() {;}
94    
95 lethuill 1.6
96 mlethuil 1.1 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 lethuill 1.6 Int_t genParticleIndex() const { return genParticleIndex_; }
102 lethuill 1.7 TRootParticle* genParticle() const { return (TRootParticle*) genParticle_.GetObject() ;}
103 lethuill 1.6 virtual TString typeName() const { return "TRootParticle"; }
104    
105 mlethuil 1.1
106 lethuill 1.4 // FIXME setVx, setVy and setVz must modify the TLorentzVector ?
107 mlethuil 1.1 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 lethuill 1.6 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 lethuill 1.8 stream << "Type=" << part.type_ << " Charge=" << part.charge_ << " (Et,eta,phi)=("<< setw(10) << part.Et() <<","<< setw(10) << part.Eta() <<","<< setw(10) << part.Phi() << ")"
118 lethuill 1.6 << " vertex(x,y,z)=("<< part.vx() <<","<< part.vy() <<","<< part.vz() << ")";
119     return stream;
120     };
121    
122    
123    
124 mlethuil 1.1 protected:
125    
126     TVector3 vertex_;
127     Int_t type_;
128     Float_t charge_;
129 lethuill 1.6 Int_t genParticleIndex_;
130     TRef genParticle_;
131 mlethuil 1.1
132 lethuill 1.8 ClassDef (TRootParticle,2);
133 mlethuil 1.1 };
134    
135     #endif
136 lethuill 1.5
137