Geant4-toolkit

Geant4-toolkit

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

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com

اجزای 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


در 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