-#include "AliRun.h"
-#include "AliMagF.h"
+#include "TVirtualMCApplication.h"
+#include "TFluka.h"
#include "Fdblprc.h" //(DBLPRC) fluka common
//
// #include "TCallf77.h"
extern "C" void type_of_call magfld(double& x, double& y, double& z,
double& btx, double& bty, double& btz, double& b,
- int& nreg,int& idisc)
+ int& /*nreg*/,int& idisc)
{
/*
* *
*----------------------------------------------------------------------*
*/
-
- printf("\n ========> magfld\n");
-
- idisc = 0;
- Float_t bc[3];
- Float_t xc[3];
+ Double_t bc[3];
+ Double_t xc[3];
- xc[1] = x;
- xc[0] = y;
+ xc[0] = x;
+ xc[1] = y;
xc[2] = z;
-
- gAlice->Field()->Field(xc, bc);
+
+//
+// Check if stopping has been required by user
+//
+ idisc = 0;
+ TFluka* fluka = (TFluka*) gMC;
+ if (fluka->GetStoppingCondition()) {
+ fluka->ResetStoppingCondition();
+ idisc = 1;
+ }
+
+ (TVirtualMCApplication::Instance())->Field(xc, bc);
b = sqrt(bc[0] * bc[0] + bc[1] * bc[1] + bc[2] * bc[2]);
if (b) {
- btx = bc[1]/b;
- bty = bc[0]/b;
+ btx = bc[0]/b;
+ bty = bc[1]/b;
Double_t btt = btx * btx + bty * bty;
if (btt >= (Double_t) 1.) {
btx /= TMath::Sqrt(btt);
b /= TMath::Sqrt(btt);
btz = (Double_t) 0.;
} else {
- btz = TMath::Sqrt((Double_t) 1. - btt);
+ btz = TMath::Sign(TMath::Sqrt((Double_t) 1. - btt), bc[2]);
}
} else {
btx = 0.;
// from kG to T
b /= (Double_t) 10.;
- printf("\n #magfld: x, y, z, btx, bty, btz, b %f %f %f %f %f %f %f \n",
- x, y, z, btx, bty, btz, b);
}