Skip to content

Commit 6a489e4

Browse files
authored
Merge pull request #66 from soleti/units
First usage of units
2 parents 30bb776 + 8df7abb commit 6a489e4

File tree

4 files changed

+338
-22
lines changed

4 files changed

+338
-22
lines changed

larndsim/consts/detector.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
from collections import defaultdict
99

10+
from .units import mm, cm
11+
1012
MM2CM = 0.1
1113
CM2MM = 10
1214
KV2V = 1000
@@ -163,7 +165,7 @@ def set_detector_properties(detprop_file, pixel_file):
163165
with open(pixel_file, 'r') as pf:
164166
tile_layout = yaml.load(pf, Loader=yaml.FullLoader)
165167

166-
PIXEL_PITCH = tile_layout['pixel_pitch'] * MM2CM
168+
PIXEL_PITCH = tile_layout['pixel_pitch'] * mm / cm
167169
chip_channel_to_position = tile_layout['chip_channel_to_position']
168170
PIXEL_CONNECTION_DICT = {tuple(pix): (chip_channel//1000,chip_channel%1000) for chip_channel, pix in chip_channel_to_position.items()}
169171
TILE_CHIP_TO_IO = tile_layout['tile_chip_to_io']
@@ -194,7 +196,7 @@ def set_detector_properties(detprop_file, pixel_file):
194196
for it, tpc_offset in enumerate(TPC_OFFSETS):
195197
for ia, anode in enumerate(anodes):
196198
tiles = np.vstack(anodes[anode])
197-
tiles *= MM2CM
199+
tiles *= mm / cm
198200
drift_direction = 1 if anode == 1 else -1
199201
x_border = min(tiles[:,2]) + TILE_BORDERS[0][0] + tpc_offset[0], \
200202
max(tiles[:,2]) + TILE_BORDERS[0][1] + tpc_offset[0]

larndsim/consts/units.py

Lines changed: 314 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,314 @@
1+
"""
2+
HEP coherent system of units
3+
4+
The basic units are :
5+
millimeter (millimeter)
6+
nanosecond (nanosecond)
7+
Mega electron Volt (MeV)
8+
positron charge (e)
9+
degree Kelvin (kelvin)
10+
the amount of substance (mole)
11+
luminous intensity (candela)
12+
radian (radian)
13+
steradian (steradian)
14+
15+
"""
16+
17+
# Length [L]
18+
19+
euro = 1.
20+
millimeter = 1.
21+
millimeter2 = millimeter * millimeter
22+
millimeter3 = millimeter * millimeter2
23+
24+
centimeter = 10. * millimeter
25+
centimeter2 = centimeter * centimeter
26+
centimeter3 = centimeter * centimeter2
27+
28+
decimeter = 100. * millimeter
29+
decimeter2 = decimeter * decimeter
30+
decimeter3 = decimeter * decimeter2
31+
liter = decimeter3
32+
l = liter
33+
ml = 1e-3 * l
34+
mul = 1e-6 * l
35+
nl = 1e-9 * l
36+
pl = 1e-12 * l
37+
38+
meter = 1000. * millimeter
39+
meter2 = meter * meter
40+
meter3 = meter * meter2
41+
42+
kilometer = 1000. * meter
43+
kilometer2 = kilometer * kilometer
44+
kilometer3 = kilometer * kilometer2
45+
46+
micrometer = 1.e-6 * meter
47+
nanometer = 1.e-9 * meter
48+
angstrom = 1.e-10 * meter
49+
fermi = 1.e-15 * meter
50+
51+
nm = nanometer
52+
mum = micrometer
53+
54+
micron = micrometer
55+
micron2 = micrometer * micrometer
56+
micron3 = micron2 * micrometer
57+
58+
barn = 1.e-28 * meter2
59+
millibarn = 1.e-3 * barn
60+
microbarn = 1.e-6 * barn
61+
nanobarn = 1.e-9 * barn
62+
picobarn = 1.e-12 * barn
63+
64+
# symbols
65+
mm = millimeter
66+
mm2 = millimeter2
67+
mm3 = millimeter3
68+
69+
cm = centimeter
70+
cm2 = centimeter2
71+
cm3 = centimeter3
72+
73+
m = meter
74+
m2 = meter2
75+
m3 = meter3
76+
77+
km = kilometer
78+
km2 = kilometer2
79+
km3 = kilometer3
80+
81+
ft = 30.48 * cm
82+
83+
# Angle
84+
85+
radian = 1.
86+
milliradian = 1.e-3 * radian
87+
degree = (3.14159265358979323846/180.0) * radian
88+
89+
steradian = 1.
90+
91+
# symbols
92+
rad = radian
93+
mrad = milliradian
94+
sr = steradian
95+
deg = degree
96+
97+
# Time [T]
98+
99+
nanosecond = 1.
100+
second = 1.e+9 * nanosecond
101+
millisecond = 1.e-3 * second
102+
microsecond = 1.e-6 * second
103+
picosecond = 1.e-12 * second
104+
femtosecond = 1.e-15 * second
105+
year = 3.1536e+7 * second
106+
day = 864e2 * second
107+
minute = 60 * second
108+
hour = 60 * minute
109+
110+
s = second
111+
ms = millisecond
112+
ps = picosecond
113+
fs = femtosecond
114+
mus = microsecond
115+
ns = nanosecond
116+
117+
hertz = 1./second
118+
kilohertz = 1.e+3 * hertz
119+
megahertz = 1.e+6 * hertz
120+
gigahertz = 1.e+6 * hertz
121+
122+
MHZ = megahertz
123+
kHZ = kilohertz
124+
kHz = kHZ
125+
GHZ = gigahertz
126+
127+
# Electric charge [Q]
128+
129+
e = 1. # electron charge
130+
e_SI = -1.60217733e-19 # electron charge in coulomb
131+
coulomb = e/e_SI # coulomb = 6.24150 e+18 * e
132+
133+
# Energy [E]
134+
135+
megaelectronvolt = 1.
136+
electronvolt = 1.e-6 * megaelectronvolt
137+
milielectronvolt = 1.e-3 * electronvolt
138+
kiloelectronvolt = 1.e-3 * megaelectronvolt
139+
gigaelectronvolt = 1.e+3 * megaelectronvolt
140+
teraelectronvolt = 1.e+6 * megaelectronvolt
141+
petaelectronvolt = 1.e+9 * megaelectronvolt
142+
143+
meV = milielectronvolt
144+
eV = electronvolt
145+
keV = kiloelectronvolt
146+
MeV = megaelectronvolt
147+
GeV = gigaelectronvolt
148+
TeV = teraelectronvolt
149+
PeV = petaelectronvolt
150+
151+
eV2 = eV*eV
152+
153+
joule = electronvolt/e_SI # joule = 6.24150 e+12 * MeV
154+
J = joule
155+
milijoule = 1e-3 * joule
156+
microjoule = 1e-6 * joule
157+
nanojoule = 1e-9 * joule
158+
picojoule = 1e-12 * joule
159+
femtojoule = 1e-15 * joule
160+
mJ = milijoule
161+
muJ = microjoule
162+
nJ = nanojoule
163+
pJ = picojoule
164+
fJ = femtojoule
165+
166+
# Mass [E][T^2][L^-2]
167+
168+
kilogram = joule * second * second / meter2
169+
gram = 1.e-3 * kilogram
170+
milligram = 1.e-3 * gram
171+
ton = 1.e+3 * kilogram
172+
kiloton = 1.e+3 * ton
173+
174+
# symbols
175+
kg = kilogram
176+
g = gram
177+
mg = milligram
178+
179+
# Power [E][T^-1]
180+
181+
watt = joule/second # watt = 6.24150 e+3 * MeV/ns
182+
W = watt
183+
milliwatt = 1E-3 * watt
184+
microwatt = 1E-6 * watt
185+
mW = milliwatt
186+
muW = microwatt
187+
188+
# Force [E][L^-1]
189+
190+
newton = joule/meter # newton = 6.24150 e+9 * MeV/mm
191+
192+
# Pressure [E][L^-3]
193+
194+
hep_pascal = newton / m2 # pascal = 6.24150 e+3 * MeV/mm3
195+
pascal = hep_pascal
196+
Pa = pascal
197+
kPa = 1000 * Pa
198+
MPa = 1e+6 * Pa
199+
GPa = 1e+9 * Pa
200+
bar = 100000 * pascal # bar = 6.24150 e+8 * MeV/mm3
201+
milibar = 1e-3 * bar
202+
203+
atmosphere = 101325 * pascal # atm = 6.32420 e+8 * MeV/mm3
204+
205+
denier = gram / (9000 * meter)
206+
207+
# Electric current [Q][T^-1]
208+
209+
ampere = coulomb/second # ampere = 6.24150 e+9 * e/ns
210+
milliampere = 1.e-3 * ampere
211+
microampere = 1.e-6 * ampere
212+
nanoampere = 1.e-9 * ampere
213+
mA = milliampere
214+
muA = microampere
215+
nA = nanoampere
216+
217+
# Electric potential [E][Q^-1]
218+
219+
megavolt = megaelectronvolt / e
220+
kilovolt = 1.e-3 * megavolt
221+
volt = 1.e-6 * megavolt
222+
millivolt = 1.e-3 * volt
223+
224+
V = volt
225+
mV = millivolt
226+
kV = kilovolt
227+
MV = megavolt
228+
229+
# Electric resistance [E][T][Q^-2]
230+
231+
ohm = volt / ampere # ohm = 1.60217e-16*(MeV/e)/(e/ns)
232+
233+
# Electric capacitance [Q^2][E^-1]
234+
235+
farad = coulomb / volt # farad = 6.24150e+24 * e/Megavolt
236+
millifarad = 1.e-3 * farad
237+
microfarad = 1.e-6 * farad
238+
nanofarad = 1.e-9 * farad
239+
picofarad = 1.e-12 * farad
240+
241+
nF = nanofarad
242+
pF = picofarad
243+
244+
# Magnetic Flux [T][E][Q^-1]
245+
246+
weber = volt * second # weber = 1000*megavolt*ns
247+
248+
# Magnetic Field [T][E][Q^-1][L^-2]
249+
250+
tesla = volt*second / meter2 # tesla = 0.001*megavolt*ns/mm2
251+
252+
gauss = 1.e-4 * tesla
253+
kilogauss = 1.e-1 * tesla
254+
255+
# Inductance [T^2][E][Q^-2]
256+
257+
henry = weber / ampere # henry = 1.60217e-7*MeV*(ns/e)**2
258+
259+
# Temperature
260+
261+
kelvin = 1
262+
K = kelvin
263+
264+
# Amount of substance
265+
266+
mole = 1
267+
mol = mole
268+
milimole = 1E-3 * mole
269+
micromole = 1E-6 * mole
270+
nanomole = 1E-9 * mole
271+
picomole = 1E-12 * mole
272+
273+
# Activity [T^-1]
274+
275+
becquerel = 1 / second
276+
277+
curie = 3.7e+10 * becquerel
278+
279+
Bq = becquerel
280+
mBq = 1e-3 * becquerel
281+
muBq = 1e-6 * becquerel
282+
kBq = 1e+3 * becquerel
283+
MBq = 1e+6 * becquerel
284+
cks = Bq/keV
285+
U238ppb = Bq / 81
286+
Th232ppb = Bq / 246
287+
288+
# Absorbed dose [L^2][T^-2]
289+
290+
gray = joule / kilogram
291+
292+
# Luminous intensity [I]
293+
294+
candela = 1
295+
296+
# Luminous flux [I]
297+
298+
lumen = candela * steradian
299+
300+
# Illuminance [I][L^-2]
301+
302+
lux = lumen / meter2
303+
304+
# Miscellaneous
305+
306+
perCent = 1e-2
307+
perThousand = 1e-3
308+
perMillion = 1e-6
309+
310+
pes = 1
311+
adc = 1
312+
313+
def celsius(tKelvin):
314+
return tKelvin - 273.15

larndsim/detsim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ def tracks_current_mc(signals, pixels, tracks, response, rng_states):
396396
if y_dist > detector.RESPONSE_BIN_SIZE * response.shape[1]:
397397
continue
398398

399-
total_current += charge * get_closest_waveform(x_dist, y_dist, time_tick-t0, response) * physics.E_CHARGE
399+
total_current += charge * get_closest_waveform(x_dist, y_dist, time_tick-t0, response)
400400

401401
signals[itrk,ipix,it] = total_current
402402

@@ -500,7 +500,7 @@ def tracks_current(signals, pixels, tracks, response):
500500
charge = rho((x,y,z), t["n_electrons"], start, sigmas, segment) \
501501
* abs(x_step) * abs(y_step) * abs(z_step)
502502

503-
total_current += get_closest_waveform(x_dist, y_dist, time_tick-t0, response) * charge * physics.E_CHARGE
503+
total_current += get_closest_waveform(x_dist, y_dist, time_tick-t0, response) * charge
504504

505505
signals[itrk,ipix,it] = total_current
506506

0 commit comments

Comments
 (0)