]> 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 b0da475aafcfdee9eff90059891304e00f48590a..e78158d5d829ae26e76b295bc8d62a4a05902d76 100644 (file)
@@ -1,4 +1,5 @@
 #include "TVirtualMCApplication.h"
+#include "TFluka.h"
 #include "Fdblprc.h"  //(DBLPRC) fluka common
 //
 // #include "TCallf77.h"
@@ -31,7 +32,6 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
 *----------------------------------------------------------------------*
 */
     
-    idisc = 0;
     
     Double_t bc[3];
     Double_t xc[3];
@@ -41,13 +41,23 @@ extern "C" void type_of_call magfld(double& x,   double& y,   double& z,
     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);
@@ -55,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.;