TrackParticles[]の出力のリストを受け取り、ビームのモーメントをリストとして返す。

BeamStat[{pos_Real|String,
beam:{{__Real},{__Real},{__Real},{__Real},{__Real},{__Real},{__Real}}}] :=  Module[{benv,np,b,i,j},
		b=Thread[Select[Thread[beam], #[[7]]&]];

		benv[_]:=0;
		np=Length[b[[7]];
		
		benv[ 1]=Plus@@b[[1]]/np;
		benv[ 2]=Plus@@b[[2]]/np;
		benv[ 3]=Plus@@b[[3]]/np;
		benv[ 4]=Plus@@b[[4]]/np;
		benv[ 5]=Plus@@b[[5]]/np;
		benv[ 6]=Plus@@b[[6]]/np;

		benv[ 7]=Plus@@(b[[1]]*b[[1]])/np-benv[1]*benv[1];
		benv[ 8]=Plus@@(b[[1]]*b[[2]])/np-benv[1]*benv[2];
		benv[ 9]=Plus@@(b[[1]]*b[[3]])/np-benv[1]*benv[3];
		benv[10]=Plus@@(b[[1]]*b[[4]])/np-benv[1]*benv[4];
		benv[11]=Plus@@(b[[1]]*b[[5]])/np-benv[1]*benv[5];
		benv[12]=Plus@@(b[[1]]*b[[6]])/np-benv[1]*benv[6];

		benv[14]=Plus@@(b[[2]]*b[[2]])/np-benv[2]*benv[2];
		benv[15]=Plus@@(b[[2]]*b[[3]])/np-benv[2]*benv[3];
		benv[16]=Plus@@(b[[2]]*b[[4]])/np-benv[2]*benv[4];
		benv[17]=Plus@@(b[[2]]*b[[5]])/np-benv[2]*benv[5];
		benv[18]=Plus@@(b[[2]]*b[[6]])/np-benv[2]*benv[6];

		benv[21]=Plus@@(b[[3]]*b[[3]])/np-benv[3]*benv[3];
		benv[22]=Plus@@(b[[3]]*b[[4]])/np-benv[3]*benv[4];
		benv[23]=Plus@@(b[[3]]*b[[5]])/np-benv[3]*benv[5];
		benv[24]=Plus@@(b[[3]]*b[[6]])/np-benv[3]*benv[6];

		benv[28]=Plus@@(b[[4]]*b[[4]])/np-benv[4]*benv[4];
		benv[29]=Plus@@(b[[4]]*b[[5]])/np-benv[4]*benv[5];
		benv[30]=Plus@@(b[[4]]*b[[6]])/np-benv[4]*benv[6];

		benv[35]=Plus@@(b[[5]]*b[[5]])/np-benv[5]*benv[5];
		benv[36]=Plus@@(b[[5]]*b[[6]])/np-benv[5]*benv[6];
		
		benv[42]=Plus@@(b[[6]]*b[[6]])/np-benv[6]*benv[6];

		benv[43]=Plus@@(b[[1]]^3])/np;
		benv[44]=Plus@@(b[[3]]^3])/np;
		benv[45]=Plus@@(b[[5]]^3])/np;

		benv[46]=Plus@@(b[[1]]^4])/np;
		benv[47]=Plus@@(b[[3]]^4])/np;
		benv[48]=Plus@@(b[[3]]^4])/np;
                 
                  Do[
                    Do[benv[j*6+i]=benv[i*6+j],{j,i+1,6}]
                  ,{i,1,6}];

		Table[benv[i],{i,1,48}]];

トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-11-19 (日) 21:15:19