پیشنهاد می کنم حتماْ ویراستار eclipse را به عنوان ادیتورتان انتخاب کنید. |
چند نکته مهم برنامه نویسی C++ را از کتاب برنامه سازی پیشرفته انتشارات پیام نور و نویسندگی دکتر احمد فراهی انتخاب کردم که برای آشنایی با بخشها و کلاسهای مختلف Geant4 میتواند مفید باشد. خود کتاب را هم از طریق این لینک برنامه سازی پیشرفته انتشارات پیام نور میتوانید دانلود نمایید.
این صفحه هم آموزش خوبی به زبان فارسی دارد.
معرفی اجزای یک مثال Geant4
هر مثال به صورت فولدری هست که از دو فولدر src و include و تعدادی فایل تشکیل شده است. برای درک و آَشنایی بهتر لطفاً از قسمت مثالها و فولدر basic مثال B1 را باز کنید.
دقت کنید که با اضافه شدن کلاسی به برنامه، باید دوباره cmake انجام دهید. ولی برای تغییرات در هر کلاس فقط نیاز به make کردن هست. |
حال به فولدر src بروید.
با تعیین شدن این سه کلاس اصلی یعنی Physicslist، PrimaryGeneratorAction و DetectorConstruction برنامه شبیهسازی شما تکمیل شده است به این معنا که با اجرای برنامه، با توجه به فیزیک تعریف شده، تابش تعریف شده در هندسه تعیین شده ردیابی خواهد شد تا جایی که با توجه به انرژی تابشی ذره و فیزیک و هندسه مساله امکان ردیابی آن باشد و همچنین تابش از محیط خارج نشده باشد.
برون کشی داده
برای داشتن اطلاعات رخ داده در هر بخش هندسه، باید کاربر اطلاعات مورد نظر را خودش مشخص کند و سپس به کمک دستوارت و کلاسهای خاصی استخراج کند. برای اطلاعات بیشتر این صفحه را ببنید.
نصب geant4 بر روی سیستم عامل لینوکس
نصب پیشنیازها
دانلود Geant4
نصب Geant4
برای مشاهدهی فایل های C++ می توانید برنامه ویرایش متن geany را با دستور sudo apt-get install geany نصب کنید.
اما پیشنهاد می کنم حتماْ ویراستار eclipse را به عنوان ادیتورتان انتخاب کنید تا بتوانید حرفه ای تر کار کنید.
حال نصب برنامه شما با موفقیت انجام شده است.
برای اطمینان از نصب کامل و در ست برنامه، به این لینک بروید و یک مثال را اجرا کنید.
دانش پایهی C++
برای برنامه نویسی با ابزار Geant4 و انجام تغییرات در آن نیاز هست که زبان C++ را بفهمید. همچنین با مفاهیم الگوریتم نویسی آشنا باشید و بتوانید دستوراتی را به برنامه خاص خودتان اضافه کنید.
الگوریتم
برای آشنایی با مفاهیم الگوریتم نویسی این چند لینک را ببینید.
زبان C++
برای آشنایی با مفاهیم پایه برنامه نویسی C++ این چند لینک را ببینید.
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 برای انرژی و برد و ... با توجه به مساله خاص خود تعریف کند.