1 #include "TVirtualMCApplication.h"
3 #include "Fdblprc.h" //(DBLPRC) fluka common
5 // #include "TCallf77.h"
12 #define type_of_call _stdcall
15 extern "C" void type_of_call magfld(double& x, double& y, double& z,
16 double& btx, double& bty, double& btz, double& b,
17 int& /*nreg*/,int& idisc)
21 *----------------------------------------------------------------------*
25 * x,y,z = current position *
26 * nreg = current region *
28 * btx,bty,btz = cosines of the magn. field vector *
29 * B = magnetic field intensity (Tesla) *
30 * idisc = set to 1 if the particle has to be discarded *
32 *----------------------------------------------------------------------*
46 // Check if stopping has been required by user
49 TFluka* fluka = (TFluka*) gMC;
50 if (fluka->GetStoppingCondition()) {
51 fluka->ResetStoppingCondition();
55 (TVirtualMCApplication::Instance())->Field(xc, bc);
57 b = sqrt(bc[0] * bc[0] + bc[1] * bc[1] + bc[2] * bc[2]);
61 Double_t btt = btx * btx + bty * bty;
62 if (btt >= (Double_t) 1.) {
63 btx /= TMath::Sqrt(btt);
64 bty /= TMath::Sqrt(btt);
65 b /= TMath::Sqrt(btt);
68 btz = TMath::Sign(TMath::Sqrt((Double_t) 1. - btt), bc[2]);