Import Geant4 10.3.0 source tree
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
#define tools_mat
|
||||
|
||||
#ifdef TOOLS_MEM
|
||||
#include "mem"
|
||||
#include "../mem"
|
||||
#endif
|
||||
|
||||
#include "MATCOM"
|
||||
@@ -30,9 +30,11 @@ private:
|
||||
}
|
||||
#endif
|
||||
public:
|
||||
mat() {
|
||||
mat(bool a_inc = true) {
|
||||
#ifdef TOOLS_MEM
|
||||
mem::increment(s_class().c_str());
|
||||
if(a_inc) mem::increment(s_class().c_str());
|
||||
#else
|
||||
(void)a_inc;
|
||||
#endif
|
||||
#ifdef TOOLS_MAT_NEW
|
||||
m_vec = new T[D*D];
|
||||
@@ -160,18 +162,18 @@ inline nmat<T> copy(const mat<T,D>& a_from) {
|
||||
}
|
||||
|
||||
template <class MAT>
|
||||
inline void conjugate(MAT& a_m) {
|
||||
inline void conjugate(MAT& a_m,typename MAT::elem_t (*a_conj)(const typename MAT::elem_t&)) {
|
||||
typedef typename MAT::elem_t T;
|
||||
T* pos = const_cast<T*>(a_m.data());
|
||||
unsigned int D2 = a_m.dimension()*a_m.dimension();
|
||||
for(unsigned int i=0;i<D2;i++,pos++) {
|
||||
*pos = _conj(*pos); //T = std::complex<>
|
||||
*pos = a_conj(*pos); //T = std::complex<>
|
||||
}
|
||||
}
|
||||
|
||||
template <class MAT>
|
||||
inline void dagger(MAT& a_m) {
|
||||
conjugate<MAT>(a_m);
|
||||
inline void dagger(MAT& a_m,typename MAT::elem_t (*a_conj)(const typename MAT::elem_t&)) {
|
||||
conjugate<MAT>(a_m,a_conj);
|
||||
a_m.transpose();
|
||||
}
|
||||
|
||||
@@ -359,37 +361,6 @@ inline void matrix_set(MAT& a_m
|
||||
vec[1] = a_10;vec[3] = a_11;
|
||||
}
|
||||
|
||||
template <class MAT>
|
||||
inline void set_epsilon(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 0, 1,
|
||||
-1, 0);
|
||||
}
|
||||
|
||||
// Pauli matrices :
|
||||
// P1 P2 P3
|
||||
// 0 1 0 -i 1 0
|
||||
// 1 0 i 0 0 -1
|
||||
template <class MAT>
|
||||
inline void set_P1(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 0, 1,
|
||||
1, 0);
|
||||
}
|
||||
|
||||
template <class MAT>
|
||||
inline void set_P2(MAT& a_m) {
|
||||
typedef typename MAT::elem_t T;
|
||||
//T i;set_i(i); //with inlib::symbol
|
||||
T i(0,1);
|
||||
T _i = T(-1)*i;
|
||||
matrix_set<MAT>(a_m, 0, _i,
|
||||
i, 0);
|
||||
}
|
||||
template <class MAT>
|
||||
inline void set_P3(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 1, 0,
|
||||
0,-1);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
/// specific D=3 ///////////////////////////////
|
||||
////////////////////////////////////////////////
|
||||
@@ -407,27 +378,6 @@ inline void matrix_set(MAT& a_m
|
||||
vec[2] = a_20;vec[5] = a_21;vec[8] = a_22;
|
||||
}
|
||||
|
||||
// Generators of rotation group :
|
||||
// Rk(i,j) = epsilon(k,i,j) i,j,k=1,2,3
|
||||
template <class MAT>
|
||||
inline void set_R1(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 0, 0, 0,
|
||||
0, 0, 1,
|
||||
0,-1, 0);
|
||||
}
|
||||
template <class MAT>
|
||||
inline void set_R2(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 0, 0,-1,
|
||||
0, 0, 0,
|
||||
1, 0, 0);
|
||||
}
|
||||
template <class MAT>
|
||||
inline void set_R3(MAT& a_m) {
|
||||
matrix_set<MAT>(a_m, 0, 1, 0,
|
||||
-1, 0, 0,
|
||||
0, 0, 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
/// specific D=4 ///////////////////////////////
|
||||
////////////////////////////////////////////////
|
||||
@@ -447,56 +397,26 @@ inline void matrix_set(MAT& a_m
|
||||
vec[3] = a_30;vec[7] = a_31;vec[11] = a_32;vec[15] = a_33;
|
||||
}
|
||||
|
||||
template <class MAT,class RANDOM>
|
||||
inline void set_random_antisym(MAT& a_m,RANDOM& a_rd) {
|
||||
typedef typename MAT::elem_t T;
|
||||
T v01 = a_rd.shoot();
|
||||
T v02 = a_rd.shoot();
|
||||
T v03 = a_rd.shoot();
|
||||
T v12 = a_rd.shoot();
|
||||
T v13 = a_rd.shoot();
|
||||
T v23 = a_rd.shoot();
|
||||
matrix_set(a_m,
|
||||
0, v01, v02, v03,
|
||||
-v01, 0, v12, v13,
|
||||
-v02,-v12, 0, v23,
|
||||
-v03,-v13,-v23, 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
/// specific D=5 ///////////////////////////////
|
||||
////////////////////////////////////////////////
|
||||
template <class MAT>
|
||||
inline void set_eta(MAT& a_m) {
|
||||
a_m.set_zero();
|
||||
a_m.set_value(0,0, 1);
|
||||
a_m.set_value(1,1,-1);
|
||||
a_m.set_value(2,2,-1);
|
||||
a_m.set_value(3,3,-1);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
/// specific D=6 ///////////////////////////////
|
||||
////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
template <class T>
|
||||
inline void set_matrix(mat<T,6>& a_m
|
||||
,const T& a_00,const T& a_01,const T& a_02,const T& a_03,const T& a_04,const T& a_05 //1 row
|
||||
,const T& a_10,const T& a_11,const T& a_12,const T& a_13,const T& a_14,const T& a_15 //2 row
|
||||
,const T& a_20,const T& a_21,const T& a_22,const T& a_23,const T& a_24,const T& a_25 //3 row
|
||||
,const T& a_30,const T& a_31,const T& a_32,const T& a_33,const T& a_34,const T& a_35 //4 row
|
||||
,const T& a_40,const T& a_41,const T& a_42,const T& a_43,const T& a_44,const T& a_45 //5 row
|
||||
,const T& a_50,const T& a_51,const T& a_52,const T& a_53,const T& a_54,const T& a_55 //6 row
|
||||
inline void matrix_set(MAT& a_m
|
||||
,const typename MAT::elem_t& a_00,const typename MAT::elem_t& a_01,const typename MAT::elem_t& a_02,const typename MAT::elem_t& a_03,const typename MAT::elem_t& a_04 //1 row
|
||||
,const typename MAT::elem_t& a_10,const typename MAT::elem_t& a_11,const typename MAT::elem_t& a_12,const typename MAT::elem_t& a_13,const typename MAT::elem_t& a_14 //2 row
|
||||
,const typename MAT::elem_t& a_20,const typename MAT::elem_t& a_21,const typename MAT::elem_t& a_22,const typename MAT::elem_t& a_23,const typename MAT::elem_t& a_24 //3 row
|
||||
,const typename MAT::elem_t& a_30,const typename MAT::elem_t& a_31,const typename MAT::elem_t& a_32,const typename MAT::elem_t& a_33,const typename MAT::elem_t& a_34 //4 row
|
||||
,const typename MAT::elem_t& a_40,const typename MAT::elem_t& a_41,const typename MAT::elem_t& a_42,const typename MAT::elem_t& a_43,const typename MAT::elem_t& a_44 //5 row
|
||||
){
|
||||
//a_<R><C>
|
||||
//vec[R + C * 6];
|
||||
T* vec = const_cast<T*>(a_m.data());
|
||||
vec[0] = a_00;vec[6] = a_01;vec[12] = a_02;vec[18] = a_03;vec[24] = a_04;vec[30] = a_05;
|
||||
vec[1] = a_10;vec[7] = a_11;vec[13] = a_12;vec[19] = a_13;vec[25] = a_14;vec[31] = a_15;
|
||||
vec[2] = a_20;vec[8] = a_21;vec[14] = a_22;vec[20] = a_23;vec[26] = a_24;vec[32] = a_25;
|
||||
vec[3] = a_30;vec[9] = a_31;vec[15] = a_32;vec[21] = a_33;vec[27] = a_34;vec[33] = a_35;
|
||||
vec[4] = a_40;vec[10] = a_41;vec[16] = a_42;vec[22] = a_43;vec[28] = a_44;vec[34] = a_45;
|
||||
vec[5] = a_50;vec[11] = a_51;vec[17] = a_52;vec[23] = a_53;vec[29] = a_54;vec[35] = a_55;
|
||||
//vec[R + C * 4];
|
||||
typename MAT::elem_t* vec = const_cast<typename MAT::elem_t*>(a_m.data());
|
||||
vec[0] = a_00;vec[5] = a_01;vec[10] = a_02;vec[15] = a_03;vec[20] = a_04;
|
||||
vec[1] = a_10;vec[6] = a_11;vec[11] = a_12;vec[16] = a_13;vec[21] = a_14;
|
||||
vec[2] = a_20;vec[7] = a_21;vec[12] = a_22;vec[17] = a_23;vec[22] = a_24;
|
||||
vec[3] = a_30;vec[8] = a_31;vec[13] = a_32;vec[18] = a_33;vec[23] = a_34;
|
||||
vec[4] = a_40;vec[9] = a_41;vec[14] = a_42;vec[19] = a_43;vec[24] = a_44;
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user