Geant4-toolkit

Geant4-toolkit

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

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com

Geant4 Installation Guide

Contact me: geant4.toolkit.zabihiATgmail.com

GEANT4 installation on Ubuntu

There are several ways to install Geant4 on your computer. Which one is available or best for you depends on both your operating system and usage requirements. In all cases, always use the most recent Geant4 release to ensure use of the latest bug fixes, features, and help the developers and community to provide quick user support. Here, I describe my way:)

To install Geant4 there are several steps. Just follow them carefully.

Step 1 – Update and Upgrade :


First of all, you must update and upgrade your Ubuntu platform. For doing that, it's better to change Ubuntu update center's setting. So  follow bellow steps: 

  •  Search ''update'' on Ubuntu's search engine and then select ''software updater'' then choose setting. In the first tab of setting page , change ''download from'' from ''server for your country'' to ''main server'' and also tick the check marks like bellow figure. Untick (deselect) “restricted” parts.


  • In the next tab (other softwares) just tick the ''source code''s and deselect all other parts. Then close the window.

Now enter commands in terminal for updating and upgrading platform  and wait to complete the process.
  •  sudo apt-get update
  • sudo apt-get upgrade

      Step 2 – Software Required to Build Geant4

      Enter bellow commands in terminal one by one and wait to complete (Be sure have seen "done" for each one).

      Note: pay attention about the probable error and notification, all of the processes should be finished correctly. 

      *  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 



      Step 3 –  install CMake 3.3 or higher.

      Geant4 uses CMake to configure a build system for compiling and installing the toolkit headers, libraries and support tools.  In this step we must install CMake compiler on our platform. First go to cmake page and download the Uinx/Linux Source with .tar.gz format. (Source distributions:)

      Then unpack downloaded file and copy the folder in your home page or any directory you want. Now open cmake folder and open terminal in the same folder (directory). Then write three bellow commands one by one. Wait to complete the configuring and making installation. When configuring complete you must face with comment like this: ''CMake has bootstrapped. Now run make'' 

      • ./configure (If  the downloaded file is complete, just type two frist letters then click the tap key. It must be filled out)
      • make -j6 (6 is number of core  of your system)
      • make install

      NOTE: When you enter this command and face with an error which said , cmake couldn't make a folder in a certain path because it became denied by ubuntu , use bellow command in each path to make it possible to create folders in that path. Or just add sudo before make or make install 
      • sudo chmod ¬R 777 /path

      Step 4 –  install QT

      Just type on your terminal:
       sudo apt-get install qtdeclarative5-dev qml-module-qtquick-controls

        Step 5 –  install GEANT4

        First go to  geant4 homepage and download source file and data files. 


        After download, just extract source file and leave data files compact and then copy both folder (data and geant4-source) to ''/usr/local/include/'' . Before copying the files, please type this command on terminal

        • sudo chmod ¬R 777 /usr/local/include/
        Then create a build folder beside your source folder. Finally, you would have three folders (data – geant4-source – geant4-build)
        Now go to this path "/usr/local/include/geant4-source/cmake/Modules". Then find and open  ''Geant4InstallData.cmake'' file and press Ctrl+F and type '' cern '' to find a CERN's URL. Now delete the URL (as follow)
        set GEANT4_DATASETS_URL  http://geant4.cern.ch/support/source 
        Now replace the data folder's path :
        set GEANT4_DATASETS_URL     /usr/local/include/data/
        Save the file and  go back to geant4-build and right-click and select open in the terminal and then enter following commands:

        cmake -DCMAKE_INSTALL_PREFIX=/usr/local/include/geant4.10.07_install 
        /usr/local/include/geant4.10.07_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


        This is the installation path (will create once installation done): /usr/local/include/geant4.10.07_install    
        And this is the source path:  /usr/local/include/geant4.10.07_source 

        Replace 'geant4.10.07' with your version.
        Note
        : pay attention to see  
        ''configuring done''


        Then type:

            • make ­-jn

        If your computer has n core you should enter n after j. The last command for installing geant4 is mentioned here:

            • make install


        Step6 –  Configuring the Environment

        Go to Home page on your computer and unhidden files in this directory by pressing Ctrl+H and then open '' .bashrc '' file and copy these two commands at the end of these text files and save it:
        source /usr/local/include/geant4.10.07/bin/geant4.sh
        source /usr/local/include/geant4.10.07/share/Geant4-10.7.2/geant4make/geant4make.sh

        Check the exact directory with your system.


        Step7 –  Run an example

        To run a project  first go to example's directory in 

         /usr/local/include/geant4.10.7_install/share/Geant4­10.7

         and copy'' examples'' folders in home page. Now open example in home directory an then choose one of three folders (Basic/B1 )

        Then  create a Build folder inside the B1 folder. Go to the Build folder and open terminal and type:

        cmake ..

        then

        make -jn

        then

        ./exampleB1

        Download PDF  file (Geant4 Installation Guide).


        Tutorial on Geant4 for users interested to begin or improve their usage of Geant4:  25-31 May 2021 CERN

        Geant4 First Steps Course:  John Apostolakis

        Google it:      geant4 site:videos.cern.ch   

        آموزش ویدیویی جینت ۴


        Contact me: geant4.toolkit.zabihiATgmail.com

        در این کانال یوتیوپ   و کانال آپارات سعی خواهم کرد همه مفاهیمی که از جینت ۴ می دانم را به زبانی بسیار ساده آموزش بدهم.  امیدوارم  مفید واقع شود.










        کاربردهای ابزار شبیه ساز Geant4-ژورنال کلاب دانشگاه شیراز

        در این وبینار به معرفی ابزار Geant4 پرداخته ام 

        و  کاربردها ی آن را بر اساس تجربیات خودم و با نگاه به مساله DNA بیان کرده ام.


        لینک فیلم در آپارات

        دانلود فایل پاورپوینت

        دانلود فیلم در وبلاگ


        نکات مهم C++ -بخش دوم

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

         این صفحه هم آموزش خوبی به زبان فارسی دارد.






        نکات مهم C++ -بخش اول


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

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

         این صفحه هم آموزش خوبی به زبان فارسی دارد.








        اجزای 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;  وجود داشته باشد.




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

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

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


        الگوریتم

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

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

        • زبان C++

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




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


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


            در Geant4 سه مدل مثال تعریف شده است:

                v     Basice: مثال‌های بسیار ساده‌ای هستند که برای کاربران تازه کار بسیار مفید خواهند بود. با مطالعه این مثال‌ها کاربر آشنایی نسبتاً خوبی با اجزای مختلف Geant4 پیدا خواهد کرد.

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

                v     Advanced: برنامه‌های کاربردی به صورت مثال‌های کاملی در آن قرار دارند. البته کاربران می‌توانند با توجه به نیاز خود آنها را اصلاح نماید.



             

            Basice level examples

            ExampleB1

               - Simple geometry with a few solids

               - Scoring total dose in a selected volume user action classes

              

             ExampleB2

               - Simplified tracker geometry with global constant magnetic field

               - Scoring within tracker via G4 sensitive detector and hits

               - Started from novice/N02 example

              

             ExampleB3

               - Schematic Positron Emitted Tomography system

               - Radioactive source

               - Scoring within Crystals via G4 scorers

             

             ExampleB4

               - Simplified calorimeter with layers of two materials

               - Scoring within layers in four ways: via user actions (a), via user own

                 object (b), via G4 sensitive detector and hits (c) and via scorers (d)

               - Started from novice/N03 example

             


            Extended level examples

             analysis

               - Histogramming through the AIDA interface

             biasing

               - Examples of event biasing, scoring and reverse-MC

             common

               - A set of common classes which can be reused in other examples demonstrating

                 just a particular feature 

             electromagnetic

               - Specific EM physics simulation with histogramming

             errorpropagation

               - Use of the error propagation utility (Geant4e)

             eventgenerator

               - Applications using interface to HepMC

             exoticphysics

               - Exotic simulation applications (classical magnetic monopole, etc...)

             field

               - Specific simulation setups in magnetic field

             g3tog3

               - Examples of usage of the g3tog4 converter tool

             geometry

               - Specific geometry examples and tools: OLAP tool for detection

                 of overlapping geometries

             hadronic

               - Specific hadronic physics simulation with histogramming

             medical

               - Specific examples for medical physics applications

             optical

               - Examples of generic optical processes simulation setups

             parallel

               - Examples of event-level parallelism in Geant4 using either the

                 TOP-C library, Intel-TBB library or MPI technique

             parameterisations

               - Examples for fast shower parameterisations according to specific models

             persistency

               - Persistency of geometry (GDML or ASCII) and simulation output

             polarisation

               - Use of physics processes including polarization

             radioactivedecay

               - Examples to simulate the decays of radioactive isotopes and

                 induced radioactivity resulted from nuclear interactions

             runAndEvent

               - Examples to demonstrate how to connect the information between

                 primary particles and hits and utilize user-information classes

             visualization

               - Specific visualization features and graphical customisations

             


            Advanced level examples

             air_shower

               - Simulation of the ULTRA detector for UV and charged particles

                 detection in cosmic rays

             amsEcal

               - Simplified AMS Ecal calorimeter structure

             brachytherapy

               - Setup for brachytherapy Ir-192 HDR source

             ChargeExchangeMC

               - Charge Exchange Monte Carlo

             composite_calorimeter

               - Test-beam simulation used in CMS against real data taken

                 in 1996 in a CMS Hadron calorimeter test-beam at LHC

             dnageometry

               - Setup of a realistic nucleus model of a cell, including chromosomes,

                 in combination with Geant4-DNA physics

             eRosita

               - Simplified eROSITA X-ray telescope setup for instrumental background

                 simulations for fluorescence measurements.

             gammaknife

               - Application specifically developed to simulate an advanced device for

                 Stereotactic Radiosurgery; reproduces a Leksell Gamma-Knife unit model C

             gammaray_telescope

               - Simulation of a typical telescope for gamma ray analysis

             hadrontherapy

               - Simulation of a hadron therapy beam line

             human_phantom

               - Anthropomorphic phantoms (male and female) based on MIRD/ORNL model

                 with geometry description derived from GDML persistent files

             iort_therapy

               - Application specifically developed to address typical needs related to

                 the Intra-Operative Radio-Therapy (IORT) technique

             lAr_calorimeter

               - Simulation of the Liquid Argon Calorimeter of the ATLAS

                 Detector at LHC

             medical_linac

               - Simulation of energy deposit in a Phantom filled with water

                 for a typical linac used for intensity modulated radiation therapy

             microbeam

               - Simulation of the cellular irradiation beam line installed on the AIFIRA

                 electrostatic accelerator facility located at CENBG, France

             microelectronics

               - Simulating tracks of a 5 MeV proton in silicon.

             nanobeam

               - Simulation of the beam optics of the nanobeam line installed on the AIFIRA

                 electrostatic accelerator facility located at CENBG, France.

             purging_magnet

               - Simulation of electrons traveling through a 3D magnetic field of a

                 strong purging magnet used for treatment head in a medical environment

             radioprotection

               - Modeling a simplified diamond microdosimeter for radioprotection

                 applications in space environments.

             underground_physics

               - Setup of an underground dark matter experiment

             xray_fluorescence

               - Test beam to characterize the response function of an

                 HPGe detector used to measure fluorescence emissions

             xray_telescope

               - Realistic simulation of an X-ray Telescope

             

             

             

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