ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootMCPhoton.h
Revision: 1.3
Committed: Thu Oct 30 16:25:34 2008 UTC (16 years, 6 months ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: pat_2_1_12_01, Common-2008_11_24, Common-2008_11_19
Changes since 1.2: +1 -0 lines
Log Message:
Updated for 2.1.X

File Contents

# Content
1 #ifndef TRootMCPhoton_h
2 #define TRootMCPhoton_h
3
4 #include <string>
5 #include <iostream>
6 #include <vector>
7
8 #include "../interface/TRootParticle.h"
9
10
11 using namespace std;
12
13 class TRootMCPhoton : public TRootParticle
14 {
15
16 public:
17
18 TRootMCPhoton() :
19 TRootParticle()
20 ,convVertex_()
21 ,tracks_(0)
22 , recoPhotonIndex_(-1)
23 {;}
24
25 TRootMCPhoton(const TRootMCPhoton& photon) :
26 TRootParticle(photon)
27 ,convVertex_(photon.convVertex_)
28 ,tracks_(photon.tracks_)
29 , recoPhotonIndex_(photon.recoPhotonIndex_)
30 {;}
31
32 TRootMCPhoton(Double_t px, Double_t py, Double_t pz, Double_t e) :
33 TRootParticle(px,py,pz,e)
34 ,convVertex_()
35 ,tracks_(0)
36 , recoPhotonIndex_(-1)
37 {;}
38
39 TRootMCPhoton(Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vtx_x, Double_t vtx_y, Double_t vtx_z) :
40 TRootParticle(px,py,pz,e,vtx_x,vtx_y,vtx_z)
41 ,convVertex_()
42 ,tracks_(0)
43 , recoPhotonIndex_(-1)
44 {;}
45
46 TRootMCPhoton(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) :
47 TRootParticle(px,py,pz,e,vtx_x,vtx_y,vtx_z,type,charge)
48 ,convVertex_()
49 ,tracks_(0)
50 , recoPhotonIndex_(-1)
51 {;}
52
53 TRootMCPhoton(const TLorentzVector &momentum) :
54 TRootParticle(momentum)
55 ,convVertex_()
56 ,tracks_(0)
57 , recoPhotonIndex_(-1)
58 {;}
59
60 TRootMCPhoton(const TLorentzVector &momentum, const TVector3 &vertex, Int_t type, Float_t charge) :
61 TRootParticle(momentum, vertex, type, charge)
62 ,convVertex_()
63 ,tracks_(0)
64 , recoPhotonIndex_(-1)
65 {;}
66
67 TRootMCPhoton(const TLorentzVector &momentum, const TVector3 &vertex, const TVector3 &convVertex, Int_t type, Float_t charge) :
68 TRootParticle(momentum, vertex, type, charge)
69 ,convVertex_()
70 ,tracks_(0)
71 , recoPhotonIndex_(-1)
72 {;}
73
74 TRootMCPhoton(const TLorentzVector &momentum, const TVector3 &vertex, const TVector3 &convVertex, const std::vector<TLorentzVector> &tracks, Int_t type, Float_t charge) :
75 TRootParticle(momentum, vertex, type, charge)
76 ,convVertex_(convVertex)
77 ,tracks_(tracks)
78 , recoPhotonIndex_(-1)
79 {;}
80
81
82 ~TRootMCPhoton() {;}
83
84
85 unsigned int nTracks() const { return tracks_.size(); }
86
87 Float_t convEoverP() const
88 {
89 Float_t ptot = -1.;
90 if (tracks_.size()==2)
91 {
92 TLorentzVector pair = tracks_.at(0) + tracks_.at(1);
93 ptot = ( pair.P()>0 ? this->E() / pair.P() : -1. );
94 }
95 return ptot;
96 }
97
98 Float_t convMass() const
99 {
100 Float_t mass = -1.;
101 if (tracks_.size()==2)
102 {
103 TLorentzVector pair = tracks_.at(0) + tracks_.at(1);
104 mass = pair.M();
105 }
106 return mass;
107 }
108
109 Float_t convDeltaCotanTheta() const
110 {
111 Float_t cotan = -999.;
112 if (tracks_.size()==2)
113 {
114 if ( tan(tracks_.at(0).Theta()) != 0 && tan(tracks_.at(1).Theta()) != 0 ) cotan = 1./ tan(tracks_.at(0).Theta()) - 1./ tan(tracks_.at(1).Theta());
115 }
116 return cotan;
117 }
118
119 Float_t convPtOverEt() const
120 {
121 Float_t pe = -1.;
122 if (tracks_.size()==2)
123 {
124 TLorentzVector pair = tracks_.at(0) + tracks_.at(1);
125 pe = pair.Pt() / this->Et();
126 }
127 return pe;
128 }
129
130
131 TVector3 convVertex() const { return convVertex_;}
132 Double_t conv_vx() const { return convVertex_.x(); }
133 Double_t conv_vy() const { return convVertex_.y(); }
134 Double_t conv_vz() const { return convVertex_.z(); }
135
136 std::vector<TLorentzVector> tracks() const { return tracks_;}
137 Int_t recoPhotonIndex() const { return recoPhotonIndex_;}
138
139 void setConvVertex(TVector3 convVertex) { convVertex_=convVertex; }
140 void setConvVertex(Double_t x, Double_t y, Double_t z) { convVertex_.SetXYZ(x, y ,z); }
141 void setTracks(std::vector<TLorentzVector> tracks) { tracks_=tracks; }
142 void setRecoPhotonIndex(Int_t recoPhotonIndex) { recoPhotonIndex_=recoPhotonIndex; }
143
144
145 friend std::ostream& operator<< (std::ostream& stream, const TRootMCPhoton& photon) {
146 stream << "Converted TRootMCPhoton (Et,eta,phi)=("<< photon.Et() <<","<< photon.Eta() <<","<< photon.Phi() << ")"
147 << " photon vertex=("<< photon.vx() <<","<< photon.vy() <<","<< photon.vz() << ")"
148 << " conversion vertex=("<< photon.conv_vx() <<","<< photon.conv_vy() <<","<< photon.conv_vz() << ")";
149 return stream;
150 };
151
152
153 private:
154
155 TVector3 convVertex_; // Position of the conversion vertex
156 std::vector<TLorentzVector> tracks_; // Tracks from the conversion
157 Int_t recoPhotonIndex_; // Index of first conversion track (in tracks TCloneArray)
158
159 ClassDef (TRootMCPhoton,1);
160 };
161
162 #endif