@@ -2464,10 +2464,14 @@ cogen_header(struct instr_def *instr, char *output_name)
24642464 cout(" randstate_t randstate[7];"); // for the KISS generator
24652465 cout(" double t, p; /* time, event weight */");
24662466 cout(" #ifdef TOF_TRAIN");
2467- cout(" int Ntof_train; /* initialised like e.g. ncount, seed from cmdline */");
2468- cout(" double *tof_train;");
2467+ cout(" int N_trains; /* initialised like e.g. ncount, seed from cmdline */");
2468+ cout(" double *t_offset;");
2469+ cout(" double *p_trains;");
2470+ cout(" int *alive_trains;");
2471+ cout(" #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)");
2472+ cout(" #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)");
2473+ cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)");
24692474 cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */");
2470- cout(" #pragma acc shape(tof_train[0:Ntof_train]) init_needed(Ntof_train)");
24712475 cout(" #endif /* TOF_TRAIN */");
24722476 cout(" long long _uid; /* Unique event ID */");
24732477 cout(" long _index; /* component index where to send this event */");
@@ -2542,29 +2546,33 @@ cogen_header(struct instr_def *instr, char *output_name)
25422546#if MCCODE_PROJECT == 1 /* neutron */
25432547 cout("#pragma acc routine");
25442548 cout("_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz,");
2545- cout(" double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop);");
2549+ cout(" double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF );");
25462550 cout("#pragma acc routine");
25472551 cout("_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z,");
25482552 cout(" double *vx, double *vy, double *vz, double *t,");
25492553 cout(" double *sx, double *sy, double *sz, double *p);");
25502554#elif MCCODE_PROJECT == 2 /* xray */
25512555 cout("#pragma acc routine");
25522556 cout("_class_particle mcsetstate(double x, double y, double z, double kx, double ky, double kz,");
2553- cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop);");
2557+ cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF );");
25542558 cout("#pragma acc routine");
25552559 cout("_class_particle mcgetstate(_class_particle mcphoton, double *x, double *y, double *z, double *kx, double *ky, double *kz,");
25562560 cout(" double *phi, double *t, double *Ex, double *Ey, double *Ez, double *p);");
25572561#endif
25582562 cout("");
25592563 cout("extern int mcgravitation; /* flag to enable gravitation */");
25602564 cout("#pragma acc declare create ( mcgravitation )");
2565+ cout("");
2566+
2567+ cout("extern int NTOF; /* TOF_train suppport */");
2568+ cout("#pragma acc declare create ( NTOF )");
25612569
25622570 cout("");
25632571 cout("_class_particle mcgenstate(void) {");
25642572#if MCCODE_PROJECT == 1 /* neutron */
2565- cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0);");
2573+ cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF );");
25662574#elif MCCODE_PROJECT == 2 /* xray */
2567- cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, mcgravitation, NULL, 0 );");
2575+ cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, mcgravitation, NULL);");
25682576#endif
25692577 cout(" return(particle);");
25702578 cout("}");
0 commit comments