From 1b904a0d754686a51c85d98da212a5c1506131db Mon Sep 17 00:00:00 2001 From: morsch Date: Tue, 30 Mar 2004 08:57:34 +0000 Subject: [PATCH] Routines interfaced to TFlukaCerenkov and TFlukaGeo. --- TFluka/abscff.cxx | 17 +++++++++++++++-- TFluka/queffc.cxx | 14 +++++++++----- TFluka/rfrndx.cxx | 16 +++++++++++++--- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/TFluka/abscff.cxx b/TFluka/abscff.cxx index e023c78d385..a0d49f2f7b3 100644 --- a/TFluka/abscff.cxx +++ b/TFluka/abscff.cxx @@ -1,6 +1,12 @@ #include "Fdimpar.h" //(DIMPAR) fluka include #include "Ftrackr.h" //(TRACKR) fluka common #include "Fiounit.h" //(IOUNIT) fluka common +#include "TFlukaGeo.h" +#include "TGeoMaterial.h" +#include "TFlukaCerenkov.h" +#include "TGeoManager.h" + + #ifndef WIN32 # define abscff abscff_ #else @@ -9,8 +15,15 @@ extern "C" { Double_t abscff(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat) { - printf("abscff called %e %e %d \n", wvlngt, omgpho, mmat); - return (0.); +// +// Return absorption length for given photon energy and material +// + TFluka* fluka = (TFluka*) gMC; + TGeoMaterial* material = (TGeoMaterial*) (gGeoManager->GetListOfMaterials())->At(fluka->GetMaterialIndex(mmat)); + TFlukaCerenkov* cerenkov = dynamic_cast (material->GetCerenkovProperties()); + Double_t y = (cerenkov->GetAbsorptionCoefficientByWaveLength(wvlngt)); + return (y); + } } diff --git a/TFluka/queffc.cxx b/TFluka/queffc.cxx index d5ec165c030..78abbb506ab 100644 --- a/TFluka/queffc.cxx +++ b/TFluka/queffc.cxx @@ -2,6 +2,11 @@ #include "Ftrackr.h" //(TRACKR) fluka common #include "Fiounit.h" //(IOUNIT) fluka common #include "Fopphcm.h" //(OPPHCM) fluka common +#include "TGeoMaterial.h" +#include "TFlukaCerenkov.h" +#include "TFlukaGeo.h" +#include "TGeoManager.h" + #ifndef WIN32 # define queffc queffc_ #else @@ -11,10 +16,9 @@ extern "C" { Double_t queffc(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat) { printf("queffc called %e %e %d \n", wvlngt, omgpho, mmat); - if (wvlngt > OPPHCM.wvmxsn || wvlngt < OPPHCM.wvmnsn) { - return (0.); - } else { - return (OPPHCM.opsnmx); - } + TFluka* fluka = (TFluka*) gMC; + TGeoMaterial* material = (TGeoMaterial*) (gGeoManager->GetListOfMaterials())->At(fluka->GetMaterialIndex(mmat)); + TFlukaCerenkov* cerenkov = dynamic_cast (material->GetCerenkovProperties()); + return (cerenkov->GetQuantumEfficiencyByWaveLength(wvlngt)); } } diff --git a/TFluka/rfrndx.cxx b/TFluka/rfrndx.cxx index 134c86b2a2c..eae9531f08f 100644 --- a/TFluka/rfrndx.cxx +++ b/TFluka/rfrndx.cxx @@ -1,6 +1,11 @@ #include "Fdimpar.h" //(DIMPAR) fluka include #include "Ftrackr.h" //(TRACKR) fluka common #include "Fiounit.h" //(IOUNIT) fluka common +#include "TFlukaGeo.h" +#include "TGeoMaterial.h" +#include "TGeoManager.h" +#include "TFlukaCerenkov.h" + #ifndef WIN32 # define rfrndx rfrndx_ #else @@ -9,8 +14,13 @@ extern "C" { Double_t rfrndx(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat) { - printf("rfrndx called %e %e %d \n", wvlngt, omgpho, mmat); - return (0.); +// +// Return refraction index for given photon energy and material +// + TFluka* fluka = (TFluka*) gMC; + TGeoMaterial* material = (TGeoMaterial*) (gGeoManager->GetListOfMaterials())->At(fluka->GetMaterialIndex(mmat)); + TFlukaCerenkov* cerenkov = dynamic_cast (material->GetCerenkovProperties()); + Double_t y = (cerenkov->GetRefractionIndexByWaveLength(wvlngt)); + return (y); } } - -- 2.39.3