#include <Riostream.h>
#include "TVirtualMCApplication.h"
#include "TFluka.h"
+#include "Fdimpar.h" //(DIMPAR) fluka include
+#include "Ftrackr.h" //(TRACKR) fluka common
#ifndef WIN32
# define endraw endraw_
#else
extern "C" {
void endraw(Int_t& icode, Int_t& mreg, Double_t& rull, Double_t& xsco, Double_t& ysco, Double_t& zsco)
{
+ ((TFluka*) gMC)->SetCaller(3);
((TFluka*) gMC)->SetIcode(icode);
-// ((TFluka*) gMC)->SetMreg(mreg);
((TFluka*) gMC)->SetRull(rull);
((TFluka*) gMC)->SetXsco(xsco);
((TFluka*) gMC)->SetYsco(ysco);
((TFluka*) gMC)->SetZsco(zsco);
- ((TFluka*) gMC)->FutoTest();
-// (TVirtualMCApplication::Instance())->Stepping();
+ (TVirtualMCApplication::Instance())->Stepping();
} // end of endraw
} // end of extern "C"
Int_t lbhabh = 0;
if (EVTFLG.ldltry == 1) {
- if (EMFSTK.iq[EMFSTK.np-1] * EMFSTK.iq[EMFSTK.np-2] < 0) lbhabh = 1;
+ if (EMFSTK.ichemf[EMFSTK.npemf-1] * EMFSTK.ichemf[EMFSTK.npemf-2] < 0) lbhabh = 1;
}
// mkbmx1 = dimension for kwb real spare array in fluka stack in DIMPAR
// TRACKR.llouse = user defined flag for the current particle
Int_t npnw, ispr;
- for (npnw=EMFSTK.npstrt-1; npnw<=EMFSTK.np-1; npnw++) {
+ for (npnw=EMFSTK.npstrt-1; npnw<=EMFSTK.npemf-1; npnw++) {
for (ispr=0; ispr<=mkbmx1-1; ispr++)
EMFSTK.espark[npnw][ispr] = TRACKR.spausr[ispr];
// Increment the track number and put it into the last flag
Int_t kp;
- for (kp = EMFSTK.npstrt - 1; kp <= EMFSTK.np - 1; kp++) {
+ for (kp = EMFSTK.npstrt - 1; kp <= EMFSTK.npemf - 1; kp++) {
//* save the parent track number and reset it at each loop
Int_t done = 1;
Int_t parent = TRACKR.ispusr[mkbmx2-1];
Int_t flukaid = 0;
- if (EMFSTK.iq[kp] == -1) flukaid = 3;
- else if (EMFSTK.iq[kp] == 0) flukaid = 7;
- else if (EMFSTK.iq[kp] == 0) flukaid = 4;
+
+ if (EMFSTK.ichemf[kp] == -1) flukaid = 3;
+ else if (EMFSTK.ichemf[kp] == 0) flukaid = 7;
+ else if (EMFSTK.ichemf[kp] == 0) flukaid = 4;
Int_t pdg = fluka->PDGFromId(flukaid);
- Double_t e = EMFSTK.e[kp] * emvgev;
+ Double_t e = EMFSTK.etemf[kp] * emvgev;
Double_t p = sqrt(e * e - PAPROP.am[flukaid+6] * PAPROP.am[flukaid+6]);
Double_t px = p * EMFSTK.u[kp];
Double_t pz = p * EMFSTK.v[kp];
Double_t vx = EMFSTK.x[kp];
Double_t vy = EMFSTK.y[kp];
Double_t vz = EMFSTK.z[kp];
- Double_t weight = EMFSTK.wt[kp];
+ Double_t weight = EMFSTK.wtemf[kp];
+
Int_t ntr;
TMCProcess mech;
Int_t is = 0;
//* Compton: secondary is true only if charged (e+, e-)
else if ((EVTFLG.lcmptn == 1)) {
- if (EMFSTK.iq[kp] != 0) {
+
+ if (EMFSTK.ichemf[kp] != 0) {
mech = kPCompton;
cppstack->SetTrack(done, parent, pdg,
px, py, pz, e, vx, vy, vz, tof,
//* Bremsstrahlung: true secondary only if charge = 0 (photon)
else if ((EVTFLG.lbrmsp == 1)) {
- if (EMFSTK.iq[kp] == 0) {
+ if (EMFSTK.ichemf[kp] == 0) {
mech = kPBrem;
cppstack->SetTrack(done, parent, pdg,
px, py, pz, e, vx, vy, vz, tof,
//* Delta ray: If Bhabha, true secondary only if negative (electron)
else if ((EVTFLG.ldltry == 1)) {
if (lbhabh == 1) {
- if (EMFSTK.iq[kp] == -1) {
+ if (EMFSTK.ichemf[kp] == -1) {
mech = kPDeltaRay;
cppstack->SetTrack(done, parent, pdg,
px, py, pz, e, vx, vy, vz, tof,
//* Delta ray: Otherwise Moller: true secondary is the electron with
//* lower energy, which has been put higher in the stack
- else if (kp == EMFSTK.np-1) {
+ else if (kp == EMFSTK.npemf-1) {
mech = kPDeltaRay;
cppstack->SetTrack(done, parent, pdg,
px, py, pz, e, vx, vy, vz, tof,
} // end of loop
// !!! TO BE CONFIRMED !!!
-// EVTFLG.ntrcks = EMFSTK.iespak[EMFSTK.np-1][mkbmx2-1];
-
} // end of stupre
} // end of extern "C"