]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TFluka/magfld.cxx
Adding FindPCBIndexByMotifPositionID method (Laurent)
[u/mrichter/AliRoot.git] / TFluka / magfld.cxx
index f5d3aa51eed9d87b37c9acabf1103f484141f2a5..e78158d5d829ae26e76b295bc8d62a4a05902d76 100644 (file)
@@ -1,4 +1,5 @@
 #include "TVirtualMCApplication.h"
+#include "TFluka.h"
 #include "Fdblprc.h"  //(DBLPRC) fluka common
 //
 // #include "TCallf77.h"
@@ -13,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)
 {
 
 /*
@@ -30,27 +31,33 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
 *                                                                      *
 *----------------------------------------------------------------------*
 */
-
-    printf("\n ========> magfld\n");
-    
     
-    idisc = 0;
     
     Double_t bc[3];
     Double_t xc[3];
     
-    xc[1] = x;
-    xc[0] = y;
+    xc[0] = x;
+    xc[1] = y;
     xc[2] = z;
     
     
-       
+
+//
+//  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);
@@ -58,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.;
@@ -68,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);
 }