Geant4-toolkit

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com
Geant4-toolkit

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com

معرفی اجزای یک مثال Geant4



معرفی اجزای یک  مثال Geant4


 هر مثال  به صورت فولدری هست که از دو فولدر src و include و تعدادی فایل تشکیل شده است. برای درک و آَشنایی بهتر لطفاً از قسمت مثال‌ها و فولدر basic مثال B1 را باز کنید.

  • در فولدر اصلی یک فایل با عنوان  exampleB1.cc  قرار دارد که از این به بعد به عنوان main  برنامه نامیده می‌شود. این فایل با پسوند cc. فایل اصلی‌اس است که ارتباط بین اجرای برنامه را نشان خواهد داد.
  •  فولدر src و  include شامل اجزای سازنده برنامه هستند. می‌توان گفت اکثر تغییرات باید در کلاس‌های فولدر src رخ بدهد.
  • به ازای هر کلاسی که در فولدر src با پسوند cc وجود دارد، کلاس مشابه آن در فولدر include و با پسوند hh باید وجود داشته باشد. به این معنا که اگر در برنامه‌ای نیاز بود کلاسی به برنامه‌تان اضافه کنید باید هر دو بخش در فولدرها کپی کنید.



دقت کنید که با اضافه شدن کلاسی به برنامه، باید دوباره cmake انجام دهید. ولی برای تغییرات در هر کلاس فقط نیاز به make کردن هست.



حال به فولدر src بروید.

  • اولین کلاس که B1ActionInitialization نام دارد، کلاسی است که به شما کمک خواهد کرد برنامه را به روش موازی یعنی درگیر کردن همه coreهای سیستم اجرا کنید. این روش در نسخه‌های 4.10 به بالا به برنامه اضافه شده است و روش MULTITHREADED مالتی ترد نام دارد. برای اطلاعات بیشتر این قسمت را ببینید.


  • دومین کلاس B1DetectorConstruction نام دارد. در این کلاس اجزای سازنده شبیه‌سازی‌تان را وارد خواهید کرد. ابتدا باید یک فضا به نام جهان بسازید. سپس همه اجزای دیگر در آن قرار خواهند گرفت. به عبارت دیگر مختصات اجزای اصلی نسبت به مبدأ جهان تعریف خواهد شد. برای هر هندسه‌ای که تعریف می‌کنید ابتدا باید تعیین کنید که شکل هندسی آن چیست مانند اینکه کره هست یا مکعب یا .... سپس جنس آن را باید تعیین کنید یعنی از آب ساخته شده است یا سرب یا .... سپس محل قرارگیری و جهت آن را  باید نسبت به مادرش مشخص کنید. برای اطلاعات بیشتر این قسمت را ببنید.


  • سومین کلاسی که در همه مثال‌ها مشاهده خواهید کرد کلاس B1PrimaryGeneratorAction است. در این کلاس کیفیت و کمیت تابش وارد شده به هندسه مساله باید تعیین کنید. یعنی چه ذره تابشی، با چه انرژی، در چه جهتی و از کجا و چگونه بتابد. برای اطلاعات بیشتر این قسمت را ببینید.


  • با تعیین هندسه مساله و نوع تابش، نیاز هست که فیزیک رخدادها نیز تعیین گردد. به این معنی که آن ذره تابشی به چه طریقی در محیط یا همان هندسه مساله ردیابی بشود. به  این کلاس Physicslist می‌گویند. در نسخه‌های جدید Geant4 یعنی بالای 10  این امکان وجود دارد که شما  در main  برنامه بسته فیزیک لیست را معرفی کنید. در مثال B1 از یک بسته خاص فیزیک استفاده شده است. اگر به فولدر اصلی برنامه برگردید و main آن را باز کنید می‌توانید فیزیک لیست تعیین شده را ببینید "QBBC". با ctrl+F به راحتی کلمات یا دستورات دلخواه را در برنامه پیدا کنید.



