]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TFluka/magfld.cxx
Put index into track's name instead of its label.
[u/mrichter/AliRoot.git] / TFluka / magfld.cxx
index 2161e43f9595133279bcd2f37e88f1955923a4a5..e78158d5d829ae26e76b295bc8d62a4a05902d76 100644 (file)
@@ -1,5 +1,5 @@
-#include "AliRun.h"
-#include "AliMagF.h"
+#include "TVirtualMCApplication.h"
+#include "TFluka.h"
 #include "Fdblprc.h"  //(DBLPRC) fluka common
 //
 // #include "TCallf77.h"
@@ -14,7 +14,7 @@
 
 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)
 {
 
 /*
@@ -31,27 +31,33 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
 *                                                                      *
 *----------------------------------------------------------------------*
 */
-
-    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);
@@ -59,7 +65,7 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
            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.;
@@ -69,6 +75,4 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
     
     // 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);
 }