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
|