Geant4-toolkit

Geant4-toolkit

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

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com

راهنمای اجرای مجازی Geant4

راهنمای اجرای مجازی Geant4


برای شروع کار با ابزار Geant4 استفاده از این روش پیشنهاد می گردد.  فرآیند نصب  زمان کمتری نیاز دارد و بسیار آسان تر از نصب واقعی آن در محیط لینوکس است. فقط باید یک اینترنت پرسرعت برای دانلود فایل اصلی داشته باشید و کمی حوصله!



  • ابتدا آخرین نسخه‌ی VMware Workstation Player  را دانلود و نصب کنید.
  • سپس از آدرس لینک  گزینه دوم یعنی G4.10.5_CentOS7_us را دانلود کنید.
  • حال از داخل سیستم مجازی، برنامه   G4.10.5_CentOS7_us را  مطابق شکل 1 و 2 اجرا کنید، سپس منتظر بمانید تا سیستم لود شود. می ‌توانید با کلیک راست روی G4.10.5_CentOS7_us و  انتخاب setting برنامه،  ram و ... اختصاص داده به اجرای مجازی را افزایش دهید.


شکل 1 

 شکل 2


  • اگر با خطای شکل 3 مواجه شدید از آدرس زیر به قسمت بایاس سیستم بروید  و روش ارائه شده در این لینک را اجرا کنید.

شکل 3


  • حال ابتدا گزینه home  را از  desktop انتخاب کنید و از قسمت آخرین گزینه‌ی منوی  سمت چپ، other locations و سپس computer را انتخاب کنید.
  • سپس از آدرس /usr/local/geant4.10.05/share/Geant4-10.5.0/examples مثال ها را به home  یا desktop سیستم منتقل کنید.
  • روش اجرای مثال شبیه‌ی نسخه واقعی است، فقط باید در قسمت اول آدرس دهی دستور cmake عبارت زیر را وارد کنید: cmake -DGeant4_DIR=$G4COMP 





اوبونتو؛من هستم چون ما هستیم

اوبونتو؛من هستم چون ما هستیم!


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

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

وقتی پژوهشگر علت این رفتار آنها را پرسید و گفت در حالی که یک نفر از شما می‌وانست به تنهایی همه‌ی میوه‌ها را برنده شود، چرا از هم جلو نزدید؟ آنها گفتند "اوبونتو" ؛ به این معنا که "چگونه یکی از ما می‌تواند خوشحال باشد، در حالی که دیگران ناراحت‌اند"؟


اوبونتو در فرهنگ "ژوسا" (فرهنگ مردم قبیله‌ای در آفریقای جنوبی) یعنی : "من هستم، چون ما هستیم".

اجزای DetectorConstruction و نحوه تعریف آنها-مقدماتی 1



اجزای DetectorConstruction  و نحوه تعریف آنها-مقدماتی (1)



برای درک بهتر لطفاً مثال B1  را باز کنید و سپس از فولدر src فایل B1DetectorConstruction را باز کنید.

در ابتدای فایل یک سری کلاس اصطلاحاً Include شده است که با توجه به تعاریف و توضیحات بعدی متوجه خواهید شد که برای مثال خاص خودتان نیاز هست که چه اجزایی را اضافه کنید.


اما یک تعداد فایل مشخص باید وجود داشته باشد که ابتد ا یک به یک آنها توضیح  داده می شود:


#include "B1DetectorConstruction.hh"

همان کلاس مکمل فایل‌تان است که در فولدر Include  قرار دارد و گاهی نیاز هست تغییراتی در آن انجام داد.

همان طور که قبلاْ‌ گفته شد به ازای هر کلاسی  در فولدر src‌ نیاز به مکمل آن در فولدر Include است.


#include "G4NistManager.hh"

#include "G4Material.hh"

برای تعاریف مواد در هندسه نیاز به فراخوانی این کلاس‌ها  از کتابخانه اصلی Geant4 است.
در geant4‌ می توان مواد زیر را تعریف نمود:
isotopes <> G4Isotope 
elements <> G4Element 
molecules <> G4Material 
compounds and mixtures <> G4Material
G4Isotope و  G4Element ویژگی های اتمی را توصیف می کنند مانند
Atomic number, number of nucleons, mass of a mole, shell energies, crosssections per atoms, ...
G4Material ویژگی های ماکروسکوپیک را تعریف می کند مانند
temperature, pressure, state, density – Radiation length, absorption length, etc…


