Routines interfaced to TFlukaCerenkov and TFlukaGeo.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Mar 2004 08:57:34 +0000 (08:57 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 30 Mar 2004 08:57:34 +0000 (08:57 +0000)
TFluka/abscff.cxx
TFluka/queffc.cxx
TFluka/rfrndx.cxx

index e023c78d38521b7548f9c777d6cc1f4ffbb7fcca..a0d49f2f7b385bf5d4d9b49ced053d9cedf5a6c0 100644 (file)
@@ -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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+    Double_t y = (cerenkov->GetAbsorptionCoefficientByWaveLength(wvlngt));
+    return (y);
+    
 }
 }
 
index d5ec165c030af486db69002f33e17da6385c8a9b..78abbb506abe6199e7f492756b98980aeb2713db 100644 (file)
@@ -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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+    return (cerenkov->GetQuantumEfficiencyByWaveLength(wvlngt));
 }
 }
index 134c86b2a2cd2951793385ea287fb0364652531d..eae9531f08fd4a97ff66674000b07047c7dfe97b 100644 (file)
@@ -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<TFlukaCerenkov*> (material->GetCerenkovProperties());
+    Double_t y =  (cerenkov->GetRefractionIndexByWaveLength(wvlngt));
+    return (y);
 }
 }
-