+
+void TFluka::CalcPrimaryIonisationTime()
+{
+ // Calculates the primary ionisation time
+ if (fPItime) delete [] fPItime;
+ fPItime = new Double_t[fNPI];
+ if (fPIlength) delete [] fPIlength;
+ fPIlength = new Double_t[fNPI];
+ //
+ Double_t px, py, pz, e, t;
+ TrackMomentum(px, py, pz, e);
+ Double_t p = TMath::Sqrt(px * px + py * py + pz * pz);
+ Double_t beta = p / e;
+ Double_t x0, y0, z0;
+ fPItime[fNPI -1] = TRACKR.atrack;
+ fPIlength[fNPI -1] = TRACKR.cmtrck;
+ GetPrimaryElectronPosition(fNPI - 1, x0, y0, z0, t);
+ if (fNPI > 1) {
+ for (Int_t i = fNPI - 2; i > -1; i--) {
+ Double_t x, y, z, t;
+ GetPrimaryElectronPosition(i, x, y, z, t);
+ Double_t ds = TMath::Sqrt((x-x0) * (x-x0) + (y-y0) * (y-y0) + (z-z0) * (z-z0));
+ fPItime[i] = fPItime[i+1] - ds / (beta * 2.99792458e10);
+ fPIlength[i] = fPIlength[i+1] - ds;
+ x0 = x; y0 = y; z0 = z;
+ }
+ }
+
+}