[Go to BBS]
All articles in a thread
SubjectTracking particle's Matching
Article No456
Date: 2007/07/13(Fri) 09:15:11
ContributorKen
たびたび失礼しています.
SADを使ってTrackingシミュレーションしているものです.
今回はマッチングについてお聞きしたいと思います.
現状では,
M=Inverse[NormalCoordinates/.Emittance[Matrix->True]]
Up=0.001*Table[GaussRandom[],{6},{np}];      !Upにアップライトな粒子分布を入れる
x=Append[Dot[M,Up],Table[1,{np}]];        !xにMを使ってマッチングさせた粒子分布を入れる.

という形でマッチングしています.
他のマッチング方法をご存知の方,そのやり方を教えてください.
よろしくお願いします.

SubjectRe: Tracking particle's Matching
Article No457
Date: 2007/08/06(Mon) 10:16:38
ContributorKentaro Harada
  以下のような感じでよくやります。

lgb = Twiss["GAMMABETA",1];
エミッタンス、バンチ長、エネルギー広がりはcell calc emit で計算した
値を使うことが多いです。
nemit = 1E-6;
blen = 0.00033333;
espr = 1E-4;

emit = nemit / lgb;
bx = Twiss["BX",1];
by = Twiss["BY",1];
ax = Twiss["AX",1];
ay = Twiss["AY",1];
ex = Twiss["EX",1];
epx = Twiss["EPX",1];

np = 5000;

(始点で分散ゼロの場合です。)
inix = Table[Sqrt[emit * bx] * GaussRandom[],{np}];
inixp = Table[Sqrt[emit * (1+ax*ax)/ bx] * GaussRandom[],{np}];
iniy = Table[Sqrt[emit * by] * GaussRandom[],{np}];
iniyp = Table[Sqrt[emit * (1+ay*ay)/ by] * GaussRandom[],{np}];
iniz = Table[blen * GaussRandom[],{np}];
inidP = Table[espr * GaussRandom[],{np}];

res = {1,{inix, inixp, iniy, iniyp, iniz, inidP, Table[1,{np}]}};

SubjectRe^2: Tracking particle's Matching
Article No458
Date: 2007/08/13(Mon) 05:58:40
ContributorKen
ありがとうございました.
大変参考になります.

ちなみに,分散関数
> ex = Twiss["EX",1];
> epx = Twiss["EPX",1];

はトラッキング中でどのように使っているのですか?
また,初期粒子分布のマッチングにはex,epxの効果は入らないのですか?

SubjectRe^2: Tracking particle's Matching
Article No506
Date: 2008/01/07(Mon) 17:40:24
ContributorKen
>bx = Twiss["BX",1];
>by = Twiss["BY",1];
>ax = Twiss["AX",1];
>ay = Twiss["AY",1];
>ex = Twiss["EX",1];
>epx = Twiss["EPX",1];

Twiss[]関数を使うのではなく,
Emittance[]関数を使うことでtwiss parameterを定義することはできないのでしょうか?

たとえば,
Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),7]
とすれば,
(AZ->.226810350638561)
という値が返ってきますが,これを数値表現(?)に直せますか?

Emittance[]関数から求まるtwiss parameterを使って粒子分布のMatchingをしたいと思っています.
よろしくお願いします.

SubjectRe^3: Tracking particle's Matching
Article No507
Date: 2008/01/07(Mon) 22:21:48
ContributorKen

> (AZ->.226810350638561)
> という値が返ってきますが,これを数値表現(?)に直せますか?

ちなみに,一つの方法として,
ax=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),1],_Real],1];
bx=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),2],_Real],1];
ay=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),4],_Real],1];
by=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),5],_Real],1];
az=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),7],_Real],1];
bz=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),8],_Real],1];
とすることで,
Emittance[]関数からTwissパラメータを取り出せました.
(あんまりスマートなやり方ではないと思いますが・・・.)

SubjectRe^4: Tracking particle's Matching
Article No508
Date: 2008/01/08(Tue) 19:01:36
ContributorAKio Morita
>
> > (AZ->.226810350638561)
> > という値が返ってきますが,これを数値表現(?)に直せますか?
>
> ちなみに,一つの方法として,
> ax=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),1],_Real],1];
> bx=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),2],_Real],1];
> ay=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),4],_Real],1];
> by=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),5],_Real],1];
> az=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),7],_Real],1];
> bz=Part[Cases[Part[(ExtendedTwissParameters/.Emittance[Matrix->True]),8],_Real],1];
> とすることで,
> Emittance[]関数からTwissパラメータを取り出せました.
> (あんまりスマートなやり方ではないと思いますが・・・.)
>
{AX,BX,AY,BY,AZ,BZ}/.(ExtendedTwissParameters/.Emittance[Matrix->True])