Pass current track id to stack.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Jun 2003 10:25:31 +0000 (10:25 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 5 Jun 2003 10:25:31 +0000 (10:25 +0000)
TFluka/mgdraw.cxx

index da179f4..f0f2556 100644 (file)
@@ -1,6 +1,12 @@
 #include <Riostream.h>
 #include "TVirtualMCApplication.h"
+#include "TVirtualMCStack.h"
 #include "TFluka.h"
+// Fluka include
+#include "Fdimpar.h"  //(DIMPAR) fluka include
+#include "Fdblprc.h"  //(DBLPRC) fluka common
+#include "Ftrackr.h"  //(TRACKR) fluka common
+
 #ifndef WIN32
 # define mgdraw mgdraw_
 #else
 extern "C" {
 void mgdraw(Int_t& icode, Int_t& mreg)
 {
+    TFluka* fluka =  (TFluka*) gMC;
+    Int_t verbosityLevel = fluka->GetVerbosityLevel();
+//
+//  Make sure that stack has currrent track Id
+    Int_t trackId = TRACKR.ispusr[mkbmx2-1];
+    TVirtualMCStack* cppstack = fluka->GetStack();
+    cppstack->SetCurrentTrack(trackId);
+//
+//    
     Int_t oldreg = ((TFluka*) gMC)->GetMreg();
     if (oldreg != mreg) {
 //
 //  Boundary Crossing
 //
-       ((TFluka*) gMC)->SetNewreg(mreg);
-       if (oldreg == -1) 
-           ((TFluka*) gMC)->SetMreg(mreg);
-       printf("Boundary Crossing %d %d \n", oldreg, mreg);
+       fluka->SetNewreg(mreg);
+       if (oldreg == -1) fluka->SetMreg(mreg);
+       if (verbosityLevel >= 3)
+           printf("Boundary Crossing %d %d \n", oldreg, mreg);
     } else {
-       ((TFluka*) gMC)->SetMreg(mreg);
-       ((TFluka*) gMC)->SetNewreg(mreg);
-       printf("Normal step %d %d \n", oldreg, mreg);
+       fluka->SetMreg(mreg);
+       fluka->SetNewreg(mreg);
+       if (verbosityLevel >= 3)
+           printf("Normal step %d %d \n", oldreg, mreg);
     }
-    ((TFluka*) gMC)->SetIcode(icode);
+    fluka->SetIcode(icode);
+
     cout << endl << " !!! I am in mgdraw - calling Stepping()" << endl;
-    ((TFluka*) gMC)->FutoTest();
+    cout << endl << " Track Id =" << trackId << endl;
+    
+    fluka->FutoTest();
 
     if (oldreg != mreg) {
 //
 //  Double step for boundary crossing
 //
-       ((TFluka*) gMC)->SetTrackIsExiting();
+       fluka->SetTrackIsExiting();
        (TVirtualMCApplication::Instance())->Stepping();
-       ((TFluka*) gMC)->SetMreg(mreg);
-       ((TFluka*) gMC)->SetTrackIsEntering();
+       fluka->SetMreg(mreg);
+       fluka->SetTrackIsEntering();
        (TVirtualMCApplication::Instance())->Stepping();
-       ((TFluka*) gMC)->SetTrackIsInside();
+       fluka->SetTrackIsInside();
     } else {
        (TVirtualMCApplication::Instance())->Stepping();
     }