Download presentation
Presentation is loading. Please wait.
1
Garfield++ 2014/9/25 京大理 髙田淳史
2
Garfield++の出番。 Elmerで計算した電場を読み込んで ガス検出器のシミュレーション C++で記述
compile時にROOTと Garfield++のライブラリをLink ⇒ makefileを作っておくと便利 計算には時間がそれなりにかかります
3
Makefile例
4
Source codeの流れ Magboltz ガスの定義 (組成・温度・圧力…) ComponentElmer
geometry, 電場構造, 比誘電率の読み込み Sensor simulationするarea・電極の定義 AvalancheMicroscopic 増幅過程のシミュレーション
5
Magboltz部分 MediumMagboltz *gas = new MediumMagboltz(); gas->SetComposition("ar", 90., "c2h6", 10); gas->SetTemperature(293.15); gas->SetPressure(760.); gas->EnablePenningTransfer(0.31, 0, "ar"); gas->SetMaxElectronEnergy(200.); gas->EnableDrift(); gas->Initialise(); gas->LoadIonMobility(“file名”) 組成の定義 (6種まで) 温度の定義 圧力の定義 Penning効果の定義 Cross section tableの最大値 電子のdrift領域として定義 イオンのmobility
6
定義されているGas Garfield++のUser Guide Appendix Bにも記載
CF4, Ar, He, He-3, Ne, Kr, Xe, CH4, C2H6, C3H8, iC4H10, CO2, neoC5H12, H2O, O2, N2, NO, N2O, C2H4, C2H2, H2, D2, CO, Methylal, DME, Reid-Step, Maxwell-Model, C2F6, SF6, NH3, C3H6, cC3H6, CH3OH, C2H5OH, C3H7OH, Cs, F2, CS2, COS, CD4, BF3, C2HF5, C2H2F4, TMA, CHF3, CF3Br, C3F8, O3, Hg, H2S, nC4H10, nC5H12, N2 (Phelps), GeH4, SiH4
7
Penning effect 混合気体で起こる
励起状態の分子が、低いイオン化電位をもつ第二の気体分子に衝突して,イオン化を起こし、自分は基底状態に戻る ガス増幅率の絶対値を計算したい場合は必須 Penning effect O. Sahin+, JINST (2010) S. Dildick氏Slideより
8
Avalanche Size Ar 90% + Ethane 10% ■:イオンの数 r : Penning Transfer Rate
□:No.10 2004/5/13 15:00 2004/5/13 23:40 ▲:No.16 2005/10/11 21:00 ■:イオンの数 ●:電子の数 r : Penning Transfer Rate Avalanche Sizeの平均値をplot Penning Transfer Rateの文献値は0.31±0.01 (JINST 2010 P05002) r = 0.6 r = 0.4 Effective gain (参考値) r = 0.2 r = 0.0
9
Ion Mobility 信号波形のシミュレーションには必須 Garfield++のSource Code内に のデータは存在
Ar中のAr+ Ne中のNe+ CO2中のCO2+ のデータは存在
10
ComponentElmer部分 ComponentElmer *elm = new ComponentElmer(“gemcell/mesh.header”, “gemcell/mesh.elements”, “gemcell/mesh.nodes”, “gemcell/dielectrics.dat”, “gemcell/gemcel.result”, “cm"); elm->EnablePeriodicityX(); elm->EnableMirrorPeriodicityY(); elm->SetMedium(0, gas); elm->SetWeightingField(“gemcell/gemcell_Wtlel.result”, “wtlel”); MediumMagboltzの情報とリンク 重み付電場の読み込み
11
比誘電率data fileの作成 各物質の比誘電率をGarfield++に与える必要がある
金属に対しては”非常に大きな値”を入れることで近似 物質の数 物質の比誘電率 物質のID
12
重み付電場 信号を読み出す電極の電位を1 Vに それ以外の電極の電位を0 Vに設定し Elmerで電場を計算させる ⇒ 重み付電場
電荷qの荷電粒子が速度vで動くとき 読み出し電極に生じる電流は 𝑑𝑄 𝑑𝑡 =𝑞𝑣 𝐸 𝑤 𝐸 𝑤 : 重み付電場 Gemcellのsampleでは gemcell_Wtlel.sif で計算
13
Sensor部分 Sensor *sensor = new Sensor(); sensor->AddComponent(elm); sensor->SetArea(-axis_x, -axis_y, -axis_z, axis_x, axis_y, axis_z); sensor->AddElectrode(elm, “wtlel”); sensor->SetTimeWindow(0, tEnd/nsBins, nsBins); Simulationするareaの範囲の定義 信号読み出し電極 開始時刻 bin幅 bin数
14
AvalancheMicroscopic部分
増幅時の電子をトレース AvalancheMicroscopic部分 AvalancheMicroscopic *aval = new AvalancheMicroscopic(); aval->SetSensor(sensor) aval->AvalancheElectron( x, y, z, vx, vy, vz); int ne, ni; aval->GetAvalancheSize(ne, ni); int nd = aval->GetNumberOfElectronEndpoints(); for (int i=0; i<nd; i++) { double x0, y0, z0, t0, e0, x1, y1, z1, t1, e1; int status; aval->GetElectronEndpopint(i, x0, y0, z0, t0, e0, x1, y1, z1, t1, e1, status); } Seed電子の初期位置 Seed電子の初速 増幅で生じた電子とイオンの数 電子の初期位置・時刻・エネルギー 電子の終着位置・時刻・エネルギー
15
イオンの方は… AvalancheMC *ion = new AvalancheMC(); ion->SetSensor(sensor); ion->SetDistanceSteps(2e-4); int nd = aval->GetNumberOfElectronEndpoints(); for (int i=0; i<nd; i++) { double x0, y0, z0, t0, e0, x1, y1, z1, t1, e1; int status; aval->GetElectronEndpopint(i, x0, y0, z0, t0, e0, x1, y1, z1, t1, e1, status); ion->DriftIon(x0, y0, z0, t0); } なだれ電子の発生点にイオンを作って 個々に追尾する
16
信号波形 gas->LoadIonMobility(“file名”); elm->SetWeightingField(“file名”, “名前”); sensor->AddElectrode(elm, “名前”); sensor->SetTimeWindow(start, w_bin, n_bin); aval->EnableSignalCalculation(); ion->EnableSignalCalculation(); for( ; ; ){ sensor->ClearSignal(); for(int j=0; j<n_bin; j++) double w = sensor->GetSignal(“名前”, j); } イオン成分: GetIonSignal(“名前”, j) 電子成分: GetElectronSiganl(“名前”, j);
Similar presentations
© 2025 slidesplayer.net Inc.
All rights reserved.