#include "G4SystemOfUnits.hh"
#include "G4PhysicalConstants.hh"
تعریف همه‌ی کمیت‌ها و در همه کلاس‌ها  بهتر است حتماْ همراه با واحدش باشد تا بعدها در محاسبات دچار سردرگمی در ابعاد کمیت‌های تعریف شده نشوید. با فراخوانی این دو کلاس در هر  کلاسی، می توانید کمیت‌ها را همراه با ابعاد یا واحدشان به راحتی تعریف کنید. برای مثال
G4double width = 12.5 * m; 
G4double density = 2.7 * g/cm3;

واحدهای پایه در Geant4 ‌تعریف شده است و باقی واحدها از آن استخراج خواهد شد:
  • nanosecond (ns)
  • millimetre (mm)
  •  megaelectronvolt (MeV) 
  • unit charge (eplus) 
  • kelvin
  •  candela 
  • radian 
  • steradian

همچنین با کمک این دو کلاس می توانید اطلاعات خروجی تان را، برای مثال در چاپ در ترمینال، به صورت زیر تعریف کنید. طول stepsize‌ را بر اساس واحد طول متناسب با مقدار آن چاپ خواهد کرد. برای کمیت های دیگر نیز مانند انرژی و زمان و طول و ...می توان از این دستورات استفاده کرد: Length, Time, Energyو ...

با این دستور چاپ

G4cout << G4BestUnit(StepSize, "Length");

 خروجی در ترمینال نمایش داده خواهد شد طول گام به همراه واحدش است.


تعریف هندسه
فعلاً نیازی به دانستن چند خط اول این کلاس ندارید! سراغ خط زیر بروید. در داخل آن هندسه های مورد نظر تعریف شده است:
G4VPhysicalVolume* B1DetectorConstruction::Construct()
داخل این قسمت همه ی هندسه را می توان تعریف کرد 
}

ابتدا نیاز هست جهانی را در هندسه تعریف کنید که همه اجسام هندسه تان در آن قرار خواهد گرفت. معمولاْ هندسه جهان را به صورت مکعب و ساخته شده از خلا یا هوا در نظر می گیرند. همه ی اجسام دیگر در هندسه باید داخل جهان قرار بگیرند بنابراین نیاز است که ابعاد آن را طوری انتخاب کنید که همه ی سیستمی که طراحی خواهید کرد در آن ابعاد قرار بگیرد. مبدا مختصات جهان در مرکز هندسی آن  و در اینجا مرکز هندسی مکعب قرار دارد.


نیاز هست که سه بخش اصلی برای تک تک بخش‌های سیستم تعریف کنید. 

  1. هندسه و ابعاد شکل: مکعب، کره و ..
  2. جنس ماده سازنده: آب، هوا و...
  3. موقعیت هندسه در فضا: مکان و جهت هندسه در محیط

تعریف هندسه مساله

اولین بخش تعریف هندسه است. به این معنا که باید مشخص کنید حجم مورد نظرتان چه  هندسه ای است و چه ابعادی دارد. برای مثال کره هست یا مکعب یا .... و اندازه ابعادش چقدر است.

 با کمک دستورات زیر هندسه تعریف خواهد شد:


    G4Box* solidWorld =    

    new G4Box("World",                       //its name

    0.5*world_sizeXY, 0.5*world_sizeXY, 0.5*world_sizeZ);     //its size


یا


  G4Trd* solidShape2 =    

    new G4Trd("Shape2",                      //its name

              0.5*shape2_dxa, 0.5*shape2_dxb, 

              0.5*shape2_dya, 0.5*shape2_dyb, 0.5*shape2_dz); //its size


G4Box* solidWorld یعنی از کلاس G4Box یک هندسه به نام  solidWorld ساخته خواهد شد. گاهی برای برون کشی داده فقط نیاز به نام solid‌هندسه هست.

یا 

 G4Trd* solidShape2  یعنی از کلاس G4Trd یک هندسه به نام  solidShape2 ساخته خواهد شد.



در خط دوم مشخصات هر هندسه  تعریف می‌شود:

اسم کلی آن: "world" یا "Shape2"

‌ابعاد "world" یعنی  طول و عرض و ارتفاع آن:

