#include #include #include #include #include #include #include "Garfield/Random.hh" #include "Garfield/ViewCell.hh" #include "Garfield/ViewDrift.hh" #include "Garfield/ViewSignal.hh" #include "Garfield/ViewField.hh" #include "Garfield/ComponentAnalyticField.hh" #include "Garfield/ComponentConstant.hh" #include "Garfield/MediumMagboltz.hh" #include "Garfield/Sensor.hh" #include "Garfield/DriftLineRKF.hh" #include "Garfield/AvalancheMicroscopic.hh" #include "Garfield/AvalancheMC.hh" #include "Garfield/TrackHeed.hh" #include "Garfield/ViewMedium.hh" //#include "Garfield/FundamentalConstants. hh" using namespace Garfield; using namespace std; int main(int argc, char * argv[]) { TApplication app("app", &argc, argv); const double pressure = 1.0 * AtmosphericPressure; const double temperature = 293.15; // Setup the gas. MediumMagboltz gas; //gas. SetComposition("Ar", 95.0 , "Isobutane", 5.0); gas. SetComposition("Ar", 94.05 , "Isobutane", 4.95, "Oxygen", 1); gas. SetTemperature(temperature); gas. SetPressure(pressure); // Set the field range to be covered by the gas table. const int nFields = 20; const double emin = 100. ; const double emax = 100000. ; // Flag to request logarithmic spacing. constexpr bool useLog = true; gas. SetFieldGrid(emin, emax, nFields, useLog); const int ncoll = 10; // Run Magboltz to generate the gas table. gas. GenerateGasTable(ncoll); // Save the table. gas. WriteGasFile("ArIso5_1pcO2.gas"); app. Run(kTRUE); ViewMedium view; view.SetMedium(&gas); view.PlotElectronVelocity('e'); }