#include #include #include #include #include "Garfield/ComponentAnalyticField.hh" #include "Garfield/MediumMagboltz.hh" #include "Garfield/Sensor.hh" #include "Garfield/DriftLineRKF.hh" #include "Garfield/AvalancheMC.hh" #include #include #include using namespace Garfield; int main(int argc, char * argv[]) { TApplication app("app", &argc, argv); MediumMagboltz gas; const std::string path = std::getenv("GARFIELD_INSTALL"); gas.LoadNegativeIonMobility(path + "/share/Garfield/Data/IonMobility_SF6-_SF6.txt"); double vx = 0., vy = 0., vz = 0.; gas.NegativeIonVelocity(1000., 0., 0., 0., 0., 0., vx, vy, vz); std::cout << "Expected drift time over 1 cm: " << 1. / fabs(vx) << " ns.\n"; ComponentAnalyticField cmp; cmp.SetMedium(&gas); cmp.AddPlaneY(1., 0.); cmp.AddPlaneY(0., 1000.); Sensor sensor; sensor.AddComponent(&cmp); AvalancheMC aval; aval.SetSensor(&sensor); aval.SetDistanceSteps(100.e-4); // aval.EnableDebugging(); aval.DriftNegativeIon(0., 1., 0., 0.); const double t1 = aval.GetIons()[0].path.back().t; std::cout << "Drift time: " << t1 << " ns\n"; }