inlib  1.2.0
/Users/barrand/private/dev/softinex/old/inexlib-1.2/inlib/inlib/a4z
Go to the documentation of this file.
00001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
00002 // See the file inlib.license for terms.
00003 
00004 #ifndef inlib_a4z
00005 #define inlib_a4z
00006 
00007 #include "a4"
00008 
00009 #include <complex>
00010 
00011 namespace inlib {
00012 namespace a4 {
00013 
00014 inline sqm< std::complex<double> > to_complex(const sqm<double>& a_from) {
00015   typedef std::complex<double> z;
00016   sqm< std::complex<double> > to;
00017   const std::vector<double>& fvec = a_from.vector();
00018   std::vector<z>& tvec = to.vector();
00019   typedef std::vector<double>::const_iterator const_vec_it_t;
00020   const_vec_it_t fit = fvec.begin();
00021   typedef std::vector<z>::iterator vec_it_t;
00022   vec_it_t tit = tvec.begin();
00023   for(;fit!=fvec.end();++fit,++tit) *tit = *fit;
00024   return to;
00025 }
00026 
00027 }}
00028 
00029 namespace inlib {
00030 namespace a4z {
00031 
00035 
00036 class id : public a4::sqm< std::complex<double> > {
00037 public:
00038   id(){
00039     typedef std::complex<double> z;
00040     v00(z(1,0));
00041     v11(z(1,0));
00042     v22(z(1,0));
00043     v33(z(1,0));
00044   }
00045 };
00046 
00047 //  Standard Dirac matrices :
00048 //  D0               D1               D2              D3
00049 //    1  0  0  0       0  0  0  1       0  0  0 -i      0  0  1  0
00050 //    0  1  0  0       0  0  1  0       0  0  i  0      0  0  0 -1
00051 //    0  0 -1  0       0 -1  0  0       0  i  0  0     -1  0  0  0
00052 //    0  0  0 -1      -1  0  0  0      -i  0  0  0      0  1  0  0
00053 class D0 : public a4::sqm< std::complex<double> > {
00054 public:
00055   D0(){
00056     v00( 1);
00057     v11( 1);
00058     v22(-1);
00059     v33(-1);
00060   }
00061 };
00062 class D1 : public a4::sqm< std::complex<double> > {
00063 public:
00064   D1(){
00065     v03( 1);
00066     v12( 1);
00067     v21(-1);
00068     v30(-1);
00069   }
00070 };
00071 class D2 : public a4::sqm< std::complex<double> > {
00072 public:
00073   D2(){
00074     typedef std::complex<double> z;
00075     z i(0,1);
00076     v03(-i);
00077     v12( i);
00078     v21( i);
00079     v30(-i);
00080   }
00081 };
00082 class D3 : public a4::sqm< std::complex<double> > {
00083 public:
00084   D3(){
00085     v02( 1);
00086     v13(-1);
00087     v20(-1);
00088     v31( 1);
00089   }
00090 };
00091 
00092 // Lorentz rep (1/2,1/2)
00093 // HH1             HH2              HH3
00094 //  0  1  1  0       0 -i -i  0       2  0  0  0
00095 //  1  0  0  1       i  0  0 -i       0  0  0  0
00096 //  1  0  0  1       i  0  0 -i       0  0  0  0
00097 //  0  1  1  0       0  i  i  0       0  0  0 -2
00098 // the uppers must be multiplied by : -i*0.5
00099 
00100 // HH4             HH5              HH6
00101 //  0  0  0  0       0  i -i  0       0 -1  1  0
00102 //  0  2  0  0      -i  0  0 -i      -1  0  0  1
00103 //  0  0 -2  0       i  0  0  i       1  0  0 -1
00104 //  0  0  0  0       0  i -i  0       0  1 -1  0
00105 // the uppers must be multiplied by : 0.5
00106 
00107 class HH1 : public a4::sqm< std::complex<double> > {
00108 public:
00109   HH1(){
00110     typedef std::complex<double> z;
00111     z i(0,1);
00112     v01( 1);
00113     v02( 1);
00114     v10( 1);
00115     v13( 1);
00116     v20( 1);
00117     v23( 1);
00118     v31( 1);
00119     v32( 1);
00120     multiply(-i*0.5);
00121   }
00122 };
00123 class HH2 : public a4::sqm< std::complex<double> > {
00124 public:
00125   HH2(){
00126     typedef std::complex<double> z;
00127     z i(0,1);
00128     v01(-i);
00129     v02(-i);
00130     v10( i);
00131     v13(-i);
00132     v20( i);
00133     v23(-i);
00134     v31( i);
00135     v32( i);
00136     multiply(-i*0.5);  
00137   }
00138 };
00139 class HH3 : public a4::sqm< std::complex<double> > {
00140 public:
00141   HH3(){
00142     typedef std::complex<double> z;
00143     z i(0,1);
00144     v00( 2);
00145     v11( 0);
00146     v22( 0);
00147     v33(-2);
00148     multiply(-i*0.5);  
00149   }
00150 };
00151 class HH4 : public a4::sqm< std::complex<double> > {
00152 public:
00153   HH4(){
00154     v00( 0);
00155     v11( 2);
00156     v22(-2);
00157     v33( 0);
00158     multiply(0.5);  
00159   }
00160 };
00161 class HH5 : public a4::sqm< std::complex<double> > {
00162 public:
00163   HH5(){
00164     typedef std::complex<double> z;
00165     z i(0,1);
00166     v01( i);
00167     v02(-i);
00168     v10(-i);
00169     v13(-i);
00170     v20( i);
00171     v23( i);
00172     v31( i);
00173     v32(-i);
00174     multiply(0.5);  
00175   }
00176 };
00177 class HH6 : public a4::sqm< std::complex<double> > {
00178 public:
00179   HH6(){
00180     typedef std::complex<double> z;
00181     z i(0,1);
00182     v01(-1);
00183     v02( 1);
00184     v10(-1);
00185     v13( 1);
00186     v20( 1);
00187     v23(-1);
00188     v31( 1);
00189     v32(-1);
00190     multiply(0.5);  
00191   }
00192 };
00193 
00194 }}
00195 
00196 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines