1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 2000 Caltech, UCSB
11 // Module: EvtGen/EvtRaritaSchwing.hh
13 // Description:Class to handle spin 3/2
15 // Modification history:
17 // RYD April 23, 2000 Module created
19 //------------------------------------------------------------------------
21 #ifndef EVTRARITASCHWINGER_HH
22 #define EVTRARITASCHWINGER_HH
24 #include "EvtGenBase/EvtComplex.hh"
25 #include "EvtGenBase/EvtVector4C.hh"
26 #include "EvtGenBase/EvtVector4R.hh"
27 #include "EvtGenBase/EvtDiracSpinor.hh"
29 class EvtRaritaSchwinger ;
30 EvtRaritaSchwinger rotateEuler(const EvtRaritaSchwinger& rs,
31 double alpha,double beta,double gamma);
32 EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
33 const EvtVector4R p4);
34 EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
35 const EvtVector3R boost);
36 EvtRaritaSchwinger dirProd(EvtVector4R v,EvtDiracSpinor u);
37 EvtRaritaSchwinger dirProd(EvtVector4C v,EvtDiracSpinor u);
38 EvtRaritaSchwinger operator+(const EvtRaritaSchwinger& u1,
39 const EvtRaritaSchwinger& u2);
40 EvtRaritaSchwinger operator-(const EvtRaritaSchwinger& u1,
41 const EvtRaritaSchwinger& u2);
42 EvtComplex operator*(const EvtRaritaSchwinger& u1,
43 const EvtRaritaSchwinger& u2);
45 class EvtRaritaSchwinger{
47 friend EvtRaritaSchwinger rotateEuler(const EvtRaritaSchwinger& rs,
48 double alpha,double beta,double gamma);
49 friend EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
50 const EvtVector4R p4);
51 friend EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger& rs,
52 const EvtVector3R boost);
54 friend EvtRaritaSchwinger dirProd(EvtVector4R v,EvtDiracSpinor u);
55 friend EvtRaritaSchwinger dirProd(EvtVector4C v,EvtDiracSpinor u);
57 friend EvtRaritaSchwinger operator+(const EvtRaritaSchwinger& u1,
58 const EvtRaritaSchwinger& u2);
59 friend EvtRaritaSchwinger operator-(const EvtRaritaSchwinger& u1,
60 const EvtRaritaSchwinger& u2);
62 friend EvtComplex operator*(const EvtRaritaSchwinger& u1,
63 const EvtRaritaSchwinger& u2);
67 inline EvtRaritaSchwinger();
68 virtual ~EvtRaritaSchwinger();
69 inline EvtRaritaSchwinger(const EvtRaritaSchwinger& rs);
70 inline EvtRaritaSchwinger& operator=(const EvtRaritaSchwinger& rs);
72 void set(int i,int j,const EvtComplex& sp);
74 void applyRotateEuler(double alpha,double beta,double gamma);
75 void applyBoostTo(const EvtVector4R p4);
76 void applyBoostTo(const EvtVector3R boost);
78 EvtRaritaSchwinger& operator+=(const EvtRaritaSchwinger& u2);
79 EvtRaritaSchwinger& operator-=(const EvtRaritaSchwinger& u2);
81 EvtComplex get(int i,int j) const;
82 friend std::ostream& operator<<(std::ostream& s, const EvtRaritaSchwinger& rs);
84 EvtVector4C getVector(int i) const;
85 EvtDiracSpinor getSpinor(int i) const;
87 void setVector(int i,const EvtVector4C& v);
88 void setSpinor(int i,const EvtDiracSpinor& sp);
94 //First index in spinor index, second is Lorentz index.
99 EvtRaritaSchwinger::EvtRaritaSchwinger(){
110 EvtRaritaSchwinger::EvtRaritaSchwinger(const EvtRaritaSchwinger& rs){
115 _rs[i][j]=rs._rs[i][j];
121 EvtRaritaSchwinger& EvtRaritaSchwinger::operator=(const EvtRaritaSchwinger& rs){
126 _rs[i][j]=rs._rs[i][j];