12 #include "art/Framework/Core/EDAnalyzer.h"
13 #include "art/Framework/Core/ModuleMacros.h"
14 #include "art/Framework/Principal/Event.h"
25 explicit LArPropTest(fhicl::ParameterSet
const& pset);
41 bool assert_flag =
false;
42 assert((assert_flag =
true, assert_flag));
44 std::cerr <<
"Assert is disabled" << std::endl;
52 art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataForJob();
56 std::cout <<
"Density = " << detprop.Density() <<
" g/cm^3" << std::endl;
57 std::cout <<
"Drift velocity = " << detprop.DriftVelocity() <<
" cm/usec" << std::endl;
58 std::cout <<
"Efield = " << detprop.Efield() <<
" kV/cm" << std::endl;
59 std::cout <<
"Temperature = " << detprop.Temperature() <<
" Kelvin" << std::endl;
60 std::cout <<
"Electron lifetime = " << detprop.ElectronLifetime() <<
" usec" << std::endl;
67 assert(detprop.Density() == detprop.Density(detprop.Temperature()));
68 assert(detprop.Density() != detprop.Density(detprop.Temperature() + 0.1));
69 assert(detprop.DriftVelocity() == detprop.DriftVelocity(detprop.Efield()));
70 assert(detprop.DriftVelocity() ==
71 detprop.DriftVelocity(detprop.Efield(), detprop.Temperature()));
75 std::cout <<
"\nDrift Velocity vs. Electric Field.\n"
76 <<
" E (kV/cm) v (cm/us)" << std::fixed << std::endl;
77 for (
int i = 0; i < 3; ++i) {
83 double v = detprop.DriftVelocity(e);
84 std::cout << std::setprecision(3) << std::setw(15) << e << std::setprecision(4)
85 << std::setw(15) << v << std::endl;
92 "http://pdg.lbl.gov/2011/AtomicNuclearProperties/MUON_ELOSS_TABLES/muonloss_289.dat\n"
95 double mass = 0.10565839;
97 1.0, 1.2, 1.4, 1.7, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 7.0, 8.0, 9.0};
99 std::ios_base::fmtflags flags =
std::cout.flags();
100 std::cout <<
" T p Ionization dE/dx|_R\n"
101 <<
" [MeV] [MeV/c] ---[MeV cm^2/g]----\n"
102 << std::scientific << std::setprecision(3);
106 for (
double tbase = 1.; tbase <= 1.e9; tbase *= 10.) {
107 for (
int i = 0; i < 16; ++i) {
111 double t = tbase * fact[i];
116 double p = std::sqrt(1.
e-6 * t * t + 2.
e-3 * t * mass);
120 double dedxr = detprop.Eloss(p, mass, 0.05) / detprop.Density();
121 double dedx = detprop.Eloss(p, mass, 0.) / detprop.Density();
122 std::cout << std::setw(10) << t << std::setw(10) << 1000. * p << std::setw(10) << dedx
123 << std::setw(10) << dedxr << std::endl;
Utilities related to art service access.
BEGIN_PROLOG could also be cerr
void analyze(const art::Event &evt) override
LArPropTest(fhicl::ParameterSet const &pset)
virtual double RadiationLength() const =0
BEGIN_PROLOG could also be cout