1 #ifndef POLARIZATION_VECTOR_HH 2 #define POLARIZATION_VECTOR_HH 10 #include "TLorentzVector.h" 23 _v[0].SetXYZT(
m+p.Px()*p.Px()/(p.E()+
m),p.Px()*p.Py()/(p.E()+
m),p.Px()*p.Pz()/(p.E()+
m),p.Px());
24 _v[0]*=1./(
m*sqrt(2));
25 _v[1].SetXYZT(p.Px()*p.Py()/(p.E()+
m),
m+p.Py()*p.Py()/(p.E()+
m),p.Py()*p.Pz()/(p.E()+
m),p.Py());
26 _v[1]*=-1./(
m*sqrt(2));
30 _v[0].SetXYZT(p.Pz()*p.Px()/(p.E()+
m),p.Pz()*p.Py()/(p.E()+
m),
m+p.Pz()*p.Pz()/(p.E()+
m),p.Pz());
32 _v[1].SetXYZT(0,0,0,0);
35 _v[0].SetXYZT(
m+p.Px()*p.Px()/(p.E()+
m),p.Px()*p.Py()/(p.E()+
m),p.Px()*p.Pz()/(p.E()+
m),p.Px());
36 _v[0]*=-1./(
m*sqrt(2));
37 _v[1].SetXYZT(p.Px()*p.Py()/(p.E()+
m),
m+p.Py()*p.Py()/(p.E()+
m),p.Py()*p.Pz()/(p.E()+
m),p.Py());
38 _v[1]*=-1./(
m*sqrt(2));
47 std::cout <<
"I can't handle spin > 1 particles. I'll set everything to 0. " << std::endl;
48 _v[0].SetXYZT(0,0,0,0);
49 _v[1].SetXYZT(0,0,0,0);
55 double px = p.Px()/p.E();
56 double py = p.Py()/p.E();
57 double pz = p.Pz()/p.E();
59 if((abs(px) > 1.E-4)||(abs(py) > 1.E-4)){
60 double x = -py/sqrt(px*px + py*py);
61 double y = px/sqrt(px*px + py*py);
63 double s = sin(acos(c));
66 _v[0].SetXYZT((x*x*(1-c)+c),x*y*(1-c),-y*
s,0 );
68 _v[1].SetXYZT(-x*y*(1-c),-(y*y*(1-c)+c),-x*
s,0);
73 _v[0].SetXYZT(-(x*x*(1-c)+c),-x*y*(1-c),y*
s,0 );
75 _v[1].SetXYZT(-x*y*(1-c),-(y*y*(1-c)+c),-x*
s,0);
86 _v[0].SetXYZT(0,0,0,0);
87 _v[1].SetXYZT(0,0,0,0);
96 _v[0].SetXYZT(1/sqrt(2),0,0,0);
97 _v[1].SetXYZT(0,-1/sqrt(2),0,0);
101 _v[0].SetXYZT(-1/sqrt(2),0,0,0);
102 _v[1].SetXYZT(0,-1/sqrt(2),0,0);
112 _v[0].SetXYZT(0,0,0,0);
113 _v[1].SetXYZT(0,0,0,0);
const TLorentzVector & Re() const
polVector(const polVector &other, bool conj=false)
const TLorentzVector & Im() const
double lambda(double x, double y, double z)
polVector(const TLorentzVector p, const double m, const int lambda)