برای درک بهتر لطفاً مثال B1 را باز کنید و سپس از فولدر src فایل B1DetectorConstruction را باز کنید.
برای دیدن جزییات دیگر تعریف هندسه، مطلب اجزای DetectorConstruction و نحوه تعریف آنها-مقدماتی1 را ببینید.
تعریف جنس ماده سازنده
پس از طراحی هندسه که چه شکلی هندسی دارد، باید ماده آن را هم تعیین کرد. معمولاً تعریف مادهها، قبل از شروع تعریف هندسه آورده میشود. برای تعریف ماده در جینت۴ چندین روش وجود دارد.
برای مثال در این روش از کتابخانه nist -در ابتدای کلاس DetectorConstruction فرخوانی شد- موادی که قبلاْ با پیشوند G4 تعریف شده اند با نام جدید در این مثال خاص فراخوانی میشوند. در این مثال ماده جهان هوا در نظر گرفته شده است.
G4NistManager* nist = G4NistManager::Instance();
G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR");
G4Material* env_mat = nist->FindOrBuildMaterial("G4_WATER");
G4Material* shape2_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");
}
////////////////////////////////////////////////////////////////
|
همچنین می توانید هنگامی که QT باز است از منوی سمت چپ و گزینه help، گزینه material را انتخاب کنید و مطابق شکل زیر به اطلاعات موجود در ابزار Geant4 دسترسی پیدا کنید.
به عبارت دیگر QT یک راهنمای در دسترس برای کاربران به کمک منوی help ایجاد کرده است.