0.5*world_sizeXY, 0.5*world_sizeXY, 0.5*world_sizeZ

  


  • توجه داشته باشید که معمولاْ ابعاد از مرکز هندسی شکل تعریف می شود. در اینجا شما هر کمیتی را به عنوان ابعاد وارد کنید, مکعب ساخته شده ابعاد‌ دو برابر آن خواهد داشت.


ابعاد "Shape2" یعنی طول (کمترین و بیشترین مقدار آن) و عرض (کمترین و بیشترین مقدار آن) و ارتفاع:  0.5*shape2_dxa, 0.5*shape2_dxb, 0.5*shape2_dya, 0.5*shape2_dyb, 0.5*shape2_dz



۴ نوع هندسه می توان تعریف کرد: 

  1. CSG (Constructed Solid Geometry) solids:  G4Box, G4Tubs, G4Cons, G4Trd, …
  2. Specific solids (CSG like) : G4Polycone, G4Polyhedra, G4Hype, … • G4TwistedTubs, G4TwistedTrap, …
  3. BREP (Boundary REPresented) solids: G4BREPSolidPolycone, G4BSplineSurface, ... & Any order surface …
  4. Boolean solids • G4UnionSolid, G4SubtractionSolid,...


تعریف موقعیت هندسه

حال باید موقعیت هندسه ساخته شده را تعیین کرد. مرکز جهان مرکز محور مختصات است و جهت خاصی را هم به آن نسبت نمی دهند زیرا معنایی ندارد. در مورد هندسه های بعدی که اجزای سازنده خواهند بود باید دقت کرد که محل شان و دروان شان (اگر وجود داشته باشد) باید نسبت به مرکز جهان و محورهای مختصات تعریف شده اولیه مشخص شود. هنگامی که هندسه ای درون هندسه ی دیگری قرار می گیرد باید دقت کرد که برای آن باید مادری تعریف کرد که آن را در بر گرفته است.



  G4VPhysicalVolume* physWorld = 

    new G4PVPlacement(0,                     //no rotation

                      G4ThreeVector(),       //at (0,0,0)

                      logicWorld,            //its logical volume

                      "World",               //its name

                      0,                     //its mother  volume

                      false,                 //no boolean operation

                      0,                     //copy number

                      checkOverlaps);        //overlaps checking


برای تعریف فیزیک به ترتیب دوران، محل مرکز جسم، نام logic‌ آن، نام کلی آن، نام مادر (اولین هندسه در بردارنده آن هندسه)، استفاده از متغیرهای بولین برای تعاریف هندسه های پیچیده تر، عدد کپی هندسه و در نهایت بررسی روی هم افتادگی تعربف خواهد شد. برای هندسه جهان دروان آن معنایی ندارد زیرا هندسه ی غیر از آن وجود ندارد. محل مرکز آن هم مرکز محور مختصات خواهد بود. اما برای هندسه های بعدی موقعیت شان باید با توجه به مرکز هندسی مادرشان تعریف شود. برای مثال شکل ۲ در هندسه دیگری به نام logicEnv قرار دارد. دقت کنید که نام logic‌ ‌مادر باید نوشته شود نه نام کلی آن!



  new G4PVPlacement(0,                       //no rotation

                    pos2,                    //at position

                    logicShape2,             //its logical volume

                    "Shape2",                //its name

                    logicEnv,                //its mother  volume

                    false,                   //no boolean operation

                    0,                       //copy number

                    checkOverlaps);          //overlaps checking




در انتهای کلاس دتکتور باید return physWorld;  وجود داشته باشد.




معرفی اجزای یک مثال 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 برنامه شبیه‌سازی شما تکمیل شده است به این معنا که با اجرای برنامه، با توجه به فیزیک تعریف شده، تابش تعریف شده در هندسه تعیین شده ردیابی خواهد شد تا جایی که با توجه به انرژی تابشی ذره و فیزیک و هندسه مساله امکان ردیابی آن باشد و همچنین تابش از محیط خارج نشده باشد.




برون کشی داده

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



نحوه اجرای مثال‌ها


