]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TFluka/bxdraw.cxx
Example macros for using AliAODv0 class
[u/mrichter/AliRoot.git] / TFluka / bxdraw.cxx
index c5cdc7feb08af1cbdbd286b127fe15ae3aeab945..c9abc12bfd4604745265bfa0c79ff4be3f381fbe 100644 (file)
@@ -1,7 +1,11 @@
 #include <Riostream.h>
+
 #include "TFluka.h"
+#include "TFlukaCodes.h"
+#include "TFlukaMCGeometry.h"
 #include "Fdimpar.h"  //(DIMPAR) fluka include
 #include "Ftrackr.h"  //(TRACKR) fluka common
+#include "Fltclcm.h"  //(LTCLCM) fluka common
 #ifndef WIN32
 # define bxdraw bxdraw_
 #else
@@ -12,29 +16,39 @@ void bxdraw(Int_t& icode, Int_t& mreg, Int_t& newreg,
             Double_t& xsco, Double_t& ysco, Double_t& zsco)
 {
     TFluka* fluka = (TFluka*) gMC;
-    
-    fluka->SetIcode(icode);
-    fluka->SetNewreg(newreg);
+    Int_t oldlttc = LTCLCM.mlatm1;
+    Int_t newlttc = LTCLCM.newlat;
+    fluka->SetIcode((FlukaProcessCode_t)icode);
+    fluka->SetNewreg(newreg,newlttc);
     fluka->SetXsco(xsco);
     fluka->SetYsco(ysco);
     fluka->SetZsco(zsco);
+    Int_t verbosityLevel = fluka->GetVerbosityLevel();
+    Bool_t debug = (verbosityLevel>=3)?kTRUE:kFALSE;
 //
 // Double step for boundary crossing
 //
-    printf("bxdraw (ex) \n");
-    fluka->SetTrackIsExiting();
-    fluka->SetCaller(12);
-    fluka->SetMreg(mreg);
-    (TVirtualMCApplication::Instance())->Stepping(); 
-    fluka->SetCaller(11);
-    fluka->SetTrackIsEntering();
-    printf("bxdraw (en) \n");
-    fluka->SetMreg(newreg);
-    (TVirtualMCApplication::Instance())->Stepping();
-//    fluka->SetCaller(1);
-//    fluka->SetTrackIsInside();
-//    printf("bxdraw (st) \n");
-//    (TVirtualMCApplication::Instance())->Stepping();
+    fluka->SetTrackIsNew(kFALSE); // has to be called BEFORE Stepping()
+    if (mreg != fluka->GetDummyRegion()) {
+       if (debug) printf("bxdraw (ex) \n");
+       fluka->SetTrackIsExiting();
+       fluka->SetCaller(kBXExiting);
+       fluka->SetMreg(mreg,oldlttc);
+       TVirtualMCStack* cppstack = fluka->GetStack();
+       cppstack->SetCurrentTrack( TRACKR.ispusr[mkbmx2-1] );
+       (TVirtualMCApplication::Instance())->Stepping();
+    }
+    if (newreg != fluka->GetDummyRegion()) {
+       if (debug) printf("bxdraw (en) \n");
+       fluka->SetCaller(kBXEntering);
+       fluka->SetTrackIsEntering();
+       if (fluka->GetDummyBoundary() == 1) fluka->SetDummyBoundary(2);
+       fluka->SetMreg(newreg,newlttc);
+       TVirtualMCStack* cppstack = fluka->GetStack();
+       cppstack->SetCurrentTrack( TRACKR.ispusr[mkbmx2-1] );
+       (TVirtualMCApplication::Instance())->Stepping();
+    }
+
 } // end of bxdraw
 } // end of extern "C"