]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TFluka/mgdraw.cxx
- printf warnings replaces by Warning(..)
[u/mrichter/AliRoot.git] / TFluka / mgdraw.cxx
CommitLineData
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
20extern "C" {
21void 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