(Geometry And Tracking) Adnan Kılıç - Uludağ Üniversitesi GEANT4 (Geometry And Tracking) Adnan Kılıç - Uludağ Üniversitesi
GEANT4 TARİHSEL GELİŞİM İlk : CERN and KEK 1993 Fortran tabanlı Geant3'e modern hesaplama tekniğinin nasıl uygulanabilir? 1994 Sonbahar - resmi öneri – RD44 Nesne Yönelimli teknoloji-Cern Det. Araş. Geliş. Komitesi Avrupa, Japonya, Kanada and Birleşmiş milletlerde yüksek enerji fiziği deneylerindeki enstitüler ve üniversitelerden fizik programları ve yazılım mühendislerinden oluşan çok sayıda katılımcı Amaç, nükleer, hızlandırıcı, uzay and medikal fizik topluluğunun yararlanabileceği bir program
Her yıl 2 veya 3 sürüm sağlanmaktadır. Aralık ’94 – Proje başlama Nisan ’97 - ilk alpha Haziran ’98 - ilk beta Aralık ’98 - ilk Geant4 halka açık sürüm …........................................ …....................................... 17 Aralık ’04 - Geant4 versiyon 7.0 30 Haziran ’05 - Geant4 versiyon 7.1 16 Aralık ’05 - Geant4 versiyon 8.0 10 Şubat ’06 - Geant4 8.0-patch01 30 Haziran ’06 - Geant4 version 8.1 27 Temmuz ’06 - Geant4 8.1-patch01 Her yıl 2 veya 3 sürüm sağlanmaktadır. 17 Aralık 2010 Geant4 versiyon 9.4 Mevcut versiyon 2 Aralık 2011 Geant versiyon 9.5 27 Mart 2012 Geant4 versiyon 9.5-patch-01
Collaborators also from non-member institutions, including HARP PPARC Univ. Barcelona Lebedev Collaborators also from non-member institutions, including Budker Inst. of Physics IHEP Protvino MEPHI Moscow Pittsburg University Helsinki Inst. Ph.
Uygulama Alanları (HEP) BaBar Use of Geant4 in the Babar Detector Simulation ATLAS (LHC) Use of Geant4 in the ATLAS Detector Simulation CMS and OSCAR (LHC) Use of Geant4 in the CMS experiment GAUSS (LHCb) Use of Geant4 in the GAUSS simulation program of the LHCb experiment ALICE (LHC) Use of Geant4 in the ALICE Geant4 Simulation Fermilab Use of Geant4 at Fermilab for different applications ILC Use of Geant4 for the International Linear Collider project BDSIM Toolkit based on Geant4 for accelerator beamline simulation
Uygulama Alanları (Medical) GAMOS Geant4-based Architecture for Medicine-Oriented Simulations GATE Geant4 Application for Tomographic Emission G4EMU Geant4 European Medical User Organization G4MED (in Japanese) Geant4 Medical Physics in Japan G4NAMU Geant4 North American Medical User Organization
Uygulama Alanları (Space & Radiation) European Space Agency Geant4 Space Users' Home Page ESA Project Support XMM-Newton Radiation Environment. Space Environment Information System (SPENVIS) Dose Estimation by Simulation of the ISS Radiation Environment (DESIRE) Physics Models for Biological Effects of Radiation and Shielding QinetiQ Space Energetic Particle Transport and Interaction Modeling studies (SEPTIMESS) Radiation Effects Analysis Tools (REAT) MUlti-LAyered Shielding SImulation Software (MULASSIS) GLAST Gamma Ray Large Area Space Telescope
NEDEN BENZETİŞİME İHTİYAÇ DUYULUR ? Nükleer ve yüksek enerji fiziğinde benzetişime sıklıkla aşağıdaki nedenlerle gerek duyurlur: Deneysel kurulumun belirlenmesi Deneyde doğru sonuçlar alabilmek için detektör/zırhlama konumlarını optimize etmek Beklenen background ve radyasyon seviyelerini incelemek Analizde veya benzetişimde bir hata olup olmadığından emin olmak için benzetişim sonuçlarını deneyle karşılaştırmak Deneysel sonuçları benzetişim sonuçlarıyla ve teoriden gelen girdilerle düzeltmek
Bir fizik deneyinin benzetişimini yapabilmek için : Demet Hedef Detektör E&M alanlar Fizik Etkileşmeleri (hedef ve detektörde) ve tesir kesitleri
GEANT4'TE NELERE İHTİYAÇ DUYULUR ? Geant4 programında kullanıcıdan istenen minimum listesi: Malzeme ve Geometrileri tanımlamak (hedef ve detektör.....) E&M alanları eklemek (isteğe bağlı) Parçacıkları ve fizik etkileşmelerini tanımlamak Birincil olayın nasıl üretileceğine karar vermek G4VUserDetectorConstruction Sınıfı G4VUserPhysicsList Sınıfı G4VUserPrimaryGeneratorAction Sınıfı
GEANT4 BİZİM İÇİN NE YAPAR ? Parçacık, world hacmin dışına çıkıncaya kadar kinetik enerjisi sıfıra düşünceye kadar bir etkileşme veya bozunmayla yok oluncaya kadar malzeme içerisinde adım adım taşınır. Kullanıcı benzetişim sonuçlarını almak için taşınım sürecine erişebilir: taşınımın başında veya sonunda herbir taşınıma ait adımın (step) sonunda parçacık detektörün duyar hacmi içerisine girdiği zaman
GEANT4'ÜN DEZAVANTAJLARI GEANT4'ÜN AVANTAJLARI Detaylı Geometri tanımlama Doğru manyetik / elektrik alan tanımlama Malzeme tanımlama Fizik süreçlerinin çeşitliliği Hızlı ve doğru görüntüleme Analiz programları Geliştirilebilir olması OPEN SOURCE GEANT4'ÜN DEZAVANTAJLARI Eğer yeniyseniz C++ ve Unix çevresini öğrenme Eğer bir C veya C++ programcısıysanız bu bir avantaj Diğer Monte Carlo Kodları kadar kompleks
GEANT4 Dili Geant4'te sıklıkla kullanılan anahtar kelimeler: Run, Event, Track, Step.............. Geant4'te Run: Aynı detektör ve fiziksel koşulları paylaşan olaylar topluluğudur. Run öncesinde, geometride kullanılan malzemeye ve tanımlanan cut değerlerine göre tesir kesiti tabloları hesaplanır. Event: Geant4'te benzetişimin en temel birimidir. Track: Bir parçacığın fotoğrafıdır. Step: Etkileşme oluncaya kadar alınan yol. TrackID=1 ParentID=0 TrackID=2 ParentID=1 Uzaysal konum, enerji, hacmin ismi vb.
Geant4' de Parçacık Geant4' de parçacık 3 sınıf düzeyi ile temsil edilir G4Track Konumu, geometrik bilgisi, vb Bu takip edilecek parçacığın temsil edildiği sınıftır G4DynamicParticle Parçacığın momentumu, enerjisi, spini gibi Dinamik fiziksel özellikleri hakkında bilgileri sağlar Herbir G4Track nesnesi kendine ait ve tek G4DynamicParticle nesnesine sahiptir Bu sınıf herbir parçacığın kendisini temsil eder G4ParticleDefinition Parçacığın yükü, kütlesi, yaşam süresi, bozunma kanalları gibi Statik özellikleri Parçacık özelliklerinin listesi PDG kodu Kütlesi Elektrik yükü Spin, izospin, parite Magnetik moment Kuark içerikleri Yaşam süresi, bozunma kanalları Gluon / kuark / di-kuark Leptonlar (e, mu, tau...) Mezonlar (pi, K, D, B, psi .) Baryonlar (p,n...) İyonlar Diğerler Katogoriler
Fizik Listesi : Cut Cut değeri, bir parçacığın track edilme boyutunu belirler. Cut bir uzunluk olarak tanımlanır. Malzemeye dayanarak enerjiye dönüştürülür.
Geant4 Çekirdeği Geant4 17 kategoriden oluşur Herbir katagori birbirinden bağımsız çalışma grupları tarafından geliştirilir Katagoriler arasındaki arayüzler, global yapısı tarafından sağlanır.
Uygulama Aşamaları PreInit Idle Run (event loop) GeomClosed Quit initialize Geant4 6 uygulama aşamasına sahiptir G4State_PreInit Materyal, Geometri, Parçacık ve/veya Fizik süreçlerin başlatılması/tanımlanması gerekir G4State_Idle Simulasyonu başlatmaya hazır G4State_GeomClosed Geometri optimize edilir ve bir olayı simule etmek için hazırdır G4State_EventProc Bir olay yürütülür G4State_Quit (Normal) sonlandırma G4State_Abort Kural dışı bir durum oluşması ve programın sonlandırılması Idle beamOn Run (event loop) exit GeomClosed Quit EventProc Abort
Birim Sistemi CLHEP (A Class Library for High Energy Physics) millimeter (mm) nanosecond (ns) Mega electron Volt (MeV) positron charge (eplus) degree Kelvin (kelvin) the amount of substance (mole) luminous intensity (candela) radian (radian) steradian (steradian) CLHEP (A Class Library for High Energy Physics) $CLHEP_BASE_DIR/include/CLHEP/Units/SystemOfUnits.h Kullanılan değişkenlerin birim ataması aşağıdaki gibi yapılabilir G4double Size = 15*km; G4doubel KineticEnergy = 90.3*GeV; G4double density = 11*mg/cm3; Geant4 içcerisinde bazı aşağıdaki gibi interaktif komutlarda hazır olarak bulunmaktadır /gun/energy 15.2 keV /gun/position 3 2 -7 meter Kullanılan kodun içerisinde de bilgi almak için girilen değerler “/” sembolü kullanılarak görüntülenebilir. G4cout << KineticEnergy/keV << " keV"; G4cout << density/(g/cm3) << " g/cm3";
Kullanıcı Sınıfları main() Geant4 varsayılan bir main() metodu tanımlamaz Başlangıç sınıfları G4RunManager::SetUserInitialization() metodu başlangıçta G4VUserDetectorConstruction G4VUserPhysicsList sınıflarının tanımlanması ve çağırılmasında kullanılır Eylem sınıfları G4RunManager::SetUserAction() metodu başlangıçta G4VUserPrimaryGeneratorAction G4UserRunAction G4UserEventAction G4UserStackingAction G4UserTrackingAction G4UserSteppingAction Mavi renkteki sınıflar zorunlu sınıflardır
İsteğe Bağlı Kullanıcı Sınıflar Kullanıcı eylem sınıflarının hepsi main() metodu içerisinde çağırılmalıdır ve RunManager a atanmalıdır G4UserRunAction G4Run* GenerateRun() Fizik tabloları etkileyecek değişken tanımlaması void BeginOfRunAction(const G4Run*) Histogramların tanımlanması void EndOfRunAction(const G4Run*) Histogramların kayıt edilmesi Çalıştırma sonuçlarının analizi G4UserEventAction void BeginOfEventAction(const G4Event*) Bir olayın seçilmesi Olay ile ilgili değişkenlerin sıfırlanması void EndOfEventAction(const G4Event*) Bir olay için analizlerin yapılması G4UserTrackingAction void PreUserTrackingAction(const G4Track*) Parçacık izinin depolanması/depolanmaması void PostUserTrackingAction(const G4Track*) Gereksiz parçacık izlerinin silinmesi G4UserSteppingAction void UserSteppingAction(const G4Step*) Bir adım için gerekli bilgilerin alınması G4UserStackingAction void PrepareNewEvent() (Öncelik kontrolü resetlenir) void ClassifyNewTrack(const G4Track*) (Urgent, Waiting, PostponeToNextEvent, Kill) void NewStage()
MAIN FONKSİYONU ! Geant4 main() sağlamaz! main()'de G4RunManager'ı yapılandırılmalı -----------------------------------> Geant4'teki tek yönetici sınıftır. Zorunlu sınıflar RunManager'a atanmalı VisManager, UI kısımları, isteğe bağlı kullanıcı eylem sınıfları tanımlanabilir.
Geometri G4VUserDetectorConstruction temel sınıfından kullanıcıya ait MyDetectorConstruction sınıfı türetilir Bu sınıfın Construct() metodunda Gerekli tüm materyaller tanımlanır Kullanılacak hacimler tanımlanır Duyarlı detektörleriniz başlatılır ve mantıksal hacimlere atanır İsteğe bağlı olarak da Geometrinizin herhangi bir yeri için bölgeler tanımlanabilir Kullanıcak hacimlerin görüntüleme özellikleri tanımlanır (renk, görünürlük biçimleri gibi)
Geometri Temel strateji; G4VSolid* pBoxSolid = new G4Box(“aBoxSolid”, 1.*m, 2.*m, 3.*m); G4LogicalVolume* pBoxLog = new G4LogicalVolume( pBoxSolid, pBoxMaterial, “aBoxLog”, 0, 0, 0); G4VPhysicalVolume* aBoxPhys = new G4PVPlacement( pRotation, G4ThreeVector(posX, posY, posZ), pBoxLog, “aBoxPhys”, pMotherLog, 0, copyNo); Üç kavram vardır; G4VSolid şekli, boyutları G4LogicalVolume materyal, duyarlılık, kullanıcı limitleri Magnetik alan, vb G4VPhysicalVolume konumu, dönüşü G4Box G4Tubs G4VSolid G4VPhysicalVolume G4Material G4VSensitiveDetector G4PVPlacement G4PVParameterised G4VisAttributes G4LogicalVolume
Geometri (Katı Hacimler – Solid Volumes) CSG (Constructed Solid Geometries) G4Tubs(const G4String &pname, // name G4double pRmin, // inner radius G4double pRmax, // outer radius G4double pDz, // Z half length G4double pSphi, // starting Phi G4double pDphi); // segment angle G4Box(const G4String &pname, // name G4double half_x, // X half size G4double half_y, // Y half size G4double half_z); // Z half size G4Cons G4Para (parallelepiped) G4Trd G4Trap G4Sphere
Geometri (Katı Hacimler – Solid Volumes) Katı hacimler bir araya getirilebilir (boolean operations) G4UnionSolid, G4SubtractionSolid, G4IntersectionSolid Ne Gerekir? 2 katı hacme, 1 mantıksal işleme, ve isteğe bağlı olarak 2. hacim için döndürülmesi (2. hacim 1. hacimin koordinat sistemine göre yerleştirilmiştir) Sonuçta yeni katı hacim oluşur bu da tekrardan yeni mantıksal işlemlerle yeni katı hacimlere dönüştürülebilir. Bu tür bir hacimde parçacık takibi hacimlerin sayısına bağlı olarak artar G4UnionSolid G4SubtractionSolid G4IntersectionSolid
Geometri (Mantıksal Hacim – Logical Volume) G4LogicalVolume(G4VSolid *pSolid, G4Material *pMaterial, const G4String &name, G4FieldManager *pFieldMgr=0, G4VSensitiveDetector *pSDetector=0, G4UserLimits *pULimits=0); Hacimin konumu ve döndürülmesi dışında bütün bilgilerini içerir Şekli ve boyutlarını (G4VSolid) Materyal, duyarlılık, görüntüleme özelliklerini İçerisinde bulunan diğer hacimlerin konumlarını Magnetik alan Kullanıcı limitleri
Geometri (Fiziksel Hacimler – Physical Volumes) Yerleştirilmiş hacim (placement volume) Bir hacim içerisine yerleştirien hacim elemanıdır. Bir fiziksel hacim nesnesi bir tane gerçek hacmi temsil eder Tekrar eden hacim (repeated volume) Bir hacmin birden fazla tekrar edilmesidir. Bir fiziksel hacim nesnesi birden fazla gerçek hacmi temsil eder. Bilgisayar hafızasında az yer kullanır Parametreleştirilmiş tekrar eden hacimler (Parameterised) Bir eksende tekrar eden hacimler (Replica, Division) Ana hacim ya birçok yerleştirilmiş hacmi ya da bir tekrar eden hacmi içerebilir placement repeated
Geometri (GDML) Generic and Geometric Model <?xml version="1.0" encoding="UTF-8"?> <gdml xsi:noNamespaceSchemaLocation="GDMLSchema/gdml.xsd"> <define> ... <position name="TrkrinWorldpos" unit="mm" x="0" y="0" z="100"/> </define> <materials> <element name="Nitrogen" formula="N" Z="7."> <atom value="14.01"/> </element> <material formula=" " name="Air" > <D value="1.290" unit="mg/cm3"/> <fraction n="0.7" ref="Nitrogen" /> <fraction n="0.3" ref="Oxygen" /> </material> </materials> <solids> <box lunit="mm" name="Tracker" x="50" y="50" z="50"/> </solids> <structure> <volume name="World" > <materialref ref="Air" /> <solidref ref="world" /> <physvol> <volumeref ref="Tracker" /> <positionref ref="TrkrinWorldpos"/> <rotationref ref="TrkinWorldrot"/> </physvol> </volume> </structure> <setup name="Default" version="1.0" > <world ref="World" /> </setup> </gdml> Geometry Desciption Markup Language Build-in Geant4 export G4LIB_BUILD_GDML=1 $G4INSTALL/source/persistency/gdml/schema/ gdml_core.xsd gdml_define.xsd gdml_extensions.xsd gdml_materials.xsd gdml_parameterised.xsd gdml_replicas.xsd gdml_solids.xsd gdml.xsd 5 bloktan oluşur Define Material Solids Structure Setup
GDML ---> GraXML (Geometri ve Geometri Modelleyici JAVA3D http://hrivnac.home.cern.ch/hrivnac/Activities/Packages/GraXML/
Geometri (ROOT) C++ dili kullanılır. ATLAS TgeoManager ROOT geometri paketi, bir detektör geometrisini oluşturmak, parçacık izleme ve görüntülemek için tasarlanmıştır. C++ dili kullanılır. http://root.cern.ch/root/html/TGeoManager.html ATLAS
GÖRÜNTÜLEME OpenGL OpenInventor HepRepFile HepRepXML DAWN VRML RayTracer ASCIITree GAGTree XMLTree
Fizik Geant4 de başlangıçta varsayılan herhangi bir fizik veya parçacık yoktur Parçacık iletimi (transportation) bile tanımlanmalıdır G4VUserPhysicsList temel sınıfından kullanıcı MyPhysicsList türetilmiş sınıfını oluşturur Tüm gerekli parçacıklar tanımlanır Gerekli fizik süreçleri tanımlanır ve uygun parçacıklara atanır Tüm hacim (world) veya belirli bir bölge içn parçacık oluşum enerjileri tanımlanır Geant4 içerisinde bunlar için bir çok örnek bulunmaktadır Fiziksel süreç farklı enerji aralıklarında değişik model, tesir kesitleri vb içerebilir Compton scattering Pair production Gamma process 1 process 2 particle model 1 model 2 … cross section set 1 cross section set 2 cross section set 3
Fizik (Sağlanan) ElektroManyetik fizik Standard fizik, ~ PeV Düşük enerji limiti, 250 eV ~ PeV (Livermore & Penelope) Optik fotonlar DNA seviyesindeki modeller, 7 eV ~ 100 MeV Zayıf fizik Atomaltı parçacık bozunması Çekirdeklerin radyoaktif bozunması Hadronik fizik 0 eV ~ 100 TeV Muon ve gamma çekirdek etkileşmeleri,10 MeV ~ TeV Parametrize edilmiş or hızlı simulation fiziği
Fizik Kullanıcı tanımlı fizik listesi (kısmen basitleştirilmiş) G4VUserPhysicsList temel sınıfından MyPhysicsList sınıfın türetilmesi Modular fizik listes (biraz daha karmaşık) G4VModularPhysicsList temel sınıfından MyPhysicsList daha detaylı sınıfın türetilmesi Referans fizik listesi → $G4INSTALL/source/physics/lists Uygulanacak metot class MyPhysicsList: public G4VUserPhysicsList { public: MyPhysicsList(); ~MyPhysicsList(); void ConstructParticle(); // simulasyonda gerekli olan parçacıkların seçimi void ConstructProcess(); // ilgili fiziğin herbir parçacığa atanması void SetCuts(); // ikincil parçacıkların üretim eşik enerjisi }; main metodunda Geant4 e bu fiziğin kayıt edilmesi runManager->SetUserInitialization(new MyPhysicsList);
Birincil Parçacıkların Üretilmesi Geant4 G4VPrimaryGenerator aracılığıyla iki birincil parçacık üreteci sağlayabilir: G4ParticleGun Birincil parçacığı, belirli bir zamanda, belirli bir noktadan, belirli enerjide bir doğrultuya fırlatmak mümkündür. G4GeneralParticleSource G4VPrimaryGenerator'ın ileri düzeydeki bir uygulamasıdır. Konum, açısal dağılım ve enerji dağılımları İstenilen ağırlıklı çok sayıda kaynak tanımlama.
GeneratePrimaries(G4Event* anEvent) G4ParticleGun void T01PrimaryGeneratorAction:: GeneratePrimaries(G4Event* anEvent) { G4ParticleDefinition* particle; G4int i = (int)(5.*G4UniformRand()); switch(i) { case 0: particle = positron; break; ... } particleGun- particleGun->SetParticleDefinition(particle); G4double pp = momentum+(G4UniformRand()- momentum+(G4UniformRand()-0.5)*sigmaMomentum; G4double mass = particle->GetPDGMass(); particle- G4double Ekin = sqrt(pp*pp+mass*mass)-mass; sqrt(pp*pp+mass*mass)- particleGun->SetParticleEnergy(Ekin); ( ) G4double angle = (G4UniformRand()-0.5)*sigmaAngle; (G4UniformRand()- particleGun->SetParticleMomentumDirection ( (G4ThreeVector(sin(angle),0.,cos(angle))); ( ( g ), , ( g ))); particleGun->GeneratePrimaryVertex(anEvent); } Başlangıç değerlerini kurmak için komutlar: /gun/List List available particles /gun/particle Set particle to be generated /gun/direction Set momentum direction /gun/energy Set kinetic energygy /gun/momentum Set momentum /gun/momentumAmp Set absolute value of momentum /gun/position Set starting position of the particle /gun/time Set initial time of the particle /gun/polarization Set polarization /gun/number Set number of particles to be generated /gun/ion Z A Q
G4GeneralParticleSource Position distributions /gps/pos/… Point E.g. /gps/pos/type Point /gps/pos/type /gps/pos/centre /gps/pos/centre 0. 0. 0. cm Beam E.g. /gps/pos/type Beam /gps/pos/shape Circle /gps/pos/radius 1. mm gp p /gps/pos/sigma_r 2. mm Plane Shape: Circle, Annulus, Ellipsoid, Square or Rectangle E.g. /gps/pos/type Plane /gps/pos/shape Rectangle /gps/pos/halfx /gps/pos/halfx 50 cm /gps/pos/halfy /gps/pos/halfy 70 cm Surface or Volume Shape: Sphere, Ellipsoid, Cylinder or Para Surface: zenith automatically oriented as normal to surface at point E.g. /gps/pos/type Surface /gps/pos/shape Sphere /gps/pos/radius 1. m G4double a,b,c; G4double n; do { a = (G4UniformRand()-0.5)/0.5; (G4UniformRand()- b = (G4UniformRand()-0.5)/0.5; c = (G4UniformRand()-0.5)/0.5; n = a*a+b*b+c*c; } while (n > 1 || n == 0.0); n = std::sqrt(n); a /= n; b /= n; c /= n; G4ThreeVector direction(a,b,c); particleGun- particleGun->SetParticleMomentumDirection(direction); Equivalent GPS (script) /gps/ang/type iso
Analiz Kod içerisinde ROOT $G4ANALYSIS_USE_ROOT AIDA $G4ANALYSIS_USE Örneğin MySteppingAction, MyEventAction, MySensitiveDetector sınıflarında kullanımı Geant4 içerisinde hazır bulunan hesaplayıcılar (Primitive scorers) $G4INSTALL/source/digits_hits/scorer G4PSEnergyDeposit3D.cc G4PSEnergyDeposit.cc G4PSNofSecondary.cc G4PSTrackLength.cc G4PSDoseDeposit3D.cc G4PSDoseDeposit.cc G4PSNofCollision.cc G4PSMinKinEAtGeneration.cc /score/create/boxMesh boxMesh_1 /score/mesh/boxSize 100. 100. 50. cm /score/mesh/nBin 30 30 30 /score/quantity/energyDeposit eDep /score/close /score/drawProjection boxMesh_1 eDep examples/extended/runAndEvent/RE03
Örnekler 3 katogoride toplanır (G4INSTALL/examples) Yeni başlayanlar (examples/novice) 7 adet örnek Kapsamlı (examples/extended) 19 adet örnek Fiziksel süreçlerin testi ve doğrulanması Geant4 araçlarının gösterimi İleri düzey (examples/advanced) 20 adet örnek Pratik uygulamalar HEP dışı uygulamalardan örnekler (Space,Medical,..)
BACKUP SLIDES
How to participate in? Depending your interest & capabilities, Choose your way in Computer Aided Methods Learn advanced programming (C++) CAD Tools XML language Physics Models Analyze Tools (RooT, OpenScientist, JAS, Paw) Have a look at; http://www.lcsim.org/software/ Analysis and Reconstruction (JAS3, LCIO) Detector Simulation (SLIC, LCDG4, Mokka) Event Generation (Herwig, GuineaPig)
Tracking & Processes Geant4 Tracking is general It is independent to the particle type the physics processes assigned to a particle It gives the chance to all processes to contribute to determining the step length contribute any possible changes in physical quantities of the track generate secondary particles suggest changes in the state of the track (e.g. to suspend, postpone or kill it) Processes; Particle transportation is a process as well; the particle interacts with geometrical volume boundaries and field of any kind Each particle has its own list of applicable processes. At each step, all processes listed are invoked to get proposed physical interaction lengths The process which requires the shortest interaction length (in space-time) is the one that occurs. Each process has one or combination of the following natures. AtRest (e.g. muon decay at rest) AlongStep (continuous process, e.g. Cerenkov process) PostStep (discrete process, e.g. decay on the fly)
EM Physics Category
Hadronic Physics Category CHIPS At rest Absorption K, anti-p CHIPS (gamma) Photo-nuclear, electro-nuclear High precision neutron Evaporation Pre- compound FTF String (up to 20 TeV) Fermi breakup Multifragment QG String (up to 100 TeV) Photon Evap Binary cascade Rad. Decay Bertini cascade Fission LE pp, pn HEP ( up to 15 TeV) LEP 1 MeV 10 MeV 100 MeV 1 GeV 10 GeV 100 GeV 1 TeV … plus G4BinaryLightIonCascade, G4WilsonAbrasion, G4EmDissociation
ConstructParticle() [1] Basic construction method: By manually invoking the particle definition methods #include “G4Electron.hh” #include “G4Proton.hh” … void MyPhysicsList::ConstructParticle() { G4Electron::ElectronDefinition(); G4Proton::ProtonDefinition(); G4Neutron::NeutronDefinition(); G4Gamma::GammaDefinition(); }
ConstructParticle() [2] By using utility classes: That make the individual calls for you: void MyPhysicsList::ConstructParticle() { G4BaryonConstructor* baryonConstructor = new G4BaryonConstructor(); baryonConstructor->ConstructParticle(); delete baryonConstructor; G4BosonConstructor* bosonConstructor = new G4BosonConstructor(); bosonConstructor->ConstructParticle(); delete bosonConstructor; … }
ConstructProcess() void MyPhysicsList::ConstructProcess() { AddTransportation(); // Method provided by G4VUserPhysicsList // It assignes the transportation process to all // particles, with non-zero lifetime, defined // in ConstructParticle() ConstructEM(); // Method may be defined by user (for convenience) // Instantiate electromagnetic processes here ConstructGeneral(); }
ConstructEM() void MyPhysicsList::ConstructEM() { theParticleIterator->reset(); while( (*theParticleIterator)() ) { G4ParticleDefinition* particle = theParticleIterator->value(); G4ProcessManager* pmanager = particle->GetProcessManager(); G4String particleName = particle->GetParticleName(); if (particleName == “gamma”){ pmanager->AddDiscreteProcess(new G4GammaConversion()); … }