Hello,
I am using Garfield++ packages and specifically AvalancheMicroscopic to simulate a gaseous detector similar to Garfield example “DriftTube”.
In short, how can I be sure that the simulation indeed creation an avalanche?
( I have looked at the header and source files and am not quite sure )
In length, those are the steps the simulation is doing. aval is:
AvalancheMicroscopic* aval = new AvalancheMicroscopic();
I am generating a random trajectory that generates a track with clusters along it. I am going over all electrons in all clusters with:
while (track->GetCluster(xcls, ycls, zcls, tcls, ne, ni, e, extra))
{
double xe1, ye1, ze1, te1, e1;
double dxe1, dye1, dze1;
double xi1, yi1, zi1, ti1;
double xeS, yeS, zeS, teS, xeE, yeE, zeE, teE;
int status;
for (int j=1; j<=ne; j++)
{
// electrons ionized by main particle
track->GetElectron(j-1,xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
aval->DriftElectron(xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
aval->AvalancheElectron(xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
}
}
I also added some other functions to convince myself that an avalanche is happening:
while (track->GetCluster(xcls, ycls, zcls, tcls, ne, ni, e, extra))
{
double xe1, ye1, ze1, te1, e1;
double dxe1, dye1, dze1;
double xi1, yi1, zi1, ti1;
double xeS, yeS, zeS, teS, xeE, yeE, zeE, teE;
int status;
for (int j=1; j<=ne; j++)
{
// electrons ionized by main particle
track->GetElectron(j-1,xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
aval->DriftElectron(xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
aval->AvalancheElectron(xe1, ye1, ze1, te1, e1, dxe1, dye1, dze1);
cout << "\nAvalancheSizeLimit = " << aval->GetAvalancheSizeLimit() << "\n" ;
int electron_number, holes_number, ion_number ;
aval->GetAvalancheSize( electron_number, holes_number, ion_number) ;
cout << electron_number << " " << holes_number << " " << ion_number << "\n" ;
cout << "# Of Electron End points = " << aval->GetNumberOfElectronEndpoints() << "\n" ;
}
}
After all of that, I am successfully simulating a signal using the transfer function from the “DriftTube” example, the signal reaching a peak of -0.025 [fC].
Are avalanches happening in these simulations?
Have a good day,
Dvir
ROOT Version: 6.24.06
Platform: Ubuntu20.04
Compiler: g++ 9.4.0