ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootMCPhoton.h
(Generate patch)

Comparing UserCode/Morgan/interface/TRootMCPhoton.h (file contents):
Revision 1.4 by lethuill, Wed Dec 17 16:23:49 2008 UTC vs.
Revision 1.6 by lethuill, Wed Jun 10 11:17:06 2009 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines