Esempio di Specchio Parabolico


Questo esempio costruisce uno specchio ottico simile a un telescopio a partire da due solidi G4Paraboloid di Geant4. Un fascio parallelo di fotoni ottici entra in un volume di vuoto ottico, si riflette dalla superficie interna del guscio dello specchio e viene raccolto da un piccolo pannello gPhotonDetector in prossimità del fuoco nominale.


Avvio rapido

Copia l’esempio nella tua directory corrente, crea la geometria ed esegui un evento:

cp -r $GEMC_HOME/examples/optical/parabolic_mirror .
cd parabolic_mirror
./parabolic_mirror.py
gemc parabolic_mirror.yaml -n=1


Geometria

Lo specchio è un sottile guscio booleano. Lo script della geometria definisce due operandi di costruzione:

Entrambi gli operandi vengono pubblicati con exist impostato a 0. Non vengono collocati come volumi rivelatore, ma i loro solidi restano disponibili per l’operazione booleana finale:

mirror = GVolume("parabolic_dish")
mirror.mother = "optical_space"
mirror.solidsOpr = "outer_dish - inner_dish"
mirror.set_position(0, 0, mirror_z)
mirror.set_rotation(180, 0, 0)
mirror.material = "G4_Al"
mirror.mirror = "parabolic_reflector"
mirror.publish(cfg)

G4Paraboloid richiede che il raggio a -dz sia minore del raggio a +dz. Il guscio finale viene ruotato di 180 gradi attorno a x in modo che il lato aperto sia rivolto verso i fotoni in arrivo.

Visualizzatore interattivo:

Parabolic mirror simulation with 1 generated optical-photon event.


Superficie dello specchio

Il rivestimento dello specchio è una superficie di tipo skin GMirror applicata al guscio booleano finale:

reflector = GMirror("parabolic_reflector")
reflector.type = "dielectric_metal"
reflector.finish = "polished"
reflector.model = "unified"
reflector.border = "SkinSurface"
reflector.photonEnergy = "2.0*eV 3.0*eV 4.0*eV 5.0*eV 6.0*eV"
reflector.reflectivity = "0.95 0.95 0.95 0.95 0.95"
reflector.publish(cfg)
mirror.mirror = "parabolic_reflector"

Consulta la documentazione sugli specchi per i campi della superficie dello specchio.


Rivelatore di fotoni

Il rivelatore è collocato in prossimità del punto focale nominale e utilizza gPhotonDetector:

detector = GVolume("focus_detector")
detector.make_tube(0, 60, 1, 0, 360)
detector.set_position(0, 0, focus_z)
detector.material = "opticalVacuum"
detector.digitization = "gPhotonDetector"
detector.set_identifier("panel", 1)
detector.publish(cfg)

La steering card abilita la fisica ottica e lancia fotoni ottici nell’apertura dello specchio:

phys_list: FTFP_BERT + G4OpticalPhysics

gparticle:
  - name: opticalphoton
    multiplicity: 200
    p: 3*eV
    vz: -42*cm
    delta_vx: 17*cm
    delta_vy: 17*cm

Geant4 potrebbe avvisare che i fotoni ottici generati hanno polarizzazione nulla e assegnare una polarizzazione casuale. Tale avviso è previsto per questa semplice sorgente.