ANASEN_analysis/grid_generate.py
Vignesh Sitaraman 9d581fa72d new file: anasen_labels.csv
new file:   detector_geometry.dat
	new file:   eloss_calculations/Eloss.py
	new file:   eloss_calculations/alpha_lookup_20MeV.dat
	new file:   eloss_calculations/alpha_lookup_6.0MeV.dat
	new file:   eloss_calculations/make_eloss_table.C
	new file:   eloss_calculations/proton_lookup_20MeV.dat
	new file:   eloss_calculations/proton_lookup_6.0MeV.dat
	new file:   grid_generate.py
	new file:   shadowplay.py
2026-05-08 16:42:36 -04:00

56 lines
2.3 KiB
Python

import math
def wrap_phi(angle):
"""Wraps an angle to be between -180 and +180 degrees"""
return (angle + 180) % 360 - 180
# The name of the file you want to generate
filename = "detector_geometry.dat"
# Open the file in 'write' mode
with open(filename, "w") as f:
# --- 1. SX3 Geometry ---
f.write("=========================================================\n")
f.write(" SX3 BARREL AZIMUTHAL ANGLES (Degrees) \n")
f.write("=========================================================\n")
f.write(" Det ID | Strip 0 | Strip 1 | Strip 2 | Strip 3 | Det Center\n")
f.write("---------------------------------------------------------\n")
for det_id in range(12): # Assuming 12 barrel detectors
strips = []
for stripF in range(4):
stripF_rev = 3 - stripF
num = (2 * stripF_rev - 3) * 40.30
den = 8.0 * 88.0 * math.cos(math.radians(15.0))
beta_n = 15.0 + math.degrees(math.atan2(num, den))
phi_n = ((-det_id + 0.5) * 30.0 + beta_n) + 45.0
strips.append(wrap_phi(phi_n))
det_center = wrap_phi(((-det_id + 0.5) * 30.0 + 15.0) + 45.0)
f.write(f" {det_id:2d} | {strips[0]:6.2f} | {strips[1]:6.2f} | {strips[2]:6.2f} | {strips[3]:6.2f} | {det_center:6.2f}\n")
# --- 2. PC Wire Geometry ---
f.write("\n\n=========================================================\n")
f.write(" PROPORTIONAL COUNTER WIRE ANGLES (Degrees) \n")
f.write("=========================================================\n")
f.write(" Wire ID | Anode (-z) | Anode (+z) | Cathode (-z) | Cathode (+z)\n")
f.write("----------------------------------------------------------------\n")
k = 360.0 / 24.0
offset_a1 = -6*k - 3*k
offset_c1 = -4*k - 2*k - (360.0/48.0)
wireShift = 3
offset_a2 = offset_a1 + wireShift*k
offset_c2 = offset_c1 - wireShift*k
for i in range(24):
phi_a1 = wrap_phi(-k * i + offset_a1)
phi_a2 = wrap_phi(-k * i + offset_a2)
phi_c1 = wrap_phi(k * i + offset_c1)
phi_c2 = wrap_phi(k * i + offset_c2)
f.write(f" {i:2d} | {phi_a1:7.2f} | {phi_a2:7.2f} | {phi_c1:7.2f} | {phi_c2:7.2f}\n")
print(f"Success! The geometry lookup table has been saved to '{filename}'.")