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 <iostream>
|
||||
|
||||
#define f_PLOT 0
|
||||
#define f_PRINT 1
|
||||
|
||||
using namespace Garfield;
|
||||
|
||||
const double rWire = 2e-3;
|
||||
|
@ -24,7 +27,7 @@ const double vWire = 1900.;
|
|||
const double vTube = 0.;
|
||||
|
||||
const double tStep = 1;
|
||||
const int nbins = 20000;
|
||||
const int nbins = 10000;
|
||||
const int N = 1000;
|
||||
|
||||
bool readTransferFunction(Sensor& sensor) {
|
||||
|
@ -70,20 +73,37 @@ double riseTime(Sensor& sensor) {
|
|||
return 1.e-9 * (tr - tl) * tStep;
|
||||
}
|
||||
|
||||
double rorate(double* x, double* y, double* z, double theta, int axis) {
|
||||
if (axis == 0) {
|
||||
double tmp = *y * cos(theta) - *z * sin(theta);
|
||||
*z = *y * sin(theta) + *z * cos(theta);
|
||||
*y = tmp;
|
||||
} else if (axis == 1) {
|
||||
double tmp = *x * cos(theta) - *z * sin(theta);
|
||||
*z = *x * sin(theta) + *z * cos(theta);
|
||||
*x = tmp;
|
||||
} else {
|
||||
double tmp = *x * cos(theta) - *y * sin(theta);
|
||||
*y = *x * sin(theta) + *y * cos(theta);
|
||||
*x = tmp;
|
||||
void randPos(double* x, double* y) {
|
||||
double a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
||||
double a2 = (rand() / (double)RAND_MAX) * rTube * 0.95;
|
||||
*x = cos(a1) * a2 + rWire;
|
||||
*y = sin(a1) * a2 + rWire;
|
||||
}
|
||||
|
||||
void randDir(double* x, double* y, double* z) {
|
||||
double a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
||||
double a2 = acos(2 * (rand() / (double)RAND_MAX) - 1);
|
||||
*x = cos(a1) * cos(a2);
|
||||
*y = sin(a1) * cos(a2);
|
||||
*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[]) {
|
||||
|
@ -127,86 +147,60 @@ int main(int argc, char* argv[]) {
|
|||
drift.EnableIonTail();
|
||||
drift.EnableSignalCalculation();
|
||||
|
||||
// TCanvas* cD = new TCanvas("cD", "", 600, 600);
|
||||
// ViewCell cellView;
|
||||
// ViewDrift driftView;
|
||||
// ViewSignal signalView;
|
||||
#if f_PLOT
|
||||
TCanvas* cD = new TCanvas("cD", "", 600, 600);
|
||||
ViewCell cellView;
|
||||
ViewDrift driftView;
|
||||
ViewSignal signalView;
|
||||
|
||||
// cellView.SetCanvas(cD);
|
||||
// cellView.SetComponent(&cmp);
|
||||
// driftView.SetCanvas(cD);
|
||||
// drift.EnablePlotting(&driftView);
|
||||
// proton.EnablePlotting(&driftView);
|
||||
// tritium.EnablePlotting(&driftView);
|
||||
// alpha.EnablePlotting(&driftView);
|
||||
cellView.SetCanvas(cD);
|
||||
cellView.SetComponent(&cmp);
|
||||
driftView.SetCanvas(cD);
|
||||
drift.EnablePlotting(&driftView);
|
||||
proton.EnablePlotting(&driftView);
|
||||
tritium.EnablePlotting(&driftView);
|
||||
alpha.EnablePlotting(&driftView);
|
||||
#endif
|
||||
|
||||
int nc, ne, status;
|
||||
double eDep;
|
||||
double a1, a2, px, py, dx, dy, dz;
|
||||
double xc, yc, zc, tc, eDepc, extra;
|
||||
double ek, px, py, dx, dy, dz;
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
ne = 0;
|
||||
eDep = 0;
|
||||
// driftView.Clear();
|
||||
#if f_PLOT
|
||||
driftView.Clear();
|
||||
#endif
|
||||
sensor.ClearSignal();
|
||||
|
||||
a1 = 2 * M_PI * (rand() / (double)RAND_MAX);
|
||||
a2 = acos(2 * (rand() / (double)RAND_MAX) - 1);
|
||||
randPos(&px, &py);
|
||||
randDir(&dx, &dy, &dz);
|
||||
ek = 0.6e6 * (rand() / (double)RAND_MAX) + 0.2e6;
|
||||
|
||||
dx = cos(a1) * cos(a2);
|
||||
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.SetKineticEnergy(ek);
|
||||
proton.NewTrack(px, py, 0, 0, dx, dy, dz);
|
||||
while (proton.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);
|
||||
}
|
||||
auto [ne, eDep] = driftElectron(proton, drift);
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
// cellView.Plot2d();
|
||||
// driftView.Plot(true, false);
|
||||
// cD->Update();
|
||||
#if f_PLOT
|
||||
cD->Clear();
|
||||
cellView.Plot2d();
|
||||
driftView.Plot(true, false);
|
||||
cD->Update();
|
||||
|
||||
// // sensor.IntegrateSignals();
|
||||
// sensor.ConvoluteSignals();
|
||||
// signalView.SetSensor(&sensor);
|
||||
// // signalView.PlotSignal("s", "tei");
|
||||
// signalView.PlotSignal("s", "t");
|
||||
// sensor.IntegrateSignals();
|
||||
sensor.ConvoluteSignals();
|
||||
signalView.SetSensor(&sensor);
|
||||
// signalView.PlotSignal("s", "tei");
|
||||
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;
|
||||
// printf("Position = (%.2f, %.2f), ", px, py);
|
||||
// printf("Total Count = %d, Energy Deposit = %.3f, W = %.3f\n", ne, eDep, eDep / ne);
|
||||
#endif
|
||||
}
|
||||
|
||||
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