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

# User Rev Content
1 mlethuil 1.1 #ifndef TRootMCPhoton_h
2     #define TRootMCPhoton_h
3    
4     #include <string>
5     #include <iostream>
6 lethuill 1.3 #include <vector>
7 mlethuil 1.1
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 mlethuil 1.2 void setTracks(std::vector<TLorentzVector> tracks) { tracks_=tracks; }
142 mlethuil 1.1 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 mlethuil 1.2 std::vector<TLorentzVector> tracks_; // Tracks from the conversion
157 mlethuil 1.1 Int_t recoPhotonIndex_; // Index of first conversion track (in tracks TCloneArray)
158    
159     ClassDef (TRootMCPhoton,1);
160     };
161    
162     #endif