Geant4-toolkit

Geant4-toolkit

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

Geant4-toolkit

Contact me: geant4.toolkit.zabihiATgmail.com

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

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

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

برای دیدن جزییات دیگر تعریف هندسه، مطلب  اجزای DetectorConstruction  و نحوه تعریف آنها-مقدماتی1 را ببینید.


تعریف جنس ماده سازنده


پس از طراحی هندسه که چه شکلی هندسی دارد، باید ماده آن را هم تعیین کرد. معمولاً تعریف ماده‌ها، قبل از شروع تعریف هندسه آورده می‌شود. برای تعریف ماده در جینت۴ چندین روش وجود دارد.

برای مثال در این روش از کتابخانه nist -در ابتدای کلاس DetectorConstruction فرخوانی شد- موادی که قبلاْ با پیشوند G4‌ تعریف شده اند با نام جدید در این مثال خاص فراخوانی می‌شوند. در این مثال ماده جهان هوا در نظر گرفته شده است. 


G4NistManager* nist = G4NistManager::Instance();

G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR");

G4Materialenv_mat = nist->FindOrBuildMaterial("G4_WATER");

G4Materialshape2_mat = nist->FindOrBuildMaterial("G4_BONE_COMPACT_ICRU");



سپس در قسمت logic آن ماده را به هندسه ساخته شده نسبت می دهیم.

 G4LogicalVolume* logicWorld =                         

    new G4LogicalVolume(solidWorld,          //its solid

                        world_mat,           //its material

                        "World");            //its name

 در این قسمت می توان حساسیت ماده و میدان الکتریکی و مغناطیسی را برای آن تعریف کرد (تعریف هندسه پیشرفته).  


‌به عنوان مثال دیگر B3a را ببینید که مولکولی ساخته شده است:

  G4Element*  O = man->FindOrBuildElement("O" , isotopes); 

  G4Element* Si = man->FindOrBuildElement("Si", isotopes);

  G4Element* Lu = man->FindOrBuildElement("Lu", isotopes);  

  

  G4Material* LSO = new G4Material("Lu2SiO5", 7.4*g/cm3, 3);

  LSO->AddElement(Lu, 2);

  LSO->AddElement(Si, 1);

  LSO->AddElement(O , 5);  

سپس به عنوان ماده نامیده می شود:


 G4Material* cryst_mat   = nist->FindOrBuildMaterial("Lu2SiO5");



یا مثال B4a‌ را ببنید که اتمی ساخته شده است که با کتابخانه nist متفاوت است:

  // Liquid argon material

  G4double a;  // mass of a mole;

  G4double z;  // z=mean number of protons;  

  G4double density; 

  new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);

         // The argon by NIST Manager is a gas with a different density

سپس به عنوان ماده نامیده می‌شود:


/ Get materials

  G4Material* gapMaterial = G4Material::GetMaterial("liquidArgon");



یا doiPETDetectorConstruction.cc را در مثال /examples/advanced/doiPET/src را ببنید: 

پیشنهاد می شود تعریف ماده را مانند این مثال در کلاس مجزایی در دتکتور تعریف کنید.


////////////////////////// Define Materials ////////////////////


void doiPETDetectorConstruction::DefineMaterials()

{

G4NistManager* nist = G4NistManager::Instance();


//Define air

air = nist->FindOrBuildMaterial("G4_AIR");


//Define PMMA

pmma  = nist->FindOrBuildMaterial("G4_PLEXIGLASS"); //Default 1.19 g/cm3


//Define water

water  = nist->FindOrBuildMaterial("G4_WATER");


//Defining polyethylene from NIST and modifying the density

polyethylene = nist->BuildMaterialWithNewDensity("polyethylene","G4_POLYETHYLENE",0.959*g/cm3);

polyethylene->GetIonisation()->SetMeanExcitationEnergy(56*eV);


//polyethylene_NEMA, defualt density 0.94 g/cm3, and excitation energy = 57.4 eV

polyethylene_NEMA = nist->FindOrBuildMaterial("G4_POLYETHYLENE");



//Define expanded polystyrene by modifiying the density to mimic lung phantom used in phantom experiment

polystyrene = nist->BuildMaterialWithNewDensity( "polystyrene","G4_POLYSTYRENE",0.3*g/cm3); 


isotopes = false;


//Defile Aluminum material for the detetor cover

Aluminum = nist->FindOrBuildMaterial("G4_Al", isotopes);


//Define elements for the GSO  crystal (scintillator) 

O = nist->FindOrBuildElement("O" , isotopes); 

Si = nist->FindOrBuildElement("Si", isotopes);

Gd = nist->FindOrBuildElement("Gd", isotopes);  



//define GSO crystal for PET detector

GSO = new G4Material("GSO", 6.7*g/cm3, 3);

GSO->AddElement(Gd, 2);

GSO->AddElement(Si, 1);

GSO->AddElement(O,  5); 

crystalMaterial   = nist->FindOrBuildMaterial("GSO");

}


////////////////////////////////////////////////////////////////


یا این تعریف گاز را ببینید:
G4double density = 27. * mg/cm3;
G4double temperature = 325. * Kelvin;
G4double pressure = 50. * atmosphere;
G4Material* CO2 = new G4Material(“CO2‐Gas”, density,  nComponents=2,  kStateGas, temperature, pressure);
CO2‐>AddElement(elC, natoms=1);
CO2‐>AddElement(elO, natoms=2); 


با گشتن در مثال های مختلف می توانید تسلط کافی به تعریف ماده پیدا کنید.



همچنین می توانید هنگامی که QT باز است از منوی سمت چپ و گزینه help، گزینه material را انتخاب کنید و مطابق شکل زیر به اطلاعات موجود در ابزار Geant4 دسترسی پیدا کنید.


به عبارت دیگر QT یک راهنمای در دسترس برای کاربران به کمک منوی help ایجاد کرده است.