ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootBeamSpot.h
Revision: 1.1
Committed: Tue Apr 21 10:42:22 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
Log Message:
Use beam spot in impact parameter calculation

File Contents

# User Rev Content
1 lethuill 1.1 #ifndef TRootBeamSpot_h
2     #define TRootBeamSpot_h
3    
4     #include <string>
5     #include <iostream>
6     #include <iomanip>
7    
8     #include "Rtypes.h"
9     #include "TVector3.h"
10    
11     using namespace std;
12    
13     class TRootBeamSpot : public TVector3
14     {
15    
16     public:
17    
18     TRootBeamSpot() :
19     TVector3(-999999.,-999999.,-999999.)
20     ,error_(-1.,-1.,-1.)
21     ,sigmaZ_(-1.)
22     ,sigmaZError_(-1.)
23     ,beamWidth_(-1.)
24     ,beamWidthError_(-1.)
25     {;}
26    
27     TRootBeamSpot(const TRootBeamSpot& spot) :
28     TVector3(spot)
29     ,error_(spot.error_)
30     ,sigmaZ_(spot.sigmaZ_)
31     ,sigmaZError_(spot.sigmaZError_)
32     ,beamWidth_(spot.beamWidth_)
33     ,beamWidthError_(spot.beamWidthError_)
34     {;}
35    
36     TRootBeamSpot(Double_t vx, Double_t vy, Double_t vz) :
37     TVector3(vx,vy,vz)
38     ,error_(-1.,-1.,-1.)
39     ,sigmaZ_(-1.)
40     ,sigmaZError_(-1.)
41     ,beamWidth_(-1.)
42     ,beamWidthError_(-1.)
43     {;}
44    
45     TRootBeamSpot(Double_t vx, Double_t vy, Double_t vz, Double_t evx, Double_t evy, Double_t evz) :
46     TVector3(vx,vy,vz)
47     ,error_(evx,evy,evz)
48     ,sigmaZ_(-1.)
49     ,sigmaZError_(-1.)
50     ,beamWidth_(-1.)
51     ,beamWidthError_(-1.)
52     {;}
53    
54     TRootBeamSpot(const TVector3 &vertex) :
55     TVector3(vertex)
56     ,error_(-1.,-1.,-1.)
57     ,sigmaZ_(-1.)
58     ,sigmaZError_(-1.)
59     ,beamWidth_(-1.)
60     ,beamWidthError_(-1.)
61     {;}
62    
63     TRootBeamSpot( const TVector3 &vertex, const TVector3 &vertex_error) :
64     TVector3(vertex)
65     ,error_(vertex_error)
66     ,sigmaZ_(-1.)
67     ,sigmaZError_(-1.)
68     ,beamWidth_(-1.)
69     ,beamWidthError_(-1.)
70     {;}
71    
72     TRootBeamSpot(Double_t vx, Double_t vy, Double_t vz, Double_t evx, Double_t evy, Double_t evz, Float_t sigmaZ, Float_t sigmaZError, Float_t beamWidth, Float_t beamWidthError) :
73     TVector3(vx,vy,vz)
74     ,error_(evx,evy,evz)
75     ,sigmaZ_(sigmaZ)
76     ,sigmaZError_(sigmaZError)
77     ,beamWidth_(beamWidth)
78     ,beamWidthError_(beamWidthError)
79     {;}
80    
81     ~TRootBeamSpot() {;}
82    
83    
84     TVector3 error() const { return error_;}
85     Double_t xError() const { return error_.x(); }
86     Double_t yError() const { return error_.y(); }
87     Double_t zError() const { return error_.z(); }
88     Float_t sigmaZ() const { return sigmaZ_;}
89     Float_t sigmaZError() const { return sigmaZError_;}
90     Float_t beamWidth() const { return beamWidth_;}
91     Float_t beamWidthError() const { return beamWidthError_;}
92    
93     TString typeName() const { return "TRootBeamSpot"; }
94    
95     void setError(TVector3 error) { error_ = error; }
96     void setXerror(Double_t xerr) { error_.SetX(xerr); }
97     void setYerror(Double_t yerr) { error_.SetY(yerr); }
98     void setZerror(Double_t zerr) { error_.SetZ(zerr); }
99     void setSigmaZ(Float_t sigmaZ) { sigmaZ_ = sigmaZ; }
100     void setSigmaZError(Float_t sigmaZError) { sigmaZError_ = sigmaZError; }
101     void setBeamWidth(Float_t beamWidth) { beamWidth_ = beamWidth; }
102     void setBeamWidthError(Float_t beamWidthError) { beamWidthError_ = beamWidthError; }
103    
104     void fill(Double_t vx, Double_t vy, Double_t vz, Double_t evx, Double_t evy, Double_t evz, Float_t sigmaZ, Float_t sigmaZError, Float_t beamWidth, Float_t beamWidthError)
105     {
106     this->SetXYZ(vx,vy,vz);
107     error_.SetXYZ(evx,evy,evz);
108     sigmaZ_ = sigmaZ;
109     sigmaZError_ = sigmaZError;
110     beamWidth_ = beamWidth;
111     beamWidthError_ = beamWidthError;
112     }
113    
114     void clear()
115     {
116     this->SetXYZ(-999999.,-999999.,-999999.);
117     error_.SetXYZ(-1.,-1.,-1.);
118     sigmaZ_ = -1.;
119     sigmaZError_ = -1.;
120     beamWidth_ = -1.;
121     beamWidthError_ = -1.;
122     }
123    
124    
125     friend std::ostream& operator<< (std::ostream& stream, const TRootBeamSpot& spot) {
126     stream << "TRootBeamSpot - (x,y,z)=(" << spot.x() << ","<< spot.y() << ","<< spot.z() << ")"
127     << " error=(" << spot.xError() << ","<< spot.yError() << ","<< spot.zError() << ")"
128     << " sigmaZ=" << spot.sigmaZ() << " +- "<< spot.sigmaZError()
129     << " Beam width=" << spot.beamWidth() << " +- "<< spot.beamWidthError();
130     return stream;
131     };
132    
133    
134     private:
135    
136     TVector3 error_; // Error on (x,y,z) beam position
137     Float_t sigmaZ_; // RMS bunch length
138     Float_t sigmaZError_; // RMS bunch length error
139     Float_t beamWidth_; // Average transverse beam width
140     Float_t beamWidthError_; // Error on average transverse beam width
141    
142     ClassDef (TRootBeamSpot,1);
143     };
144    
145     #endif