نحوه اجرای  مثال‌ها با  روش cmake


  • در فولدر نصبی برنامه یعنی مسیر زیر مثال‌های معرفی شده  قرار دارند. یک کپی از آن را به home یا هر محل دیگری از سیستم عامل‌تان بیاورید.   ( ابتدا گزینه home  را از  desktop انتخاب کنید و از قسمت آخرین گزینه‌ی منوی  سمت چپ، other locations و سپس computer را انتخاب کنید. حال فولدر usr را پیدا کنید و ...)
 \usr\local\include\geant4.10.02\share\Geant4-10.2.3\examples\
  • به عنوان اولین مثال \basic\B1\ را انتخاب کنید.
  • کنار فولدر مثال‌تان یک فولدر با نام B1_build بسازید.
  • در فولدر B1_build ترمینال را باز کنید تا در همان مسیر، ترمینال باز شود.
  • برای اجرای برنامه به روش  cmake  باید دستورات زیر را وارد کنید. قسمت اول دستور مسیر کتابخانه Geant4  است و قسمت دوم مسیر محل قرارگیری سورس برنامه یعنی همان B1 است.
  • روش دیگر که ساده تر هست و نیازی به آدرس دهی ندارد، این است که درون فولدر مثال مورد نظر، یک فولدر به نام build بسازید و درون آن ترمینال را باز کنید و سپس برای  cmake کردن باید عبارت زیر را،  که بین عبارت و دونقطه فاصله هست را تایپ کنید. ادامه روش مشابه هست.
  • cmake  -DGeant4_DIR=/usr/local/include/Geant4-­10.3-install/lib/Geant4-­10.3     Home/examples/B1
  • خط اول روش اول است و خط زیر روش ساده تر است.
  • cmake ...
  •  سپس  دستور  make را وارد کنید.
  • اگر مثلاْ  j8- را بعد از دستور میک بنویسید تعداد هسته های سیستم را با آن عدد مشخص کردید. بنابراین برنامه سریع تر میک می شود.
  • در انتها نام برنامه را  که در انتهای make شدن در ترمینال می‌بینید به صورت exampleB1/. وارد کنید.
  • در این زمان باید محیط هندسی مثال تان را مشاهده نمایید.

چند نکته دیگر

  • می‌توانید  در محیط Qt عبارت  run/beamOn 100/ را تایپ کنید و تابش 100 ذره در محیط هندسه‌تان را مشاهده نمایید.
  • می‌توانید در محیط Qt عبارت      control/execute/ run1.mac  را به اضافه ی نام ماکرو مثل اینجا وارد کنید و فایل‌های ماکرو را اجرا نمایید.
  • دستورات ذکر شده را از منوی سمت چپ و گزینه help می‌توانید انتخاب کنید.
  • پیشنهاد می‌کنم باقی دستورات را هم نگاهی بیاندازید.
  • از منوی سمت چپ محیط و گزینه اول  (scene tree) هم می توانید به اجزای هندسه دسترسی داشته باشید و آنها را  با تیک زدن و نزدن،  خاموش و روشن کنید.
  • با تغییر دادن فایل‌های ماکرو، نیازی نیست برنامه make  شود. به عبارت دیگر فایل ماکرو خارج از محیط برنامه نویسی است و تغییراتش را می‌توان به طور مستقیم با اجرای دوباره مثال مشاهده کرد.
  • اگر در کلاس‌های src یا include یا main  برنامه تغییری دادید، حتماً قبل از اجزای مثال باید make کنید.
  • تنها زمانی به cmake  کردن نیاز دارید که فایلی با پسوند .hh  و .cc به کلاس های برنامه اضافه کرده باشید.
  • در فایل vis.mac هم با کامنت کردن عبارت vis/open OGL 600x600-0+0/#  (علامت کامنت کردن #) می‌توانید نمایش هندسه را خاموش کنید. هنگامی که از برنامه طراحی شده‌تان مطمئن شدید، پیشنهاد می‌کنم حتماً برای اجراهای اصلی‌تان، هندسه را خاموش کنید.



به دنیای Geant4 خوش آمدید.


نصب Geant4


نصب geant4 بر روی سیستم عامل لینوکس


