# 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)?

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.