Releases: LDMX-Software/Ecal
v0.2.8 : use base class for ECal clusters
v0.2.7 : don't hardcode the number of ECal layers
v0.2.6 : remove Eventdef and patch buffer overflows
What's Changed
- Patch one of the two buffer overflows by @EinarElen in #48
- remove eventdef and add event object headers by @tomeichlersmith in #49
New Contributors
- @EinarElen made their first contribution in #48
Full Changelog: v0.2.5...v0.2.6
v0.2.5 : Patch Testing for Updated Catch2 Version
v0.2.4 : Calculate 2nd Order Energy Correction
This calculation was done using a 1M event sample generated by shooting 4GeV electrons directly into the ECal in order to avoid any upstream effects. The fit was done with the code shown below which also produced a plot to visually confirm a decent mean was found. The value of 3940.5 was used.
Code
import uproot
import numpy as np
from scipy.stats import norm
import scipy
%matplotlib inline
import matplotlib.pyplot as plt
import mplhep
plt.style.use(mplhep.style.ROOT)
t = uproot.open('data/v3.2.0-gamma-14-geb86ea1/plain/type_events_sim_plain_geometry_v14_events_1000000_run_1.root:LDMX_Events')
tre = t['EcalVeto_valid/summedDet_'].array(library='np')
vals, edges, p = plt.hist(tre,bins='auto', range=(0,8000), density=True,
histtype='step',linewidth=2, label='1M Plain 4GeV')
centers = (edges[1:]+edges[:-1])/2
def two_sided_normal(x, mu, low_sig, high_sig) :
low_side = norm.pdf(x[x<mu], mu, low_sig)
high_side = norm.pdf(x[x>=mu], mu, high_sig)
return np.concatenate((low_side,high_side))
# filter to reasonable values, specifically dropping high energy events
# from wacky hits late in the detector and low energy events probably
# due to PN interactions
high_cut = 6000
low_cut = 2500
tre_f = tre[(tre < high_cut)&(tre > low_cut)]
mean = tre_f.mean()
stdd = np.sqrt(((tre_f - mean)**2).mean())
bin_selection = (centers < high_cut) & (centers > low_cut)
optim, cov = scipy.optimize.curve_fit(two_sided_normal, centers[bin_selection], vals[bin_selection],
sigma=np.sqrt(vals[bin_selection]), p0=[mean,stdd,stdd])
plt.plot(centers, norm.pdf(centers, mean, stdd),
label=f'$\mu = {mean:.1f}$MeV $\sigma = {stdd:.1f}$MeV')
plt.plot(centers, two_sided_normal(centers, *optim),
label=f'$\mu = {optim[0]:.1f}$MeV\n$\sigma_l = {optim[1]:.1f}$MeV\n$\sigma_h = {optim[2]:.1f}$MeV')
plt.yscale('log')
plt.ylim(1e-9,1e-2)
plt.legend(loc='upper left')
plt.xlabel('Total Rec Energy [MeV]')
plt.ylabel('Event Fraction')
plt.show()
Full Changelog: v0.2.3...v0.2.4
v0.2.3 : Update Noise Handling (and silicon thickness)
What's Changed
- move noise RMS into the HGC ROC emulation conditions table
- add a parameter to the digi emulator for the silicon thickness to handle the conversion from simulated energy to emulated voltage signal
Full Changelog: v0.2.2...v0.2.3
v0.2.2 : Patch to Digi Testing
Needed to fix-up the test config script so that it isn't off by the 5/3 that was introduced into the reco chain to account for the different silicon thickness compared to the other reco parameters.
Full Changelog: v0.2.1...v0.2.2
v0.2.1 : Recon Patches for DR Geometry
What's Changed
- update recon parameter to allow si thickness change by @tomeichlersmith in #44
- move noise RMS into hgcroc conditions tables by @tomeichlersmith in 9813e96
Full Changelog: v0.2.0...v0.2.1
v0.2 : Preparations for the DR
What's Changed
- 1047 Ecal Geometry DR Update by @tomeichlersmith in #41
Full Changelog: v0.1.0...v0.2.0
v0.1 : Initial Release
This is the foundational release of the Ecal submodule of ldmx-sw. Similar to other subsystems, this will be helpful for collaboration so we know what everyone is working from and running on.
What's Changed
- Update detector ID structure by @tomeichlersmith in #6
- Pass ecal hex readout parameters from python by @tomeichlersmith in #7
- iss3: Update CMakeLists to make use of targets. by @omar-moreno in #4
- Revert "Pass ecal hex readout parameters from python" by @omar-moreno in #9
- Remove need for include.py by @tomeichlersmith in #11
- pass ecal hex readout parameters from python by @tomeichlersmith in #10
- Iss1 - Drastic updates to Ecal Digitization by @tomeichlersmith in #14
- Iss908 - use random number seed service in Ecal by @tomeichlersmith in #16
- Iss895 - Move EcalHexReadout to be a conditions object by @tomeichlersmith in #18
- Make collection names settable parameters for digi and reco by @bryngemark in #20
- Iss e5 - Incorporate Trigger Primitives and change ecal hex readout to a conditions object by @tomeichlersmith in #17
- Iss21 - Fixes to ECal Digi Pipeline by @tomeichlersmith in #23
- Iss644 - move ecal-related event bus passengers here by @tomeichlersmith in #13
- Format dev by @omar-moreno in #26
- Iss15 by @p-masterson in #27
- Cascading updates to follow enhancements to HGC ROC Emulator by @tomeichlersmith in #30
- v3.0.0 Validation by @tomeichlersmith in #33
- Headers that weren't previously needed before event bus redesign by @tomeichlersmith in #32
- Patch printer for rotation by @tomeichlersmith in #35
- Update noise creation by @tomeichlersmith in #36
- Use rec_coll_name instead of hardcoding it; very simple change by @p-masterson in #39
- Decoding/Encoding and Electronic IDs by @tomeichlersmith in #37
New Contributors
- @tomeichlersmith made their first contribution in #6
- @omar-moreno made their first contribution in #4
- @bryngemark made their first contribution in #20
- @p-masterson made their first contribution in #27
Full Changelog: https://github.com/LDMX-Software/Ecal/commits/v0.1.0