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

# 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 lethuill 1.9 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 mlethuil 1.1
133     };
134    
135     #endif