1)Table作成 2)機上SWモーメント計算 3)物理量変換 1)Table作成 *入力ファイルの準備 "./mia/miach1.txt"; ch ene0(eV/V) alpha0(deg.) gfac0 ene-1.0 alpha-1.0 gfac-1.0 "./mia/ch_N_100_corrected_1.txt"; ch. ideal_center corrected_center difference_deg. data_num. "./mia/ch_R1p0_100_corrected_1.txt"; ch. ideal_center corrected_center difference_deg. data_num. [EXECUTE] ./mk_mia_rom.exe mk_mia_rom.c にて作成している。 *MCP_EFFは1.0を仮置き *proc_param0 M1-3のCH構成(SW-16ch SpOn/Off, Anti-8ch SpOn/Off, Anti-16ch: total 64ch)に即してgf*effを作成 OUTPUT>>G-factor (2B x 64 = 128B): 1/(eff*gf) x MIN_GF_## x 0xffff *proc_param1 M1-3のCH構成で他パラメータ作成: gfで重みを付けて計算 -al(corrected_center)->THETA -ph(alpha)-> PHI 座標変換など OUTPUT>>THETA (2B x 64 = 128B): theta/180. x d_Lcl_MIA_TBL_RD0(0x7fff)[符号付き] OUTPUT>>PHI (2B x 64 = 128B):   phi/180. x d_Lcl_MIA_TBL_RD0(0x7fff)[符号付き] OUTPUT>>V-CH-factorr (1B x 64 = 64B) 0x27f +- 0x7f の+-0x7fで表現 v[i] = sqrt(ene[i]), v'[i] = (v[i] - v0)/v0  (|v'| <20% 7f/27fを確認している) v' x 0x27f + 0x7f; 符号なしで扱うため0x7fの下駄を履かせる >復号時は、0x200を足すと0x27f +- 0x7f となる。 *tentative_make_vtable(f_vl)  Vテーブルが未提出なので一時的に作成している OUTPUT>>T1-4 Velocity *= 0xffff/sqrt(MAX_ENEGY_TABLE) [eV^(-1/2)]; 2) *app02_MPPE-MIA.c GF: pP->us_gf そのまま読み込み ( 1/(eff*gf) x MIN_GF_** x 0xffff ) pP->s_csp,snp(i) app_math_cos/sin(THETA*PI/d_Lcl_MIA_TBL_RD0) /d_Lcl_MIA_TBL_RD1(0x7ff)[符号付き] pP->s_csa,sna(i,j) app_math_cos/sin(PHI*PI/d_Lcl_MIA_TBL_RD0 +j*#) /d_Lcl_MIA_TBL_RD1(0x7ff)[符号付き] VLC: pP->us_vlc そのまま読み込み ( *0xffff/sqrt(MAX_ENEGY_TABLE) ) pP->uc_vf そのまま読み込み ( 0x27f +- 0x7f ) 3) *pP->uc_vf[i_c]: V *= d_LCl_MIA_TBL_VF0(0x200) + pP->uc_vf[i_c] として、最後の規格化で/d_Lcl_MIA_TBL_VF(0x27f)としている よって無次元化されている。 *pP->s_csp,snp(i) 最後の規格化で-1~+1となっている。 *pP->s_csa,sna(i,j) 最後の規格化で-1~+1となっている。 n = count/VLC*GF*cos /(1.0*0xffff *d_Lcl_MIA_TBL_RD1 /d_Lcl_MIA_TBL_VF) Vx = count *GF*cos*cos*cos /(1.0*0xffff^2*d_Lcl_MIA_TBL_RD1^3) Vy = count *GF*cos*cos*sin /(1.0*0xffff^2*d_Lcl_MIA_TBL_RD1^3) Vz = count *GF*cos*sin /(1.0*0xffff^2*d_Lcl_MIA_TBL_RD1^2) Pxx = count*VLC*GF*cos*cos*cos*cos*cos /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^5*d_Lcl_MIA_TBL_VF) Pyy = count*VLC*GF*cos*cos*cos*sin*sin /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^5*d_Lcl_MIA_TBL_VF) Pzz = count*VLC*GF*cos*sin*sin /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^3*d_Lcl_MIA_TBL_VF) Pxy = count*VLC*GF*cos*cos*cos*cos*sin /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^5*d_Lcl_MIA_TBL_VF) Pyz = count*VLC*GF*cos*cos*sin*sin /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^4*d_Lcl_MIA_TBL_VF) Pxz = count*VLC*GF*cos*cos*sin*cos /(1.0*0xffff^3*d_Lcl_MIA_TBL_RD1^4*d_Lcl_MIA_TBL_VF) 規格化後 n = count/VLC*GF/0xffff Vx = count *GF/(0xffff)^2 Vy = count *GF/(0xffff)^2 Vz = count *GF/(0xffff)^2 Pxx = count*VLC*GF/(0xffff)^3 Pyy = count*VLC*GF/(0xffff)^3 Pzz = count*VLC*GF/(0xffff)^3 Pxy = count*VLC*GF/(0xffff)^3 Pyz = count*VLC*GF/(0xffff)^3 Pxz = count*VLC*GF/(0xffff)^3 物理量への変換 (1) 16bit float -> 32 or 64bit float (2) n *= (0xffff) /(MIN_GF_## x 0xffff)/( 0xffff/sqrt(MAX_ENEGY_TABLE) ) *dE_E*dp*da/T/sqrt(2q/m) *= (0xffff)^-1 *sqrt(MAX_ENEGY_TABLE)/MIN_GF_## *dE_E*dp*da/T/sqrt(2q/m) v *= (0xffff)^2 /(MIN_GF_## x 0xffff) *dE_E*dp*da/T *= (0xffff) / MIN_GF_## *dE_E*dp*da/T P *= (0xffff)^3/(MIN_GF_## x 0xffff)*( 0xffff/sqrt(MAX_ENEGY_TABLE) ) *dE_E*dp*da/T*sqrt(2q/m) *= (0xffff)^3/(MIN_GF_##/sqrt(MAX_ENEGY_TABLE) *dE_E*dp*da/T*sqrt(2q/m) 変換例) conv_MIA_VM.c