نصب پیش‌نیازها


  1. ابتدا سیستم عامل را با دستورات زیر آپدیت و آپگرید نمایید:
  2.  sudo apt-get update و sudo apt-get upgrade
  3. سپس کتابخانه‌های مورد نیاز را نصب کنید.
  4.  پیشنهاد می‌دهم هر برنامه را جداگانه نصب کنید تا از نصب تک تک کتابخانه‌ها مطمئن شوید. زیرا نصب نشدن هر کتابخانه مساوی است با دیدن خطایی خاص هنگام نصب برنامه!
  5.  همچنین اگر برای نصب هر کتابخانه خطایی مشاهده کردید با جستجو در انجمن‌های معرفی شده حتماً راه حل مناسب را خواهید یافت. 
  6. می‌توانید در قسمت نظرات هم خطای خود را اعلام بفرمایید. 


  • sudo apt-get install g++ 
  • sudo apt-get install  libxmu-dev 
  • sudo apt-get install  freeglut3-dev
  • sudo apt-get install  mesa-common-dev
  • sudo apt-get install  mesa-utils
  • sudo apt-get install  libglu1-mesa
  • sudo apt-get install libgl1-mesa-dev
  • sudo apt-get install  libgl1-mesa-dri
  • sudo apt-get install  libxi-dev 
  • sudo apt-get install  libxerces-c-dev
  • sudo apt-get install expat 
  • sudo apt-get install libexpat-ocaml
  • sudo apt-get install libexpat-ocaml-dev 




  • نصب cmake نسخه 3.5 به بالا
    •  از سایت سی میک   نسخه مرتبط به لینوکس  Uinx/Linux Source با فرمت  tar.gz. را دانلود کنید.
    • سپس آن را  extract کنید.
    • حال در فولدر برنامه ترمینال را در همان آدرس باز کنید و دستور  configure/.   را وارد و اجرا کنید.  اگر فایل درست دانلود شده باشد، با نوشتن حرف اول دستور و زدن کلید tab باید دستور کامل شود.
    • سپس make  کنید. (دستور make  را در ترمینال وارد کنید.)
    • در نهایت make install  را وارد کنید. 
    • اگر هنگام نصب برنامه با خطای دسترسی به مسیر نصب مواجه شدید  عبارت sudo  را قبل از دستور اصلی وارد کنید و  نصب برنامه را پیش ببرید.

    دانلود Geant4

    •  آخرین نسخه را از منوی سمت راست سایت اصلی دانلود کنید.
    • سعی کنید نسخه بتا را دانلود نکنید.
    •  پیشنهاد می‌شود حتماً از یک نرم افزار دانلود برنامه مثل Internet Download Manager  استفاده کنید. زیرا ممکن است فایل ها به طور کامل دانلود  نشوند.
    • فایل‌های زیر را دانلود کنید.


    نصب Geant4

    • گرافیک برنامه
      • اگر برای دیدن گرافیک برنامه علاقمند به دیدن تصاویر سه بعدی هستید پیشنهاد می‌شود Qt را نصب کنید. 
      • البته برنامه‌های دیگری را تیم اصلی پیشنهاد داده است که به فراخور نیازتان می‌توانید آنها را انتخاب کنید. 
      • برنامه qt  را باید قبل از نصب Geant4، با دستور زیر در ترمینال نصب کنید:

     sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls

    • نصب Geant4
      • پیشنهاد می‌شود مسیر نصب را /usr/local/include/ انتخاب نمایید. ( ابتدا گزینه home  را از  desktop انتخاب کنید و از قسمت آخرین گزینه‌ی منوی  سمت چپ، other locations و سپس computer را انتخاب کنید. حال فولدر usr را پیدا کنید و ...)
      • با نوشتن دستور sudo  chmod  ­-R  777 /usr/local/include در ترمینال،  دسترسی به این مسیر برای نصب و اجرای برنامه‌ها به وجود خواهد آمد.  در غیر این صورت حین اجرای مثال ها با مشکل مواجه خواهید شد.
      • همه‌ی فایل‌های دیتا (تصویر دوم دانلودها) را در این مسیر و در فولدری به نام data  قرار دهید. نیازی به extract کردن آنها نیست.
      • فایل سورس برنامه (تصویر اول دانلود) را هم در این مسیر و کنار فولدر data   قرار دهید. البته باید آن را  extract  کرده باشید.
      • به اسم فولدر برنامه source_  اضافه کنید که حین نصب برنامه برایتان مشخص باشد.
      • یک فولدر با نام build در کنار data و source برنامه بسازید تا نصب را در آن فولدر ادامه دهید.
      • حال به مسیر زیر بروید: /usr/local/include/geant4­-10-3_source/cmake/Modules
      • فایل Geant4InstallData.cmake را پیدا کنید و در آن با ctrl+f عبارت cern را جستجو کنید تا عبارت زیر را بیابید: 


    set GEANT4_DATASETS_URL  http://geant4.cern.ch/support/source
      • حال به جای آدرس سایت سرن محل قرارگیری فایل data خودتان را جایگذاری کنید. یعنی /usr/local/include/data/
      •  با این کار به جای دانلود مستقیم از سایت سرن و نیاز به اینترنت و ... دیتاها از روی سیستم خودتان خوانده خواهد شد.
      • حال به فولدر build بروید و ترمینال را در آن آدرس باز کنید. سپس عبارت زیر را در آن وارد کنید و کلید inter را بزنید.

  • cmake -DCMAKE_INSTALL_PREFIX=/usr/local/include/geant4.10.03          /usr/local/include/geant4.10.03_source -DGEANT4_INSTALL_DATA=ON -DGEANT4_INSTALL_EXAMPLES=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_GDML=ON -DGEANT4_USE_RAYTRACER_X11=ON  -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_USE_QT=ON

        • آدرس اول /usr/local/include/geant4.10.03  محل نصب برنامه است و آدرس دوم /usr/local/include/geant4.10.03_source محل قرارگیری سورس برنامه است. می‌توانید به آدرس اول یک پسوند Install اضافه کنید تا برایتان واضح‌تر شود.
        • اگر پیش نیاز qt را نصب کرده‌اید می‌توانید GEANT4_USE_QT=ON- را در cmake باقی بگذارید. با این کار برنامه گرافیکی شما قابلیت‌های خوبی را برای نمایش گرافیک خواهد داشت.
        • اگر این دستور را در این مرحله وارد نکنید برنامه گرافیکی شما برنامه ساده opengl خواهد بود.
        • با  قرار دادن  DGEANT4_BUILD_MULTITHREADED=ON-  در دستور نصب قادر خواهید بود با دستوراتی در برنامه‌‌هایتان همه core های سیستم را در حین اجرای برنامه درگیر کنید.
        • بعد از اتمام این مرحله، make را در ترمینال وارد کنید. با نوشتن  make -j5 در حین اجرای برنامه مثلاً 5 هسته سیستم درگیر خواهد شد و فرایند نصب سریع‌تر پیش می‌رود.
        • این مرحله زمان بیشتری نسبت به مراحل دیگر نیاز دارد.
        • پس از اتمام این مرحله،  make install را در ترمینال وارد کنید. 
        • قاعدتاً نباید مشکل و خطای دسترسی ببینید. با نوشتن عبارت sudo  قبل از دستور بالا، این مشکل رفع خواهد شد.  (حتماْ حواستان باشد که باید دستور sudo  chmod  ­-R  777 .... را قبل از شروع فرآیند نصب زده باشید و دیدن خطا در این مرحله می تواند به دلیل فراموش کردن وارد کردن این دستور باشد.)
        • در مرحله آخر نصب باید در home سیستم عامل تان،  با  کلید ترکیبی ctrl+h فایل مخفی شده  bashrc. را نمایان کنید. سپس دو خط زیر را با توجه به مسیر فولدر Geant4 نصب شده در انتهای فایل وارد کنید. برای اینکه اشتباه تایپی و ... رخ ندهد بهتر است که به  آدرس مشخص شده بروید و با زدن ctrl+l آدرس بار محل نمایان می‌شود و حال همان را در انتهای فایل .bashrc وارد کنید.
    • source    /usr/local/include/geant4.10.02-install/bin/geant4.sh
    • source   /usr/local/include/geant4.10.02-install/share/Geant4-10.2.3/geant4make/geant4make.sh

    • برای مشاهده‌ی فایل های C++ می توانید برنامه ویرایش متن  geany  را با دستور  sudo apt-get install geany نصب کنید.


      اما پیشنهاد می کنم حتماْ ویراستار eclipse را  به عنوان ادیتورتان انتخاب کنید تا بتوانید حرفه ای تر کار کنید.


      حال نصب برنامه شما با موفقیت انجام شده است.



      برای اطمینان از نصب کامل و در ست برنامه، به این لینک بروید و یک مثال را اجرا کنید.


      مقدمه (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