v C++: ابزار Geant4 بر پایه آن نوشته شده است. لزومی ندارد یک برنامه نویس حرفهای باشید، فقط کافی است که با مفاهیم برنامه نویسی و ساختار الگوریتمها آَشنا باشید. بتوانید آن را درک کنید. موارد خاص خودتان را در مثالها پیدا کنید و در مواردی بسیار نادر و البته آسان آنها را بنویسید. این لینک را ببنید.
v مفهوم شیگرایی (Object Oriented Technology): یک شیوه برنامهنویسی است که ساختار یا بلوک اصلی اجزای آن، شیها میباشند. در واقع در این شیوه برنامهنویسی، برنامه به شی گرایش پیدا میکند. به این معنا که دادهها و توابعی که قرار است بر روی این دادهها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمعبندی شده و یک واحد (شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله میشوند و از این طریق، توابع بیگانهی خارج از آن شی، دیگر امکان ایجاد تغییر در دادههای درون آن شی را ندارند. در برنامههای خیلی پیشرفته از این مفهوم استفاده خواهد شد و کاربر معمولی فقط باید بداند که Geant4 با این روش تمام پیشنیازهای اصلی برای شبیهسازی را یک بار ساخته است و او باید فقط قادر باشد آنها را درک و استفاده نماید. همچنین در صورت لزوم امکان اصلاح و سفارشی کردن اجزا با توجه به نیاز کاربر وجود دارد.
v Unix/Linux: محیط استاندارد برای اجرا است و بنابراین باید آشنایی مختصری با محیط و نیز اجرای کدهای C++ در آن وجود داشته باشد. در محیط ویندوز هم قابل Geant4 امکان اجرا دارد اما پیشنهاد تیم سازنده استفاده از محیط لینوکس است. اینجا را ببنید.
ابزار Geant4 در موضوعات بسیاری به کار برده شده و به مقاله مرجع معرفی ابزار بیش از 4000 بار استناد رخ داده است.
v large scale HEP experiments
v Space science and astrophysics
v Medical physics, nuclear medicine
v Radiation protection
v Accelerator physics
v Pest control, food irradiation
v Homeland security
کاربرهای معمولی (پژوهشگران یا دانشجویان دکتری یا ارشد با عناوین مرتبط به زمینههای مطرح شده بالا) برای طراحی مساله خود باید ابتدا مرتبطترین مثال را از بین مثالهای فراوان Geant4 پیدا کنند. سپس مثال مورد نظر را به دقت برای درک آن مطالعه نمایند. راهنمای مربوط به مثال را با عنوان readme که در همه مثالها وجود دارد، حتماً مطالعه نمایند. سپس مثال را با توجه به نیاز خود اصلاح نمایند. به عبارت دیگر کاربر معمولی نیازی نیست که از ابتدا شروع به نوشتن یک برنامه نماید. پیشنهاد میشود برای اضافه کردن هر تعریف جدیدی در مثال خودتان، حتماً به دیگر مثالهای نسخه نصب شده در سیستم خودتان مراجعه کنید.
کاربر معمولی بعد از آشنایی با هسته اصلی Geant4 قادر خواهد بود به کمک مثالهای متعددی که در منبع برنامه نصبی وجود دارد تبحر خود را افزایش داده و بعد از مدتی مساله مورد نظر خود را طراحی و اطلاعات مورد نیاز را از استخراج نماید. بنابراین ابتدا نگاهی کلی و بدون در نظر گرفتن جزئیات، به هسته Geant4 خواهیم داشت.
v Run مجموعهای از Eventها و با شرایط یکسان هندسه و ساختار شبیهسازی و یک تعریف مشخص و ثابت از فیزیک برهمکنشها در مسأله است. G4RunManager کلاس مدیریتی و G4UserRunAction کلاس اختیاری کاربر برای تعاریف مورد نیاز است.
v Event به عنوان واحد پایه در شبیهسازی تعریف میشود، یعنی هر ذره تابشی یک Event در نظر گرفته میشود. در ابتدای فرایند، ردها (track) تولید میشوند و در پشته (stack) نگهداری میشوند. trackها از پشته یکی یکی خارج شده و ردیابی میگردند. نتایج ثانویه هر track دوباره به پشته ارسال میشود. این فرایند تا تمام شدن پشته ادامه مییابد و وقتی پشته خالی شود یعنی یک event تمام شده است. کلاس G4Event اطلاعات یک event را در انتهای آن نمایش میدهد که شامل لیست ذزه ورودی و ذرات ایجاد شده در event است و همه ردها را به عنوان خروجی در خود دارد. G4EventManager کلاس مدیریتی و G4UserEventAction کلاس اختیاری کاربر برای تعاریف مورد نیاز است.
v Tracking: تصویر لحظهای ذره توسط track داده میشود. در آن همه کمیتهای فیزیکی متناظر به آن موقعیت وجود دارد و اطلاعات قبلی را در خود ندارد. کلاس G4Trac اطلاعات هر track را دارد. G4TrackingManager کلاس مدیریتی و G4UserTrackingAction کلاس اختیاری کاربر برای تعاریف مورد نیاز است. Track زمانی حذف میشود که:
o ذره از محیط شبیهسازی (جهان) خارج شود.
o واپاشی یا پراکندگی غیرالاستیک رخ دهد.
o انرژی جنبشی ذره به صفر برسد و فرایند “AtRest”ی نیاز هم نباشد.
o کاربر نیاز داشته باشد به طور دستی (مصنوعی) ذره را از بین ببرد (kill).
v Step: هر step شامل اطلاعات جزئی از یک track هست. یک track جمع stepها نیست. در عوض هر track با step به روزرسانی میشود.
در Geant4 همه ذرات تا آخرین مرحله از دست دادن همه انرژی جنبشی با توجه به فیزیک تعریف شده ردیابی میشوند. تنها محدودیت تعریف شده انرژی آستانه برای تولید ذرات ثانویه است. کاربر خود میتواند cut برای انرژی و برد و ... با توجه به مساله خاص خود تعریف کند.