#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
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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+ Double_t y = (cerenkov->GetAbsorptionCoefficientByWaveLength(wvlngt));
+ return (y);
+
}
}
#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
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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+ return (cerenkov->GetQuantumEfficiencyByWaveLength(wvlngt));
}
}
#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
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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+ Double_t y = (cerenkov->GetRefractionIndexByWaveLength(wvlngt));
+ return (y);
}
}
-