با تعیین شدن این سه کلاس اصلی یعنی Physicslist، PrimaryGeneratorAction و DetectorConstruction برنامه شبیه‌سازی شما تکمیل شده است به این معنا که با اجرای برنامه، با توجه به فیزیک تعریف شده، تابش تعریف شده در هندسه تعیین شده ردیابی خواهد شد تا جایی که با توجه به انرژی تابشی ذره و فیزیک و هندسه مساله امکان ردیابی آن باشد و همچنین تابش از محیط خارج نشده باشد.




برون کشی داده

برای داشتن اطلاعات رخ داده در هر بخش هندسه، باید کاربر اطلاعات مورد نظر را خودش مشخص کند و سپس به کمک دستوارت و کلاس‌های خاصی استخراج کند. برای اطلاعات بیشتر این صفحه را ببنید.



دانش پایه‌ی C++

دانش پایه‌ی C++

برای برنامه نویسی با ابزار Geant4 و انجام تغییرات در آن نیاز هست که زبان C++ را بفهمید. همچنین با مفاهیم الگوریتم نویسی آشنا باشید و بتوانید دستوراتی را به برنامه خاص خودتان اضافه کنید.


الگوریتم

برای آشنایی با مفاهیم الگوریتم نویسی این چند لینک را ببینید.

  • الگوریتم چیست؟ مثال‌هایی ساده از الگوریتم در برنامه‌نویسی
  • الگوریتم را به زبان بسیار بسیار ساده یاد بگیریم
  • آموزش الگوریتم و الگوریتم نویسی

  • زبان C++

      برای آشنایی با مفاهیم پایه برنامه نویسی C++ این چند لینک را ببینید.




      مقدمه (2)-آشنایی با ابزار Geant4


      دانش‌های پایه مورد نیاز برای استفاده از Geant4


      v     C++: ابزار Geant4 بر پایه آن نوشته شده است. لزومی ندارد یک برنامه نویس حرفه‌ای باشید، فقط کافی است که با مفاهیم برنامه نویسی و ساختار الگوریتم‌ها آَشنا باشید. بتوانید آن را درک کنید. موارد خاص خودتان را در مثال‌ها پیدا کنید و در مواردی بسیار نادر و البته آسان آنها را بنویسید. این لینک را ببنید.

      v     مفهوم شی‌گرایی (Object Oriented Technology): یک شیوه برنامه‌نویسی است که ساختار یا بلوک اصلی اجزای آن، شی‌ها می‌باشند. در واقع در این شیوه برنامه‌نویسی، برنامه به شی گرایش پیدا می‌کند. به این معنا که داده‌ها و توابعی که قرار است بر روی این داده‌ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع‌بندی شده و یک واحد (شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می‌شوند و از این طریق، توابع بیگانه‌ی خارج از آن شی، دیگر امکان ایجاد تغییر در داده‌های درون آن شی را ندارند. در برنامه‌های خیلی پیشرفته از این مفهوم استفاده خواهد شد و کاربر معمولی فقط باید بداند که Geant4 با این روش تمام پیش‌نیازهای اصلی برای شبیه‌سازی را یک بار ساخته است و او باید فقط قادر باشد آنها را درک و استفاده نماید. همچنین در صورت لزوم امکان اصلاح و سفارشی کردن اجزا با توجه به نیاز کاربر وجود دارد.

      v     Unix/Linux: محیط استاندارد برای اجرا است و بنابراین باید آشنایی مختصری با محیط و نیز اجرای کدهای C++ در آن وجود داشته باشد. در محیط ویندوز هم قابل Geant4 امکان اجرا دارد اما پیشنهاد تیم سازنده استفاده از محیط لینوکس است.  اینجا را ببنید.


      زمینه‌های کاربرد 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 خواهیم داشت.


      هسته 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 برای انرژی و برد و ... با توجه به مساله خاص خود تعریف کند.

      مقدمه (1)-آشنایی با ابزار Geant4

      به نام رب رحمن

      مقدمه-آشنایی با ابزار Geant4


      مروری کوتاه بر توانایی‌ها و چگونگی استفاده از ابزار Geant4 در شبیه‌سازی‌ها‌:


      v     Geant4 ابزاری رایگان و منبع باز است.

      v     فایل منبع و کتابخانه‌ها و راهنمای کاربر و ابزار مورد نیاز از سایت http://cern.ch/geant4 قابل دانلود هست.

      v     مثال‌های مختلف و بسیاری در منبع برنامه وجود دارد که کمک بسیار ارزشمندی برای تسریع یادگیری و ساخت و اجرای برنامه شبیه‌سازی هر پژوهشگری خواهد بود.

      v     انجمن بسیار کاربردی به آدرس http://hypernews.slac.stanford.edu/HyperNews/geant4/top.pl برای به اشتراک گذاشتن و بحث درباره مسائل مختلف شامل گروه‌های مختلف وجود دارد. هنگامی که سوالی مطرح می‌شود تیم اصلی طراح ابزار هم در پاسخ‌دهی مشارکت بسیار خوبی دارند.

      v     Geant4 ابزاری قدرتمند و همچنین پیچیده‌ای هست.

      v     غیرممکن هست همه نکات آن در یک روز آموزش داده شود.

      v     غیرممکن هست همه نکات در یک روز یاد گرفته شود.

      v     این ارائه سعی در ایجاد یک چشم‌انداز کلی به Geant4 و روشی برای چگونگی استفاده از آن است.

      v     پیدا کردن مسیر درست استفاده در ابزار پیچیده Geant4 کار آسانی نیست.

      v     چشم انداز روشن به یادگیری بیشتر کمک خواهد کرد.


      شبیه‎‌سازی نقش مهمی در طراحی، ارزیابی عملکرد آزمایش و خطرات بالقوه، تست، توسعه و بهینه‌سازی در پروژه‌های آزمایشگاهی دارد. هدف ابزار Geant4 شبیه‌سازی عبور ذرات از ماده هست.

       

      Geant4 چه کارهایی برای شما می‌تواند انجام دهد؟

      1.      گام به گامِ عبور ذره در ماده و برهمکنش‌های رخ داده با آن و میدان‌های خارجی تعریف شده را ردیابی می‌کند تا زمانی که

      v     ذره همه انرژی جنبشی‌اش را از دست بدهد.

      v     به علت فرآیندهای فیزیکی ذره از بین برود.

      v     به مرز محیط شبیه‌سازی برسد.


      2.      کاربر قادر خواهد بود اطلاعات عبور ذره از ماده شامل جزئیات فرایندهای رخ داده در شبیه‌سازی را در مراحل زیر داشته باشد:

      v     در شروع و پایان عبور هر ذره

      v     در آغاز و شروع هر گام

      v     در هر محل خاص از سیستم طراحی شده توسط کاربر



      شما چه کارهایی برایGeant4 باید انجام دهید؟


      سه اطلاعات اساسی را باید در هر شبیه‌سازی فراهم سازید:


      v     طراحی هندسه شبیه‌سازی و تعریف مواد به کار رفته در آن

      v     تعریف نوع ذره تابشی به همراه انرژی، مکان و جهت و کیفیت چگونگی تابش

      v     انتخاب فیزیک مناسب با توجه به مواد هندسه شبیه‌سازی و نوع تابش


      در صورت نیاز می‌توان میدان‎‌های الکتریکی و مغناطیسی را هم اضافه نمود. با انجام این سه مرحله Geant4 تمام رویدادها را با توجه به هندسه طراحی شده و مواد آن و فیزیک مورد نظر ردیابی خواهد کرد.


      در نهایت با توجه به طراحی انجام شده، کاربر می‌تواند داده‌های مورد نیازش را از برنامه استخراج کند.



      مقدمه (2)-آشنایی با ابزار Geant4

      آشنایی با مثال‌های Geant4