]>
Commit | Line | Data |
---|---|---|
fa3d1cc7 | 1 | #include <Riostream.h> |
8fd1d27e | 2 | #include "TVirtualMCApplication.h" |
b1b2005d | 3 | #include "TVirtualMCStack.h" |
a7bb59a2 | 4 | |
fa3d1cc7 | 5 | #include "TFluka.h" |
a7bb59a2 | 6 | |
b1b2005d | 7 | // Fluka include |
8 | #include "Fdimpar.h" //(DIMPAR) fluka include | |
9 | #include "Fdblprc.h" //(DBLPRC) fluka common | |
10 | #include "Ftrackr.h" //(TRACKR) fluka common | |
3a625972 | 11 | #include "Fopphst.h" //(OPPHST) fluka common |
81f1d030 | 12 | #include "Fflkstk.h" //(FLKSTK) fluka common |
b1b2005d | 13 | |
fa3d1cc7 | 14 | #ifndef WIN32 |
15 | # define mgdraw mgdraw_ | |
16 | #else | |
17 | # define mgdraw MGDRAW | |
18 | #endif | |
19 | ||
20 | extern "C" { | |
21 | void mgdraw(Int_t& icode, Int_t& mreg) | |
22 | { | |
b1b2005d | 23 | TFluka* fluka = (TFluka*) gMC; |
57dc5a4a | 24 | Int_t verbosityLevel = fluka->GetVerbosityLevel(); |
b1b2005d | 25 | // |
26 | // Make sure that stack has currrent track Id | |
57dc5a4a | 27 | // |
3a625972 | 28 | Int_t trackId = -1; |
b1b2005d | 29 | TVirtualMCStack* cppstack = fluka->GetStack(); |
3a625972 | 30 | |
31 | if (TRACKR.jtrack == -1) { | |
e45bbee7 | 32 | trackId = OPPHST.louopp[OPPHST.lstopp]; |
3ad1c4d5 | 33 | if (trackId == 0) { |
81f1d030 | 34 | trackId = FLKSTK.ispark[FLKSTK.npflka][mkbmx2-1]; |
3ad1c4d5 | 35 | } |
3a625972 | 36 | } else { |
37 | trackId = TRACKR.ispusr[mkbmx2-1]; | |
38 | } | |
39 | ||
b1b2005d | 40 | cppstack->SetCurrentTrack(trackId); |
41 | // | |
42 | // | |
55d6cb0f | 43 | fluka->SetMreg(mreg); |
44 | fluka->SetNewreg(mreg); | |
b1b2005d | 45 | fluka->SetIcode(icode); |
a1f42b9c | 46 | fluka->SetCaller(4); |
57dc5a4a | 47 | |
48 | if (!TRACKR.ispusr[mkbmx2 - 2]) { | |
49 | // | |
50 | // Single step | |
81f1d030 | 51 | if (TRACKR.jtrack == -1 && trackId == 109340) { |
57dc5a4a | 52 | cout << endl << " !!! I am in mgdraw - calling Stepping(): " << icode << endl; |
53 | cout << endl << " Track Id = " << trackId << " region = " << mreg << endl; | |
81f1d030 | 54 | printf("Stepsize %13.5e \n", fluka->TrackStep()); |
57dc5a4a | 55 | } |
81f1d030 | 56 | |
57 | ||
58 | ||
5d80a015 | 59 | |
57dc5a4a | 60 | (TVirtualMCApplication::Instance())->Stepping(); |
61 | fluka->SetTrackIsNew(kFALSE); | |
62 | } else { | |
63 | // | |
64 | // Tracking is being resumed after secondary tracking | |
65 | // | |
57dc5a4a | 66 | if (verbosityLevel >= 3) { |
67 | cout << endl << " !!! I am in mgdraw - resuming Stepping(): " << trackId << endl; | |
68 | } | |
5d80a015 | 69 | |
70 | fluka->SetTrackIsNew(kTRUE); | |
71 | fluka->SetCaller(40); | |
57dc5a4a | 72 | (TVirtualMCApplication::Instance())->Stepping(); |
5d80a015 | 73 | |
74 | // Reset flag and stored values | |
75 | TRACKR.ispusr[mkbmx2 - 2] = 0; | |
76 | for (Int_t i = 0; i < 9; i++) TRACKR.spausr[i] = -1.; | |
77 | ||
57dc5a4a | 78 | |
79 | if (verbosityLevel >= 3) { | |
80 | cout << endl << " !!! I am in mgdraw - first Stepping() after resume: " << icode << endl; | |
81 | cout << endl << " Track Id = " << trackId << " region = " << mreg << endl; | |
82 | } | |
5d80a015 | 83 | |
84 | fluka->SetTrackIsNew(kFALSE); | |
85 | fluka->SetCaller(4); | |
57dc5a4a | 86 | (TVirtualMCApplication::Instance())->Stepping(); |
87 | } | |
3a625972 | 88 | |
cad96957 | 89 | |
fa3d1cc7 | 90 | } // end of mgdraw |
91 | } // end of extern "C" | |
92 |