Can I use Garfield++ to simulate the signal produced in a detector by low energy photons (eg X-rays at 5.9keV)?

I saw in the manual a function for photon transport:void TransportPhoton(const double x0, const double y0, const double z0,
const double t0, const double e0,
const double dx0, const double dy0, const double dz0,int& nel);。
Can I use Garfield++ to simulate the signal produced in a detector by low energy photons (eg X-rays at 5.9keV)?
Thank you for your answer.

Hi,
yes, you can. You can find an example in Examples/Heed/:

Ok,Thank you.
How to continue to simulate the drift of photoelectrons and Auger-electrons produced in the photon conversion after using TransportPhoton?
Is it possible to continue cycling the electrons in all the clusters?
Use this code from the manual?
// Loop over the clusters along the track.

double xc = 0., yc = 0., zc = 0., tc = 0., ec = 0., extra = 0.;

int nc = 0;

while (track.GetCluster(xc, yc, zc, tc, nc, ec, extra)) {

// Loop over the electrons in the cluster.

for (int k = 0; k < nc; ++k) {

double xe = 0., ye = 0., ze = 0., te = 0., ee = 0.;

double dx = 0., dy = 0., dz = 0.;

track.GetElectron(k, xe, ye, ze, te, ee, dx, dy, dz);

drift.DriftElectron(xe, ye, ze, te);

}

}

You can loop over the electrons produced by the photon like this:

track.TransportPhoton(x0, y0, z0, t0, egamma, 0., 0., 1., ne);
for (int k = 0; k < ne; ++k) {
  double xe = 0., ye = 0., ze = 0., te = 0., ee = 0.;
  double dx = 0., dy = 0., dz = 0.;
  track.GetElectron(k, xe, ye, ze, te, ee, dx, dy, dz);
  // ...
}

Thank you.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.