]>
Commit | Line | Data |
---|---|---|
fa3d1cc7 | 1 | #include <Riostream.h> |
8fd1d27e | 2 | #include "TVirtualMCApplication.h" |
df14e7fb | 3 | #include "TGeoMaterial.h" |
4 | #include "TGeoManager.h" | |
5 | #include "TFlukaCerenkov.h" | |
a7bb59a2 | 6 | |
7 | #ifndef WITH_ROOT | |
fa3d1cc7 | 8 | #include "TFluka.h" |
a7bb59a2 | 9 | #else |
10 | #include "TFlukaGeo.h" | |
11 | #endif | |
12 | ||
7dac99f1 | 13 | #include "Fdimpar.h" //(DIMPAR) fluka include |
14 | #include "Ftrackr.h" //(TRACKR) fluka common | |
fa3d1cc7 | 15 | #ifndef WIN32 |
16 | # define endraw endraw_ | |
17 | #else | |
18 | # define endraw ENDRAW | |
19 | #endif | |
20 | extern "C" { | |
21 | void endraw(Int_t& icode, Int_t& mreg, Double_t& rull, Double_t& xsco, Double_t& ysco, Double_t& zsco) | |
22 | { | |
4b81a588 | 23 | TFluka* fluka = (TFluka*) gMC; |
24 | fluka->SetCaller(3); | |
25 | fluka->SetIcode(icode); | |
26 | fluka->SetRull(rull); | |
27 | fluka->SetXsco(xsco); | |
28 | fluka->SetYsco(ysco); | |
29 | fluka->SetZsco(zsco); | |
30 | fluka->SetMreg(mreg); | |
31 | if (icode == 11) { | |
32 | cout << " For icode=" << icode << " Stepping is NOT called" << endl; | |
33 | return; | |
34 | } | |
df14e7fb | 35 | if (TRACKR.jtrack == -1) { |
36 | // Handle quantum efficiency the G3 way | |
37 | printf("endraw: Cerenkov photon depositing energy: %d %e\n", mreg, rull); | |
38 | TGeoMaterial* material = (gGeoManager->GetCurrentVolume())->GetMaterial(); | |
39 | Int_t nmat = material->GetIndex(); | |
40 | TFlukaCerenkov* cerenkov = dynamic_cast<TFlukaCerenkov*> (material->GetCerenkovProperties()); | |
41 | if (cerenkov) { | |
42 | Double_t eff = (cerenkov->GetQuantumEfficiency(rull)); | |
43 | if (gRandom->Rndm() > eff) { | |
44 | rull = 0.; | |
45 | fluka->SetRull(rull); | |
46 | } | |
47 | } | |
48 | } | |
7dac99f1 | 49 | (TVirtualMCApplication::Instance())->Stepping(); |
fbf08100 | 50 | fluka->SetTrackIsNew(kFALSE); |
fa3d1cc7 | 51 | } // end of endraw |
52 | } // end of extern "C" | |
53 |