X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TFluka%2Fabscff.cxx;h=eabb2e575f5c85b71524d39d8ba3e419f9ec2a42;hb=7b3b6b55431268c7a4ac2d0c484ce84cc75587af;hp=e023c78d38521b7548f9c777d6cc1f4ffbb7fcca;hpb=1b866d4b08cd17bf26aa42f10dad896d5fb987bc;p=u%2Fmrichter%2FAliRoot.git diff --git a/TFluka/abscff.cxx b/TFluka/abscff.cxx index e023c78d385..eabb2e575f5 100644 --- a/TFluka/abscff.cxx +++ b/TFluka/abscff.cxx @@ -1,16 +1,39 @@ #include "Fdimpar.h" //(DIMPAR) fluka include #include "Ftrackr.h" //(TRACKR) fluka common #include "Fiounit.h" //(IOUNIT) fluka common +#include "TFluka.h" +#include "TGeoMaterial.h" +#include "TFlukaCerenkov.h" + + #ifndef WIN32 # define abscff abscff_ #else # define abscff ABSCFF #endif extern "C" { -Double_t abscff(Double_t& wvlngt, Double_t& omgpho, Int_t& mmat) +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; +// +// Check if stopping has been required by user +// + if (fluka->GetStoppingCondition()) { + fluka->ResetStoppingCondition(); + return (1.e15); + } +// +// Get absorption coefficient for current material +// + TGeoMaterial* material = (TGeoMaterial*) (fluka->GetFlukaMaterials())->At(fluka->GetMaterialIndex(mmat)); + TFlukaCerenkov* cerenkov = dynamic_cast (material->GetCerenkovProperties()); + Double_t y = (cerenkov->GetAbsorptionCoefficientByWaveLength(wvlngt)); + return (y); + } }