refactor: proton
This commit is contained in:
parent
d064f63be0
commit
a2ec7bf56c
|
@ -1,31 +0,0 @@
|
||||||
# -----------------------------------------------------------------
|
|
||||||
# Mobility of Ar+ ions in Ar measured for T=300 K
|
|
||||||
# Accuracy: 1 % below 250 and 3 % above
|
|
||||||
# Data from Hornbeck 51 + Beaty 68
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
0 1.53
|
|
||||||
8 1.53
|
|
||||||
10 1.53
|
|
||||||
12 1.53
|
|
||||||
15 1.52
|
|
||||||
20 1.51
|
|
||||||
25 1.49
|
|
||||||
30 1.47
|
|
||||||
40 1.44
|
|
||||||
50 1.41
|
|
||||||
60 1.38
|
|
||||||
80 1.32
|
|
||||||
100 1.27
|
|
||||||
120 1.22
|
|
||||||
150 1.16
|
|
||||||
200 1.06
|
|
||||||
250 0.99
|
|
||||||
300 0.95
|
|
||||||
400 0.85
|
|
||||||
500 0.78
|
|
||||||
600 0.72
|
|
||||||
800 0.63
|
|
||||||
1000 0.56
|
|
||||||
1200 0.51
|
|
||||||
1500 0.46
|
|
||||||
2000 0.40
|
|
|
@ -1,23 +0,0 @@
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Mobility of Ar+ ions in He measured at T=300 K
|
|
||||||
# Accuracy: < 7%
|
|
||||||
# Data from Ellis 1976
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
5 20.8
|
|
||||||
10 21.3
|
|
||||||
15 21.5
|
|
||||||
20 21.6
|
|
||||||
25 21.4
|
|
||||||
30 21.2
|
|
||||||
35 20.9
|
|
||||||
40 20.6
|
|
||||||
45 20.0
|
|
||||||
50 19.6
|
|
||||||
60 18.7
|
|
||||||
70 18.0
|
|
||||||
80 17.1
|
|
||||||
90 16.4
|
|
||||||
100 15.7
|
|
||||||
110 15.2
|
|
||||||
120 14.6
|
|
||||||
130 14.3
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,361 +0,0 @@
|
||||||
0.000000e+00 0.000000e+00
|
|
||||||
1.000000e-03 0.000000e+00
|
|
||||||
2.000000e-03 0.000000e+00
|
|
||||||
3.000000e-03 0.000000e+00
|
|
||||||
4.000000e-03 0.000000e+00
|
|
||||||
5.000000e-03 0.000000e+00
|
|
||||||
6.000000e-03 0.000000e+00
|
|
||||||
7.000000e-03 1.999974e-03
|
|
||||||
8.000000e-03 1.100004e-02
|
|
||||||
9.000000e-03 2.999997e-02
|
|
||||||
1.000000e-02 5.799997e-02
|
|
||||||
1.100000e-02 9.099996e-02
|
|
||||||
1.200000e-02 1.270000e-01
|
|
||||||
1.300000e-02 1.620001e-01
|
|
||||||
1.400000e-02 1.940000e-01
|
|
||||||
1.500000e-02 2.230000e-01
|
|
||||||
1.600000e-02 2.460001e-01
|
|
||||||
1.700000e-02 2.640001e-01
|
|
||||||
1.800000e-02 2.760000e-01
|
|
||||||
1.900000e-02 2.840000e-01
|
|
||||||
2.000000e-02 2.860000e-01
|
|
||||||
2.100000e-02 2.850000e-01
|
|
||||||
2.200000e-02 2.790000e-01
|
|
||||||
2.300000e-02 2.710000e-01
|
|
||||||
2.400000e-02 2.610000e-01
|
|
||||||
2.500000e-02 2.490000e-01
|
|
||||||
2.600000e-02 2.350000e-01
|
|
||||||
2.700000e-02 2.210000e-01
|
|
||||||
2.800000e-02 2.060000e-01
|
|
||||||
2.900000e-02 1.910000e-01
|
|
||||||
3.000000e-02 1.760000e-01
|
|
||||||
3.100000e-02 1.620001e-01
|
|
||||||
3.200000e-02 1.480000e-01
|
|
||||||
3.300000e-02 1.330000e-01
|
|
||||||
3.400000e-02 1.180000e-01
|
|
||||||
3.500000e-02 1.040000e-01
|
|
||||||
3.600000e-02 9.000003e-02
|
|
||||||
3.700000e-02 7.700002e-02
|
|
||||||
3.800000e-02 6.500006e-02
|
|
||||||
3.900000e-02 5.400002e-02
|
|
||||||
4.000000e-02 4.299998e-02
|
|
||||||
4.100000e-02 3.299999e-02
|
|
||||||
4.200000e-02 2.400005e-02
|
|
||||||
4.300000e-02 1.600003e-02
|
|
||||||
4.400000e-02 8.000016e-03
|
|
||||||
4.500000e-02 1.000047e-03
|
|
||||||
4.600000e-02 -6.000042e-03
|
|
||||||
4.700000e-02 -1.199996e-02
|
|
||||||
4.800000e-02 -1.699996e-02
|
|
||||||
4.900000e-02 -2.199996e-02
|
|
||||||
5.000000e-02 -2.699995e-02
|
|
||||||
5.100000e-02 -3.100002e-02
|
|
||||||
5.200000e-02 -3.400004e-02
|
|
||||||
5.300000e-02 -3.699994e-02
|
|
||||||
5.400000e-02 -3.999996e-02
|
|
||||||
5.500000e-02 -4.199994e-02
|
|
||||||
5.600000e-02 -4.400003e-02
|
|
||||||
5.700000e-02 -4.600000e-02
|
|
||||||
5.800000e-02 -4.799998e-02
|
|
||||||
5.900000e-02 -4.900002e-02
|
|
||||||
6.000000e-02 -5.100000e-02
|
|
||||||
6.100000e-02 -5.200005e-02
|
|
||||||
6.200000e-02 -5.299997e-02
|
|
||||||
6.300000e-02 -5.400002e-02
|
|
||||||
6.400000e-02 -5.400002e-02
|
|
||||||
6.500000e-02 -5.499995e-02
|
|
||||||
6.600000e-02 -5.599999e-02
|
|
||||||
6.700000e-02 -5.700004e-02
|
|
||||||
6.800000e-02 -5.700004e-02
|
|
||||||
6.900000e-02 -5.799997e-02
|
|
||||||
7.000000e-02 -5.900002e-02
|
|
||||||
7.100000e-02 -5.900002e-02
|
|
||||||
7.200000e-02 -5.999994e-02
|
|
||||||
7.300000e-02 -5.999994e-02
|
|
||||||
7.400000e-02 -5.999994e-02
|
|
||||||
7.500000e-02 -6.099999e-02
|
|
||||||
7.600000e-02 -6.099999e-02
|
|
||||||
7.700000e-02 -6.099999e-02
|
|
||||||
7.800000e-02 -6.099999e-02
|
|
||||||
7.900000e-02 -6.099999e-02
|
|
||||||
8.000000e-02 -6.099999e-02
|
|
||||||
8.100000e-02 -6.099999e-02
|
|
||||||
8.200000e-02 -6.099999e-02
|
|
||||||
8.300000e-02 -6.099999e-02
|
|
||||||
8.400000e-02 -6.099999e-02
|
|
||||||
8.500000e-02 -6.099999e-02
|
|
||||||
8.600000e-02 -5.999994e-02
|
|
||||||
8.700000e-02 -5.999994e-02
|
|
||||||
8.800000e-02 -5.999994e-02
|
|
||||||
8.900000e-02 -5.900002e-02
|
|
||||||
9.000000e-02 -5.900002e-02
|
|
||||||
9.100000e-02 -5.799997e-02
|
|
||||||
9.200000e-02 -5.799997e-02
|
|
||||||
9.300000e-02 -5.700004e-02
|
|
||||||
9.400000e-02 -5.700004e-02
|
|
||||||
9.500000e-02 -5.599999e-02
|
|
||||||
9.600000e-02 -5.599999e-02
|
|
||||||
9.700000e-02 -5.499995e-02
|
|
||||||
9.800000e-02 -5.400002e-02
|
|
||||||
9.900000e-02 -5.400002e-02
|
|
||||||
1.000000e-01 -5.299997e-02
|
|
||||||
1.010000e-01 -5.299997e-02
|
|
||||||
1.020000e-01 -5.200005e-02
|
|
||||||
1.030000e-01 -5.100000e-02
|
|
||||||
1.040000e-01 -5.100000e-02
|
|
||||||
1.050000e-01 -4.999995e-02
|
|
||||||
1.060000e-01 -4.999995e-02
|
|
||||||
1.070000e-01 -4.900002e-02
|
|
||||||
1.080000e-01 -4.900002e-02
|
|
||||||
1.090000e-01 -4.799998e-02
|
|
||||||
1.100000e-01 -4.699993e-02
|
|
||||||
1.110000e-01 -4.699993e-02
|
|
||||||
1.120000e-01 -4.600000e-02
|
|
||||||
1.130000e-01 -4.600000e-02
|
|
||||||
1.140000e-01 -4.499996e-02
|
|
||||||
1.150000e-01 -4.499996e-02
|
|
||||||
1.160000e-01 -4.400003e-02
|
|
||||||
1.170000e-01 -4.299998e-02
|
|
||||||
1.180000e-01 -4.299998e-02
|
|
||||||
1.190000e-01 -4.199994e-02
|
|
||||||
1.200000e-01 -4.199994e-02
|
|
||||||
1.210000e-01 -4.100001e-02
|
|
||||||
1.220000e-01 -4.100001e-02
|
|
||||||
1.230000e-01 -3.999996e-02
|
|
||||||
1.240000e-01 -3.999996e-02
|
|
||||||
1.250000e-01 -3.900003e-02
|
|
||||||
1.260000e-01 -3.900003e-02
|
|
||||||
1.270000e-01 -3.799999e-02
|
|
||||||
1.280000e-01 -3.799999e-02
|
|
||||||
1.290000e-01 -3.699994e-02
|
|
||||||
1.300000e-01 -3.699994e-02
|
|
||||||
1.310000e-01 -3.699994e-02
|
|
||||||
1.320000e-01 -3.600001e-02
|
|
||||||
1.330000e-01 -3.600001e-02
|
|
||||||
1.340000e-01 -3.499997e-02
|
|
||||||
1.350000e-01 -3.499997e-02
|
|
||||||
1.360000e-01 -3.400004e-02
|
|
||||||
1.370000e-01 -3.400004e-02
|
|
||||||
1.380000e-01 -3.299999e-02
|
|
||||||
1.390000e-01 -3.299999e-02
|
|
||||||
1.400000e-01 -3.299999e-02
|
|
||||||
1.410000e-01 -3.199995e-02
|
|
||||||
1.420000e-01 -3.199995e-02
|
|
||||||
1.430000e-01 -3.100002e-02
|
|
||||||
1.440000e-01 -3.100002e-02
|
|
||||||
1.450000e-01 -2.999997e-02
|
|
||||||
1.460000e-01 -2.999997e-02
|
|
||||||
1.470000e-01 -2.999997e-02
|
|
||||||
1.480000e-01 -2.900004e-02
|
|
||||||
1.490000e-01 -2.900004e-02
|
|
||||||
1.500000e-01 -2.900004e-02
|
|
||||||
1.510000e-01 -2.800000e-02
|
|
||||||
1.520000e-01 -2.800000e-02
|
|
||||||
1.530000e-01 -2.699995e-02
|
|
||||||
1.540000e-01 -2.699995e-02
|
|
||||||
1.550000e-01 -2.699995e-02
|
|
||||||
1.560000e-01 -2.600002e-02
|
|
||||||
1.570000e-01 -2.600002e-02
|
|
||||||
1.580000e-01 -2.600002e-02
|
|
||||||
1.590000e-01 -2.499998e-02
|
|
||||||
1.600000e-01 -2.499998e-02
|
|
||||||
1.610000e-01 -2.499998e-02
|
|
||||||
1.620000e-01 -2.399993e-02
|
|
||||||
1.630000e-01 -2.399993e-02
|
|
||||||
1.640000e-01 -2.399993e-02
|
|
||||||
1.650000e-01 -2.300000e-02
|
|
||||||
1.660000e-01 -2.300000e-02
|
|
||||||
1.670000e-01 -2.300000e-02
|
|
||||||
1.680000e-01 -2.199996e-02
|
|
||||||
1.690000e-01 -2.199996e-02
|
|
||||||
1.700000e-01 -2.199996e-02
|
|
||||||
1.710000e-01 -2.100003e-02
|
|
||||||
1.720000e-01 -2.100003e-02
|
|
||||||
1.730000e-01 -2.100003e-02
|
|
||||||
1.740000e-01 -2.100003e-02
|
|
||||||
1.750000e-01 -1.999998e-02
|
|
||||||
1.760000e-01 -1.999998e-02
|
|
||||||
1.770000e-01 -1.999998e-02
|
|
||||||
1.780000e-01 -1.999998e-02
|
|
||||||
1.790000e-01 -1.899993e-02
|
|
||||||
1.800000e-01 -1.899993e-02
|
|
||||||
1.810000e-01 -1.899993e-02
|
|
||||||
1.820000e-01 -1.800001e-02
|
|
||||||
1.830000e-01 -1.800001e-02
|
|
||||||
1.840000e-01 -1.800001e-02
|
|
||||||
1.850000e-01 -1.800001e-02
|
|
||||||
1.860000e-01 -1.699996e-02
|
|
||||||
1.870000e-01 -1.699996e-02
|
|
||||||
1.880000e-01 -1.699996e-02
|
|
||||||
1.890000e-01 -1.699996e-02
|
|
||||||
1.900000e-01 -1.699996e-02
|
|
||||||
1.910000e-01 -1.600003e-02
|
|
||||||
1.920000e-01 -1.600003e-02
|
|
||||||
1.930000e-01 -1.600003e-02
|
|
||||||
1.940000e-01 -1.600003e-02
|
|
||||||
1.950000e-01 -1.499999e-02
|
|
||||||
1.960000e-01 -1.499999e-02
|
|
||||||
1.970000e-01 -1.499999e-02
|
|
||||||
1.980000e-01 -1.499999e-02
|
|
||||||
1.990000e-01 -1.499999e-02
|
|
||||||
2.000000e-01 -1.399994e-02
|
|
||||||
2.010000e-01 -1.399994e-02
|
|
||||||
2.020000e-01 -1.399994e-02
|
|
||||||
2.030000e-01 -1.399994e-02
|
|
||||||
2.040000e-01 -1.399994e-02
|
|
||||||
2.050000e-01 -1.300001e-02
|
|
||||||
2.060000e-01 -1.300001e-02
|
|
||||||
2.070000e-01 -1.300001e-02
|
|
||||||
2.080000e-01 -1.300001e-02
|
|
||||||
2.090000e-01 -1.300001e-02
|
|
||||||
2.100000e-01 -1.199996e-02
|
|
||||||
2.110000e-01 -1.199996e-02
|
|
||||||
2.120000e-01 -1.199996e-02
|
|
||||||
2.130000e-01 -1.199996e-02
|
|
||||||
2.140000e-01 -1.199996e-02
|
|
||||||
2.150000e-01 -1.100004e-02
|
|
||||||
2.160000e-01 -1.100004e-02
|
|
||||||
2.170000e-01 -1.100004e-02
|
|
||||||
2.180000e-01 -1.100004e-02
|
|
||||||
2.190000e-01 -1.100004e-02
|
|
||||||
2.200000e-01 -1.100004e-02
|
|
||||||
2.210000e-01 -9.999990e-03
|
|
||||||
2.220000e-01 -9.999990e-03
|
|
||||||
2.230000e-01 -9.999990e-03
|
|
||||||
2.240000e-01 -9.999990e-03
|
|
||||||
2.250000e-01 -9.999990e-03
|
|
||||||
2.260000e-01 -9.999990e-03
|
|
||||||
2.270000e-01 -8.999944e-03
|
|
||||||
2.280000e-01 -8.999944e-03
|
|
||||||
2.290000e-01 -8.999944e-03
|
|
||||||
2.300000e-01 -8.999944e-03
|
|
||||||
2.310000e-01 -8.999944e-03
|
|
||||||
2.320000e-01 -8.999944e-03
|
|
||||||
2.330000e-01 -8.999944e-03
|
|
||||||
2.340000e-01 -8.000016e-03
|
|
||||||
2.350000e-01 -8.000016e-03
|
|
||||||
2.360000e-01 -8.000016e-03
|
|
||||||
2.370000e-01 -8.000016e-03
|
|
||||||
2.380000e-01 -8.000016e-03
|
|
||||||
2.390000e-01 -8.000016e-03
|
|
||||||
2.400000e-01 -8.000016e-03
|
|
||||||
2.410000e-01 -8.000016e-03
|
|
||||||
2.420000e-01 -6.999969e-03
|
|
||||||
2.430000e-01 -6.999969e-03
|
|
||||||
2.440000e-01 -6.999969e-03
|
|
||||||
2.450000e-01 -6.999969e-03
|
|
||||||
2.460000e-01 -6.999969e-03
|
|
||||||
2.470000e-01 -6.999969e-03
|
|
||||||
2.480000e-01 -6.999969e-03
|
|
||||||
2.490000e-01 -6.999969e-03
|
|
||||||
2.500000e-01 -6.999969e-03
|
|
||||||
2.510000e-01 -6.000042e-03
|
|
||||||
2.520000e-01 -6.000042e-03
|
|
||||||
2.530000e-01 -6.000042e-03
|
|
||||||
2.540000e-01 -6.000042e-03
|
|
||||||
2.550000e-01 -6.000042e-03
|
|
||||||
2.560000e-01 -6.000042e-03
|
|
||||||
2.570000e-01 -6.000042e-03
|
|
||||||
2.580000e-01 -6.000042e-03
|
|
||||||
2.590000e-01 -6.000042e-03
|
|
||||||
2.600000e-01 -6.000042e-03
|
|
||||||
2.610000e-01 -4.999995e-03
|
|
||||||
2.620000e-01 -4.999995e-03
|
|
||||||
2.630000e-01 -4.999995e-03
|
|
||||||
2.640000e-01 -4.999995e-03
|
|
||||||
2.650000e-01 -4.999995e-03
|
|
||||||
2.660000e-01 -4.999995e-03
|
|
||||||
2.670000e-01 -4.999995e-03
|
|
||||||
2.680000e-01 -4.999995e-03
|
|
||||||
2.690000e-01 -4.999995e-03
|
|
||||||
2.700000e-01 -4.999995e-03
|
|
||||||
2.710000e-01 -4.999995e-03
|
|
||||||
2.720000e-01 -3.999949e-03
|
|
||||||
2.730000e-01 -3.999949e-03
|
|
||||||
2.740000e-01 -3.999949e-03
|
|
||||||
2.750000e-01 -3.999949e-03
|
|
||||||
2.760000e-01 -3.999949e-03
|
|
||||||
2.770000e-01 -3.999949e-03
|
|
||||||
2.780000e-01 -3.999949e-03
|
|
||||||
2.790000e-01 -3.999949e-03
|
|
||||||
2.800000e-01 -3.999949e-03
|
|
||||||
2.810000e-01 -3.999949e-03
|
|
||||||
2.820000e-01 -3.999949e-03
|
|
||||||
2.830000e-01 -3.999949e-03
|
|
||||||
2.840000e-01 -3.999949e-03
|
|
||||||
2.850000e-01 -3.999949e-03
|
|
||||||
2.860000e-01 -3.000021e-03
|
|
||||||
2.870000e-01 -3.000021e-03
|
|
||||||
2.880000e-01 -3.000021e-03
|
|
||||||
2.890000e-01 -3.000021e-03
|
|
||||||
2.900000e-01 -3.000021e-03
|
|
||||||
2.910000e-01 -3.000021e-03
|
|
||||||
2.920000e-01 -3.000021e-03
|
|
||||||
2.930000e-01 -3.000021e-03
|
|
||||||
2.940000e-01 -3.000021e-03
|
|
||||||
2.950000e-01 -3.000021e-03
|
|
||||||
2.960000e-01 -3.000021e-03
|
|
||||||
2.970000e-01 -3.000021e-03
|
|
||||||
2.980000e-01 -3.000021e-03
|
|
||||||
2.990000e-01 -3.000021e-03
|
|
||||||
3.000000e-01 -3.000021e-03
|
|
||||||
3.010000e-01 -3.000021e-03
|
|
||||||
3.020000e-01 -3.000021e-03
|
|
||||||
3.030000e-01 -1.999974e-03
|
|
||||||
3.040000e-01 -1.999974e-03
|
|
||||||
3.050000e-01 -1.999974e-03
|
|
||||||
3.060000e-01 -1.999974e-03
|
|
||||||
3.070000e-01 -1.999974e-03
|
|
||||||
3.080000e-01 -1.999974e-03
|
|
||||||
3.090000e-01 -1.999974e-03
|
|
||||||
3.100000e-01 -1.999974e-03
|
|
||||||
3.110000e-01 -1.999974e-03
|
|
||||||
3.120000e-01 -1.999974e-03
|
|
||||||
3.130000e-01 -1.999974e-03
|
|
||||||
3.140000e-01 -1.999974e-03
|
|
||||||
3.150000e-01 -1.999974e-03
|
|
||||||
3.160000e-01 -1.999974e-03
|
|
||||||
3.170000e-01 -1.999974e-03
|
|
||||||
3.180000e-01 -1.999974e-03
|
|
||||||
3.190000e-01 -1.999974e-03
|
|
||||||
3.200000e-01 -1.999974e-03
|
|
||||||
3.210000e-01 -1.999974e-03
|
|
||||||
3.220000e-01 -1.999974e-03
|
|
||||||
3.230000e-01 -1.999974e-03
|
|
||||||
3.240000e-01 -1.000047e-03
|
|
||||||
3.250000e-01 -1.000047e-03
|
|
||||||
3.260000e-01 -1.000047e-03
|
|
||||||
3.270000e-01 -1.000047e-03
|
|
||||||
3.280000e-01 -1.000047e-03
|
|
||||||
3.290000e-01 -1.000047e-03
|
|
||||||
3.300000e-01 -1.000047e-03
|
|
||||||
3.310000e-01 -1.000047e-03
|
|
||||||
3.320000e-01 -1.000047e-03
|
|
||||||
3.330000e-01 -1.000047e-03
|
|
||||||
3.340000e-01 -1.000047e-03
|
|
||||||
3.350000e-01 -1.000047e-03
|
|
||||||
3.360000e-01 -1.000047e-03
|
|
||||||
3.370000e-01 -1.000047e-03
|
|
||||||
3.380000e-01 -1.000047e-03
|
|
||||||
3.390000e-01 -1.000047e-03
|
|
||||||
3.400000e-01 -1.000047e-03
|
|
||||||
3.410000e-01 -1.000047e-03
|
|
||||||
3.420000e-01 -1.000047e-03
|
|
||||||
3.430000e-01 -1.000047e-03
|
|
||||||
3.440000e-01 -1.000047e-03
|
|
||||||
3.450000e-01 -1.000047e-03
|
|
||||||
3.460000e-01 -1.000047e-03
|
|
||||||
3.470000e-01 -1.000047e-03
|
|
||||||
3.480000e-01 -1.000047e-03
|
|
||||||
3.490000e-01 -1.000047e-03
|
|
||||||
3.500000e-01 -1.000047e-03
|
|
||||||
3.510000e-01 -1.000047e-03
|
|
||||||
3.520000e-01 -1.000047e-03
|
|
||||||
3.530000e-01 0.000000e+00
|
|
||||||
3.540000e-01 0.000000e+00
|
|
||||||
3.550000e-01 0.000000e+00
|
|
||||||
3.560000e-01 0.000000e+00
|
|
||||||
3.570000e-01 0.000000e+00
|
|
||||||
3.580000e-01 0.000000e+00
|
|
||||||
3.590000e-01 0.000000e+00
|
|
||||||
3.600000e-01 0.000000e+00
|
|
134
mdt_mt.C
134
mdt_mt.C
|
@ -1,134 +0,0 @@
|
||||||
#include <TApplication.h>
|
|
||||||
#include <TCanvas.h>
|
|
||||||
#include <TROOT.h>
|
|
||||||
|
|
||||||
#include "Garfield/ComponentAnalyticField.hh"
|
|
||||||
#include "Garfield/DriftLineRKF.hh"
|
|
||||||
#include "Garfield/MediumMagboltz.hh"
|
|
||||||
#include "Garfield/Sensor.hh"
|
|
||||||
#include "Garfield/TrackHeed.hh"
|
|
||||||
#include "Garfield/ViewCell.hh"
|
|
||||||
#include "Garfield/ViewDrift.hh"
|
|
||||||
#include "Garfield/ViewSignal.hh"
|
|
||||||
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <fstream>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
|
|
||||||
using namespace Garfield;
|
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
|
||||||
TApplication app("app", &argc, argv);
|
|
||||||
|
|
||||||
// Make a gas medium.
|
|
||||||
MediumMagboltz gas;
|
|
||||||
gas.LoadGasFile("ar_93_co2_7_3bar.gas");
|
|
||||||
auto installdir = std::getenv("GARFIELD_INSTALL");
|
|
||||||
if (!installdir) {
|
|
||||||
std::cerr << "GARFIELD_INSTALL variable not set.\n";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
const std::string path = installdir;
|
|
||||||
gas.LoadIonMobility(path + "/share/Garfield/Data/IonMobility_Ar+_Ar.txt");
|
|
||||||
|
|
||||||
// Make a component with analytic electric field.
|
|
||||||
ComponentAnalyticField cmp;
|
|
||||||
cmp.SetMedium(&gas);
|
|
||||||
// Wire radius [cm]
|
|
||||||
const double rWire = 25.e-4;
|
|
||||||
// Outer radius of the tube [cm]
|
|
||||||
const double rTube = 0.71;
|
|
||||||
// Voltages
|
|
||||||
const double vWire = 2730.;
|
|
||||||
const double vTube = 0.;
|
|
||||||
// Add the wire in the centre.
|
|
||||||
cmp.AddWire(0, 0, 2 * rWire, vWire, "s");
|
|
||||||
// Add the tube.
|
|
||||||
cmp.AddTube(rTube, vTube, 0, "t");
|
|
||||||
// Request calculation of the weighting field.
|
|
||||||
cmp.AddReadout("s");
|
|
||||||
|
|
||||||
// Make a sensor.
|
|
||||||
Sensor sensor;
|
|
||||||
sensor.AddComponent(&cmp);
|
|
||||||
sensor.AddElectrode(&cmp, "s");
|
|
||||||
// Set the signal time window.
|
|
||||||
const double tstep = 0.5;
|
|
||||||
const double tmin = -0.5 * tstep;
|
|
||||||
const unsigned int nbins = 1000;
|
|
||||||
sensor.SetTimeWindow(tmin, tstep, nbins);
|
|
||||||
sensor.ClearSignal();
|
|
||||||
|
|
||||||
// Set up Heed.
|
|
||||||
TrackHeed track;
|
|
||||||
track.SetParticle("muon");
|
|
||||||
track.SetEnergy(170.e9);
|
|
||||||
track.SetSensor(&sensor);
|
|
||||||
|
|
||||||
TCanvas* cD = nullptr;
|
|
||||||
ViewCell cellView;
|
|
||||||
ViewDrift driftView;
|
|
||||||
constexpr bool plotDrift = true;
|
|
||||||
if (plotDrift) {
|
|
||||||
cD = new TCanvas("cD", "", 600, 600);
|
|
||||||
cellView.SetCanvas(cD);
|
|
||||||
cellView.SetComponent(&cmp);
|
|
||||||
driftView.SetCanvas(cD);
|
|
||||||
track.EnablePlotting(&driftView);
|
|
||||||
}
|
|
||||||
|
|
||||||
TCanvas* cS = nullptr;
|
|
||||||
ViewSignal signalView;
|
|
||||||
constexpr bool plotSignal = true;
|
|
||||||
if (plotSignal) {
|
|
||||||
cS = new TCanvas("cS", "", 600, 600);
|
|
||||||
signalView.SetCanvas(cS);
|
|
||||||
signalView.SetSensor(&sensor);
|
|
||||||
signalView.SetLabelY("signal [fC]");
|
|
||||||
}
|
|
||||||
|
|
||||||
const double rTrack = 0.3;
|
|
||||||
const double x0 = rTrack;
|
|
||||||
const double y0 = -sqrt(rTube * rTube - rTrack * rTrack);
|
|
||||||
const unsigned int nTracks = 1;
|
|
||||||
for (unsigned int j = 0; j < nTracks; ++j) {
|
|
||||||
sensor.ClearSignal();
|
|
||||||
std::vector<std::array<double, 4> > electrons;
|
|
||||||
track.NewTrack(x0, y0, 0, 0, 0, 1, 0);
|
|
||||||
for (const auto& cluster : track.GetClusters()) {
|
|
||||||
for (const auto& electron : cluster.electrons) {
|
|
||||||
electrons.push_back({electron.x, electron.y, electron.z, electron.t});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Loop over the primary electrons along the track.
|
|
||||||
const std::size_t ne = electrons.size();
|
|
||||||
#pragma omp parallel for
|
|
||||||
for (size_t k = 0; k < ne; ++k) {
|
|
||||||
DriftLineRKF drift;
|
|
||||||
drift.SetSensor(&sensor);
|
|
||||||
drift.SetGainFluctuationsPolya(0., 20000., true);
|
|
||||||
// drift.EnableIonTail();
|
|
||||||
if (plotDrift) drift.EnablePlotting(&driftView);
|
|
||||||
const double xe = electrons[k][0];
|
|
||||||
const double ye = electrons[k][1];
|
|
||||||
const double ze = electrons[k][2];
|
|
||||||
const double te = electrons[k][3];
|
|
||||||
drift.DriftElectron(xe, ye, ze, te);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plotDrift) {
|
|
||||||
cD->Clear();
|
|
||||||
cellView.Plot2d();
|
|
||||||
constexpr bool twod = true;
|
|
||||||
constexpr bool drawaxis = false;
|
|
||||||
driftView.Plot(twod, drawaxis);
|
|
||||||
}
|
|
||||||
sensor.ConvoluteSignals();
|
|
||||||
int nt = 0;
|
|
||||||
if (!sensor.ComputeThresholdCrossings(-2., "s", nt)) continue;
|
|
||||||
if (plotSignal) signalView.PlotSignal("s");
|
|
||||||
}
|
|
||||||
|
|
||||||
app.Run(kTRUE);
|
|
||||||
}
|
|
150
proton.cpp
150
proton.cpp
|
@ -16,6 +16,9 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#define f_PLOT 0
|
||||||
|
#define f_PRINT 1
|
||||||
|
|
||||||
using namespace Garfield;
|
using namespace Garfield;
|
||||||
|
|
||||||
const double rWire = 2e-3;
|
const double rWire = 2e-3;
|
||||||
|
@ -24,7 +27,7 @@ const double vWire = 1900.;
|
||||||
const double vTube = 0.;
|
const double vTube = 0.;
|
||||||
|
|
||||||
const double tStep = 1;
|
const double tStep = 1;
|
||||||
const int nbins = 20000;
|
const int nbins = 10000;
|
||||||
const int N = 1000;
|
const int N = 1000;
|
||||||
|
|
||||||
bool readTransferFunction(Sensor& sensor) {
|
bool readTransferFunction(Sensor& sensor) {
|
||||||
|
@ -70,20 +73,37 @@ double riseTime(Sensor& sensor) {
|
||||||
return 1.e-9 * (tr - tl) * tStep;
|
return 1.e-9 * (tr - tl) * tStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
double rorate(double* x, double* y, double* z, double theta, int axis) {
|
void randPos(double* x, double* y) {
|
||||||
if (axis == 0) {
|
double a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
||||||
double tmp = *y * cos(theta) - *z * sin(theta);
|
double a2 = (rand() / (double)RAND_MAX) * rTube * 0.95;
|
||||||
*z = *y * sin(theta) + *z * cos(theta);
|
*x = cos(a1) * a2 + rWire;
|
||||||
*y = tmp;
|
*y = sin(a1) * a2 + rWire;
|
||||||
} else if (axis == 1) {
|
}
|
||||||
double tmp = *x * cos(theta) - *z * sin(theta);
|
|
||||||
*z = *x * sin(theta) + *z * cos(theta);
|
void randDir(double* x, double* y, double* z) {
|
||||||
*x = tmp;
|
double a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
||||||
} else {
|
double a2 = acos(2 * (rand() / (double)RAND_MAX) - 1);
|
||||||
double tmp = *x * cos(theta) - *y * sin(theta);
|
*x = cos(a1) * cos(a2);
|
||||||
*y = *x * sin(theta) + *y * cos(theta);
|
*y = sin(a1) * cos(a2);
|
||||||
*x = tmp;
|
*z = sin(a2);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::tuple<int, double> driftElectron(TrackSrim track, DriftLineRKF drift) {
|
||||||
|
int nc, ne = 0;
|
||||||
|
double eDep = 0;
|
||||||
|
double xc, yc, zc, tc, eDepc, extra;
|
||||||
|
|
||||||
|
while (track.GetCluster(xc, yc, zc, tc, nc, eDepc, extra)) {
|
||||||
|
ne += nc;
|
||||||
|
eDep += eDepc;
|
||||||
|
|
||||||
|
drift.SetIonSignalScalingFactor(nc);
|
||||||
|
drift.DriftIon(xc, yc, zc, tc);
|
||||||
|
drift.SetElectronSignalScalingFactor(nc);
|
||||||
|
drift.DriftElectron(xc, yc, zc, tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {ne, eDep};
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
|
@ -127,86 +147,60 @@ int main(int argc, char* argv[]) {
|
||||||
drift.EnableIonTail();
|
drift.EnableIonTail();
|
||||||
drift.EnableSignalCalculation();
|
drift.EnableSignalCalculation();
|
||||||
|
|
||||||
// TCanvas* cD = new TCanvas("cD", "", 600, 600);
|
#if f_PLOT
|
||||||
// ViewCell cellView;
|
TCanvas* cD = new TCanvas("cD", "", 600, 600);
|
||||||
// ViewDrift driftView;
|
ViewCell cellView;
|
||||||
// ViewSignal signalView;
|
ViewDrift driftView;
|
||||||
|
ViewSignal signalView;
|
||||||
|
|
||||||
// cellView.SetCanvas(cD);
|
cellView.SetCanvas(cD);
|
||||||
// cellView.SetComponent(&cmp);
|
cellView.SetComponent(&cmp);
|
||||||
// driftView.SetCanvas(cD);
|
driftView.SetCanvas(cD);
|
||||||
// drift.EnablePlotting(&driftView);
|
drift.EnablePlotting(&driftView);
|
||||||
// proton.EnablePlotting(&driftView);
|
proton.EnablePlotting(&driftView);
|
||||||
// tritium.EnablePlotting(&driftView);
|
tritium.EnablePlotting(&driftView);
|
||||||
// alpha.EnablePlotting(&driftView);
|
alpha.EnablePlotting(&driftView);
|
||||||
|
#endif
|
||||||
|
|
||||||
int nc, ne, status;
|
double ek, px, py, dx, dy, dz;
|
||||||
double eDep;
|
|
||||||
double a1, a2, px, py, dx, dy, dz;
|
|
||||||
double xc, yc, zc, tc, eDepc, extra;
|
|
||||||
|
|
||||||
for (int i = 0; i < N; i++) {
|
for (int i = 0; i < N; i++) {
|
||||||
ne = 0;
|
#if f_PLOT
|
||||||
eDep = 0;
|
driftView.Clear();
|
||||||
// driftView.Clear();
|
#endif
|
||||||
sensor.ClearSignal();
|
sensor.ClearSignal();
|
||||||
|
|
||||||
a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
randPos(&px, &py);
|
||||||
a2 = acos(2 * (rand() / (double)RAND_MAX) - 1);
|
randDir(&dx, &dy, &dz);
|
||||||
|
ek = 0.6e6 * (rand() / (double)RAND_MAX) + 0.2e6;
|
||||||
|
|
||||||
dx = cos(a1) * cos(a2);
|
proton.SetKineticEnergy(ek);
|
||||||
dy = sin(a1) * cos(a2);
|
|
||||||
dz = sin(a2);
|
|
||||||
|
|
||||||
a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
|
||||||
a2 = (rand() / (double)RAND_MAX) * rTube * 0.95;
|
|
||||||
px = cos(a1) * a2 + rWire;
|
|
||||||
py = sin(a1) * a2 + rWire;
|
|
||||||
|
|
||||||
proton.SetKineticEnergy(0.6e6 * (rand() / (double)RAND_MAX) + 0.2e6);
|
|
||||||
proton.NewTrack(px, py, 0, 0, dx, dy, dz);
|
proton.NewTrack(px, py, 0, 0, dx, dy, dz);
|
||||||
while (proton.GetCluster(xc, yc, zc, tc, nc, eDepc, extra)) {
|
auto [ne, eDep] = driftElectron(proton, drift);
|
||||||
ne += nc;
|
|
||||||
eDep += eDepc;
|
|
||||||
|
|
||||||
drift.SetIonSignalScalingFactor(nc);
|
|
||||||
drift.DriftIon(xc, yc, zc, tc);
|
|
||||||
drift.SetElectronSignalScalingFactor(nc);
|
|
||||||
drift.DriftElectron(xc, yc, zc, tc);
|
|
||||||
}
|
|
||||||
|
|
||||||
// tritium.NewTrack(px, py, 0, 0, -dx, -dy, -dz);
|
// tritium.NewTrack(px, py, 0, 0, -dx, -dy, -dz);
|
||||||
// while (tritium.GetCluster(xc, yc, zc, tc, nc, eDepc, extra)) {
|
|
||||||
// ne += nc;
|
|
||||||
// eDep += eDepc;
|
|
||||||
// drift.SetIonSignalScalingFactor(nc);
|
|
||||||
// drift.DriftIon(xc, yc, zc, tc);
|
|
||||||
// drift.SetElectronSignalScalingFactor(nc);
|
|
||||||
// drift.DriftElectron(xc, yc, zc, tc);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// alpha.NewTrack(rTrack, rTrack, 0, 0, -1, 1, 0);
|
// alpha.NewTrack(rTrack, rTrack, 0, 0, -1, 1, 0);
|
||||||
// while (alpha.GetCluster(xc, yc, zc, tc, nc, eDepc, extra)) {
|
|
||||||
// drift.SetIonSignalScalingFactor(nc);
|
|
||||||
// drift.DriftIon(xc, yc, zc, tc);
|
|
||||||
// drift.SetElectronSignalScalingFactor(nc);
|
|
||||||
// drift.DriftElectron(xc, yc, zc, tc);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// cD->Clear();
|
#if f_PLOT
|
||||||
// cellView.Plot2d();
|
cD->Clear();
|
||||||
// driftView.Plot(true, false);
|
cellView.Plot2d();
|
||||||
// cD->Update();
|
driftView.Plot(true, false);
|
||||||
|
cD->Update();
|
||||||
|
|
||||||
// // sensor.IntegrateSignals();
|
// sensor.IntegrateSignals();
|
||||||
// sensor.ConvoluteSignals();
|
sensor.ConvoluteSignals();
|
||||||
// signalView.SetSensor(&sensor);
|
signalView.SetSensor(&sensor);
|
||||||
// // signalView.PlotSignal("s", "tei");
|
// signalView.PlotSignal("s", "tei");
|
||||||
// signalView.PlotSignal("s", "t");
|
signalView.PlotSignal("s", "t");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if f_PRINT > 1
|
||||||
|
printf("Position = (%.2f, %.2f), Ek = %.3f\n", px, py, ek);
|
||||||
|
printf("Total Count = %d, Energy Deposit = %.3f, W = %.3f\n", ne, eDep, eDep / ne);
|
||||||
|
#elif f_PRINT
|
||||||
std::cout << eDep << " " << riseTime(sensor) * 1e9 << std::endl;
|
std::cout << eDep << " " << riseTime(sensor) * 1e9 << std::endl;
|
||||||
// printf("Position = (%.2f, %.2f), ", px, py);
|
#endif
|
||||||
// printf("Total Count = %d, Energy Deposit = %.3f, W = %.3f\n", ne, eDep, eDep / ne);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
app.Run(kTRUE);
|
app.Run(kTRUE);
|
||||||
|
|
1000
random_pt.txt
1000
random_pt.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue