Skip to content
Snippets Groups Projects
Commit 39896916 authored by Sylvester Joosten's avatar Sylvester Joosten
Browse files

updated for EICD

parent aa4d76f0
Branches
No related tags found
1 merge request!151Update eicd
...@@ -65,7 +65,7 @@ imcaldigi = CalHitDigi('imcal_digi', ...@@ -65,7 +65,7 @@ imcaldigi = CalHitDigi('imcal_digi',
**imcaldaq) **imcaldaq)
imcalreco = ImagingPixelReco('imcal_reco', imcalreco = ImagingPixelReco('imcal_reco',
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection='DigiEcalBarrelHits', inputHitCollection=imcaldigi.outputHitCollection,
outputHitCollection='RecoEcalBarrelHits', outputHitCollection='RecoEcalBarrelHits',
readoutClass='EcalBarrelHits', readoutClass='EcalBarrelHits',
layerField='layer', layerField='layer',
...@@ -74,17 +74,19 @@ imcalreco = ImagingPixelReco('imcal_reco', ...@@ -74,17 +74,19 @@ imcalreco = ImagingPixelReco('imcal_reco',
imcalcluster = ImagingTopoCluster('imcal_cluster', imcalcluster = ImagingTopoCluster('imcal_cluster',
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection='RecoEcalBarrelHits', inputHitCollection=imcalreco.outputHitCollection,
outputHitCollection='EcalBarrelClusterHits', outputProtoClusterCollection='EcalBarrelProtoClusters',
localDistXY=[2.*mm, 2*mm], localDistXY=[2.*mm, 2*mm],
layerDistEtaPhi=[10*mrad, 10*mrad], layerDistEtaPhi=[10*mrad, 10*mrad],
neighbourLayersRange=2, neighbourLayersRange=2,
sectorDist=3.*cm) sectorDist=3.*cm)
clusterreco = ImagingClusterReco('imcal_clreco', clusterreco = ImagingClusterReco('imcal_clreco',
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection='EcalBarrelClusterHits', inputHitCollection=imcalcluster.inputHitCollection,
inputProtoClusterCollection=imcalcluster.outputProtoClusterCollection,
outputLayerCollection='EcalBarrelClustersLayers', outputLayerCollection='EcalBarrelClustersLayers',
outputClusterCollection='EcalBarrelClusters', outputClusterCollection='EcalBarrelClusters',
outputInfoCollection='EcalBarrelClustersInfo',
samplingFraction=kwargs['img_sf']) samplingFraction=kwargs['img_sf'])
# scfi layers # scfi layers
...@@ -100,7 +102,7 @@ scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", ...@@ -100,7 +102,7 @@ scfi_barrel_digi = CalHitDigi("scfi_barrel_digi",
**scfi_barrel_daq) **scfi_barrel_daq)
scfi_barrel_reco = CalHitReco("scfi_barrel_reco", scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
inputHitCollection="EcalBarrelScFiHitsDigi", inputHitCollection=scfi_barrel_digi.outputHitCollection,
outputHitCollection="EcalBarrelScFiHitsReco", outputHitCollection="EcalBarrelScFiHitsReco",
thresholdFactor=5.0, thresholdFactor=5.0,
readoutClass="EcalBarrelScFiHits", readoutClass="EcalBarrelScFiHits",
...@@ -112,7 +114,7 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco", ...@@ -112,7 +114,7 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
# merge hits in different layer (projection to local x-y plane) # merge hits in different layer (projection to local x-y plane)
scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="EcalBarrelScFiHitsReco", inputHitCollection=scfi_barrel_reco.outputHitCollection,
outputHitCollection="EcalBarrelScFiGridReco", outputHitCollection="EcalBarrelScFiGridReco",
fields=["fiber"], fields=["fiber"],
fieldRefNumbers=[1], fieldRefNumbers=[1],
...@@ -120,16 +122,18 @@ scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", ...@@ -120,16 +122,18 @@ scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger",
scfi_barrel_cl = IslandCluster("scfi_barrel_cl", scfi_barrel_cl = IslandCluster("scfi_barrel_cl",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="EcalBarrelScFiGridReco", inputHitCollection=scfi_barrel_merger.outputHitCollection,
outputHitCollection="EcalBarrelScFiClusterHits", outputProtoClusterCollection="EcalBarrelScFiProtoClusters",
splitCluster=False, splitCluster=False,
minClusterCenterEdep=10.*MeV, minClusterCenterEdep=10.*MeV,
localDistXZ=[30*mm, 30*mm], localDistXZ=[30*mm, 30*mm],
sectorDist=5.*cm) sectorDist=5.*cm)
scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco", scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco",
inputHitCollection="EcalBarrelScFiClusterHits", inputHitCollection=scfi_barrel_cl.inputHitCollection,
inputProtoClusterCollection=scfi_barrel_cl.outputProtoClusterCollection,
outputClusterCollection="EcalBarrelScFiClusters", outputClusterCollection="EcalBarrelScFiClusters",
outputInfoCollection="EcalBarrelScFiClustersInfo",
logWeightBase=6.2, logWeightBase=6.2,
samplingFraction=kwargs['scfi_sf']) samplingFraction=kwargs['scfi_sf'])
......
...@@ -64,7 +64,7 @@ imcal_barrel_merger = CalHitsProj('imcal_barrel_merger', ...@@ -64,7 +64,7 @@ imcal_barrel_merger = CalHitsProj('imcal_barrel_merger',
imcal_barrel_cl = IslandCluster('imcal_barrel_cl', imcal_barrel_cl = IslandCluster('imcal_barrel_cl',
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection=imcal_barrel_merger.outputHitCollection, inputHitCollection=imcal_barrel_merger.outputHitCollection,
outputHitCollection='EcalBarrelClusterHits', outputProtoClusterCollection='EcalBarrelProtoClusters',
minClusterCenterEdep=1.*MeV, minClusterCenterEdep=1.*MeV,
minClusterHitEdep=0.1*MeV, minClusterHitEdep=0.1*MeV,
splitCluster=True, splitCluster=True,
...@@ -72,8 +72,10 @@ imcal_barrel_cl = IslandCluster('imcal_barrel_cl', ...@@ -72,8 +72,10 @@ imcal_barrel_cl = IslandCluster('imcal_barrel_cl',
imcal_barrel_clreco = RecoCoG('imcal_barrel_clreco', imcal_barrel_clreco = RecoCoG('imcal_barrel_clreco',
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection=imcal_barrel_cl.outputHitCollection, inputHitCollection=imcal_barrel_cl.inputHitCollection,
inputProtoClusterCollection = imcal_barrel_cl.outputProtoClusterCollection,
outputClusterCollection='EcalBarrelClusters', outputClusterCollection='EcalBarrelClusters',
outputInfoCollection='EcalBarrelClustersInfo',
logWeightBase=6.2, logWeightBase=6.2,
samplingFraction=kwargs['sf']) samplingFraction=kwargs['sf'])
......
...@@ -59,7 +59,7 @@ imcaldigi = CalorimeterHitDigi("imcal_digi", ...@@ -59,7 +59,7 @@ imcaldigi = CalorimeterHitDigi("imcal_digi",
**daq_setting) **daq_setting)
imcalreco = ImagingPixelReco("imcal_reco", imcalreco = ImagingPixelReco("imcal_reco",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="DigiEcalBarrelHits", inputHitCollection=imcaldigi.outputHitCollection,
outputHitCollection="RecoEcalBarrelHits", outputHitCollection="RecoEcalBarrelHits",
readoutClass="EcalBarrelHits", readoutClass="EcalBarrelHits",
layerField="layer", layerField="layer",
...@@ -68,8 +68,8 @@ imcalreco = ImagingPixelReco("imcal_reco", ...@@ -68,8 +68,8 @@ imcalreco = ImagingPixelReco("imcal_reco",
imcalcluster = ImagingTopoCluster("imcal_cluster", imcalcluster = ImagingTopoCluster("imcal_cluster",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="RecoEcalBarrelHits", inputHitCollection=imcalreco.outputHitCollection,
outputHitCollection="EcalBarrelClusterHits", outputProtoClusterCollection="EcalBarrelProtoClusters",
localDistXY=[2.*units.mm, 2*units.mm], localDistXY=[2.*units.mm, 2*units.mm],
layerDistEtaPhi=[10*units.mrad, 10*units.mrad], layerDistEtaPhi=[10*units.mrad, 10*units.mrad],
neighbourLayersRange=2, neighbourLayersRange=2,
...@@ -77,9 +77,11 @@ imcalcluster = ImagingTopoCluster("imcal_cluster", ...@@ -77,9 +77,11 @@ imcalcluster = ImagingTopoCluster("imcal_cluster",
minClusterNhits=5) minClusterNhits=5)
clusterreco = ImagingClusterReco("imcal_clreco", clusterreco = ImagingClusterReco("imcal_clreco",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="EcalBarrelClusterHits", inputHitCollection=imcalcluster.inputHitCollection,
inputProtoClusterCollection=imcalcluster.outputProtoClusterCollection,
outputLayerCollection="EcalBarrelClustersLayers", outputLayerCollection="EcalBarrelClustersLayers",
outputClusterCollection="EcalBarrelClusters", outputClusterCollection="EcalBarrelClusters",
outputInfoCollection="EcalBarrelClustersInfo",
samplingFraction=sf) samplingFraction=sf)
out.outputCommands = ["keep *"] out.outputCommands = ["keep *"]
......
...@@ -47,7 +47,7 @@ scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", ...@@ -47,7 +47,7 @@ scfi_barrel_digi = CalHitDigi("scfi_barrel_digi",
**scfi_barrel_daq) **scfi_barrel_daq)
scfi_barrel_reco = CalHitReco("scfi_barrel_reco", scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
inputHitCollection="EcalBarrelScFiHitsDigi", inputHitCollection=scfi_barrel_digi.outputHitCollection,
outputHitCollection="EcalBarrelScFiHitsReco", outputHitCollection="EcalBarrelScFiHitsReco",
thresholdFactor=5.0, thresholdFactor=5.0,
readoutClass="EcalBarrelScFiHits", readoutClass="EcalBarrelScFiHits",
...@@ -59,7 +59,7 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco", ...@@ -59,7 +59,7 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
# merge hits in different layer (projection to local x-y plane) # merge hits in different layer (projection to local x-y plane)
scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="EcalBarrelScFiHitsReco", inputHitCollection=scfi_barrel_reco.outputHitCollection,
outputHitCollection="EcalBarrelScFiGridReco", outputHitCollection="EcalBarrelScFiGridReco",
fields=["fiber"], fields=["fiber"],
fieldRefNumbers=[1], fieldRefNumbers=[1],
...@@ -67,15 +67,17 @@ scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", ...@@ -67,15 +67,17 @@ scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger",
scfi_barrel_cl = IslandCluster("scfi_barrel_cl", scfi_barrel_cl = IslandCluster("scfi_barrel_cl",
# OutputLevel=DEBUG, # OutputLevel=DEBUG,
inputHitCollection="EcalBarrelScFiGridReco", inputHitCollection=scfi_barrel_reco.outputHitCollection,
outputHitCollection="EcalBarrelScFiClusterHits", outputProtoClusterCollection="EcalBarrelScFiProtoClusters",
splitCluster=False, splitCluster=False,
minClusterCenterEdep=10.*MeV, minClusterCenterEdep=10.*MeV,
localDistXZ=[30*mm, 30*mm]) localDistXZ=[30*mm, 30*mm])
scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco", scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco",
inputHitCollection="EcalBarrelScFiClusterHits", inputHitCollection=scfi_barrel_cl.inputHitCollection,
inputProtoClusterCollection=scfi_barrel.outputProtoClusterCollection,
outputClusterCollection="EcalBarrelScFiClusters", outputClusterCollection="EcalBarrelScFiClusters",
outputInfoCollection="EcalBarrelScFiClustersInfo",
logWeightBase=6.2, logWeightBase=6.2,
samplingFraction=kwargs['sf']) samplingFraction=kwargs['sf'])
......
...@@ -26,8 +26,8 @@ import sys ...@@ -26,8 +26,8 @@ import sys
# note z and x axes are switched # note z and x axes are switched
def draw_hits3d(axis, data, cmap, units=('mm', 'mm', 'mm', 'MeV'), fontsize=24, **kwargs): def draw_hits3d(axis, data, cmap, units=('mm', 'mm', 'mm', 'MeV'), fontsize=24, **kwargs):
# normalize energy to get colors # normalize energy to get colors
x, y, z, edep = np.transpose(data) x, y, z, energy = np.transpose(data)
cvals = edep - min(edep) / (max(edep) - min(edep)) cvals = energy - min(energy) / (max(energy) - min(energy))
cvals[np.isnan(cvals)] = 1.0 cvals[np.isnan(cvals)] = 1.0
colors = cmap(cvals) colors = cmap(cvals)
...@@ -37,7 +37,7 @@ def draw_hits3d(axis, data, cmap, units=('mm', 'mm', 'mm', 'MeV'), fontsize=24, ...@@ -37,7 +37,7 @@ def draw_hits3d(axis, data, cmap, units=('mm', 'mm', 'mm', 'MeV'), fontsize=24,
axis.set_zlabel('x ({})'.format(units[2]), fontsize=fontsize + 2, labelpad=fontsize) axis.set_zlabel('x ({})'.format(units[2]), fontsize=fontsize + 2, labelpad=fontsize)
axis.set_ylabel('y ({})'.format(units[1]), fontsize=fontsize + 2, labelpad=fontsize) axis.set_ylabel('y ({})'.format(units[1]), fontsize=fontsize + 2, labelpad=fontsize)
axis.set_xlabel('z ({})'.format(units[0]), fontsize=fontsize + 2, labelpad=fontsize) axis.set_xlabel('z ({})'.format(units[0]), fontsize=fontsize + 2, labelpad=fontsize)
cb = plt.colorbar(cm.ScalarMappable(norm=matplotlib.colors.Normalize(vmin=min(edep), vmax=max(edep)), cmap=cmap), cb = plt.colorbar(cm.ScalarMappable(norm=matplotlib.colors.Normalize(vmin=min(energy), vmax=max(energy)), cmap=cmap),
ax=axis, shrink=0.85) ax=axis, shrink=0.85)
cb.ax.tick_params(labelsize=fontsize) cb.ax.tick_params(labelsize=fontsize)
cb.ax.get_yaxis().labelpad = fontsize cb.ax.get_yaxis().labelpad = fontsize
...@@ -158,7 +158,7 @@ if __name__ == '__main__': ...@@ -158,7 +158,7 @@ if __name__ == '__main__':
# filter out outliers # filter out outliers
dfc = df[(df['eta'] <= df['eta'].quantile(0.95)) & (df['eta'] >= df['eta'].quantile(0.05)) & dfc = df[(df['eta'] <= df['eta'].quantile(0.95)) & (df['eta'] >= df['eta'].quantile(0.05)) &
(df['phi'] <= df['phi'].quantile(0.95)) & (df['phi'] >= df['phi'].quantile(0.05))] (df['phi'] <= df['phi'].quantile(0.95)) & (df['phi'] >= df['phi'].quantile(0.05))]
vec = np.average(dfc[['x', 'y', 'z']].values, axis=0, weights=dfc['edep'].values) vec = np.average(dfc[['x', 'y', 'z']].values, axis=0, weights=dfc['energy'].values)
vec = vec/np.linalg.norm(vec) vec = vec/np.linalg.norm(vec)
# particle line from (0, 0, 0) to the inner Ecal surface # particle line from (0, 0, 0) to the inner Ecal surface
...@@ -174,7 +174,7 @@ if __name__ == '__main__': ...@@ -174,7 +174,7 @@ if __name__ == '__main__':
# TODO need to implement motion of particles in a field # TODO need to implement motion of particles in a field
# ax.plot(*pline[[2, 1]], '--', zs=pline[0], color='green') # ax.plot(*pline[[2, 1]], '--', zs=pline[0], color='green')
# draw hits # draw hits
draw_hits3d(ax, df[['x', 'y', 'z', 'edep']].values, cmap, s=5.0) draw_hits3d(ax, df[['x', 'y', 'z', 'energy']].values, cmap, s=5.0)
draw_cylinder3d(ax, rmin, length, rstride=10, cstride=10, color='royalblue') draw_cylinder3d(ax, rmin, length, rstride=10, cstride=10, color='royalblue')
draw_cylinder3d(ax, rmin + thickness, length, rstride=10, cstride=10, color='forestgreen') draw_cylinder3d(ax, rmin + thickness, length, rstride=10, cstride=10, color='forestgreen')
ax.set_zlim(-(rmin + thickness), rmin + thickness) ax.set_zlim(-(rmin + thickness), rmin + thickness)
...@@ -191,7 +191,7 @@ if __name__ == '__main__': ...@@ -191,7 +191,7 @@ if __name__ == '__main__':
# TODO need to implement motion of particles in a field # TODO need to implement motion of particles in a field
# ax.plot(*pline[[2, 1]], '--', zs=pline[0], color='green') # ax.plot(*pline[[2, 1]], '--', zs=pline[0], color='green')
# draw hits # draw hits
draw_hits3d(ax, df[['x', 'y', 'z', 'edep']].values, cmap, s=20.0) draw_hits3d(ax, df[['x', 'y', 'z', 'energy']].values, cmap, s=20.0)
# draw_track_fit(ax, df, stop_layer=args.stop, # draw_track_fit(ax, df, stop_layer=args.stop,
# scat_kw=dict(color='k', s=50.0), line_kw=dict(linestyle=':', color='k', lw=3)) # scat_kw=dict(color='k', s=50.0), line_kw=dict(linestyle=':', color='k', lw=3))
# view range # view range
...@@ -213,7 +213,7 @@ if __name__ == '__main__': ...@@ -213,7 +213,7 @@ if __name__ == '__main__':
eta_rg = np.resize(-np.log(np.tan(vecp[0]/1000./2.)), 2) + np.asarray([-args.topo_range, args.topo_range])/1000. eta_rg = np.resize(-np.log(np.tan(vecp[0]/1000./2.)), 2) + np.asarray([-args.topo_range, args.topo_range])/1000.
fig, axs = plt.subplots(1, 2, figsize=(13, 12), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [12, 1]}) fig, axs = plt.subplots(1, 2, figsize=(13, 12), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [12, 1]})
ax, sm = draw_heatmap(axs[0], df['eta'].values, df['phi'].values, weights=df['edep'].values, ax, sm = draw_heatmap(axs[0], df['eta'].values, df['phi'].values, weights=df['energy'].values,
bins=(np.arange(*eta_rg, step=args.topo_size/1000.), np.arange(*phi_rg, step=args.topo_size)), bins=(np.arange(*eta_rg, step=args.topo_size/1000.), np.arange(*phi_rg, step=args.topo_size)),
cmap=cmap, cmin=0., pc_kw=dict(alpha=0.8, edgecolor='k')) cmap=cmap, cmin=0., pc_kw=dict(alpha=0.8, edgecolor='k'))
......
...@@ -110,7 +110,7 @@ if __name__ == '__main__': ...@@ -110,7 +110,7 @@ if __name__ == '__main__':
else: else:
dfc = df[(df['eta'] <= df['eta'].quantile(0.95)) & (df['eta'] >= df['eta'].quantile(0.05)) & dfc = df[(df['eta'] <= df['eta'].quantile(0.95)) & (df['eta'] >= df['eta'].quantile(0.05)) &
(df['phi'] <= df['phi'].quantile(0.95)) & (df['phi'] >= df['phi'].quantile(0.05))] (df['phi'] <= df['phi'].quantile(0.95)) & (df['phi'] >= df['phi'].quantile(0.05))]
vec = np.average(dfc[['x', 'y', 'z']].values, axis=0, weights=dfc['edep'].values) vec = np.average(dfc[['x', 'y', 'z']].values, axis=0, weights=dfc['energy'].values)
vec = vec/np.linalg.norm(vec) vec = vec/np.linalg.norm(vec)
# particle line from (0, 0, 0) to the inner Ecal surface # particle line from (0, 0, 0) to the inner Ecal surface
...@@ -133,7 +133,7 @@ if __name__ == '__main__': ...@@ -133,7 +133,7 @@ if __name__ == '__main__':
for i in np.arange(1, df['layer'].max() + 1, dtype=int): for i in np.arange(1, df['layer'].max() + 1, dtype=int):
data = df[df['layer'] == i] data = df[df['layer'] == i]
fig, axs = plt.subplots(1, 2, figsize=(17, 16), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [16, 1]}) fig, axs = plt.subplots(1, 2, figsize=(17, 16), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [16, 1]})
ax, sm = draw_heatmap(axs[0], data['eta'].values, data['phi'].values, weights=data['edep'].values, ax, sm = draw_heatmap(axs[0], data['eta'].values, data['phi'].values, weights=data['energy'].values,
bins=(np.arange(*eta_rg, step=args.topo_size/1000.), np.arange(*phi_rg, step=args.topo_size)), bins=(np.arange(*eta_rg, step=args.topo_size/1000.), np.arange(*phi_rg, step=args.topo_size)),
cmap=cmap, vmin=0.0, vmax=1.0, pc_kw=dict(alpha=0.8, edgecolor='k')) cmap=cmap, vmin=0.0, vmax=1.0, pc_kw=dict(alpha=0.8, edgecolor='k'))
ax.set_ylabel(r'$\phi$ (mrad)', fontsize=28) ax.set_ylabel(r'$\phi$ (mrad)', fontsize=28)
...@@ -170,7 +170,7 @@ if __name__ == '__main__': ...@@ -170,7 +170,7 @@ if __name__ == '__main__':
data = df[df['layer'] == i] data = df[df['layer'] == i]
fig, axs = plt.subplots(1, 2, figsize=(17, 16), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [16, 1]}) fig, axs = plt.subplots(1, 2, figsize=(17, 16), dpi=160, gridspec_kw={'wspace':0., 'width_ratios': [16, 1]})
ax = axs[0] ax = axs[0]
colors = cmap(data['edep']/1.0) colors = cmap(data['energy']/1.0)
ax.scatter(data['eta'].values, data['phi'].values, c=colors, marker='s', s=15.0) ax.scatter(data['eta'].values, data['phi'].values, c=colors, marker='s', s=15.0)
ax.set_xlim(*eta_rg) ax.set_xlim(*eta_rg)
ax.set_ylim(*phi_rg) ax.set_ylim(*phi_rg)
......
...@@ -20,10 +20,10 @@ import sys ...@@ -20,10 +20,10 @@ import sys
from utils import * from utils import *
def find_start_layer(grp, min_edep=0.5): def find_start_layer(grp, min_energy=0.5):
ids, edeps = grp.sort_values('layer')[['layer', 'edep']].values.T ids, energys = grp.sort_values('layer')[['layer', 'energy']].values.T
edeps = np.cumsum(edeps) energys = np.cumsum(energys)
return min(ids[edeps > min_edep]) if sum(edeps > min_edep) > 0 else -1 return min(ids[energys > min_energy]) if sum(energys > min_energy) > 0 else -1
# execute this script # execute this script
...@@ -44,9 +44,9 @@ if __name__ == '__main__': ...@@ -44,9 +44,9 @@ if __name__ == '__main__':
load_root_macros(args.macros) load_root_macros(args.macros)
# prepare data # prepare data
dfe = get_layers_data(args.file, branch=args.branch) dfe = get_layers_data(args.file, branch=args.branch)
dfe.loc[:, 'total_edep'] = dfe.groupby(['event', 'cluster'])['edep'].transform('sum') dfe.loc[:, 'total_energy'] = dfe.groupby(['event', 'cluster'])['energy'].transform('sum')
# dfe.loc[:, 'efrac'] = dfe['edep']/dfe['total_edep'] # dfe.loc[:, 'efrac'] = dfe['energy']/dfe['total_energy']
dfe.loc[:, 'efrac'] = dfe['edep']/(args.energy*1000.) dfe.loc[:, 'efrac'] = dfe['energy']/(args.energy*1000.)
# dfe = dfe[dfe['cluster'] == 0] # dfe = dfe[dfe['cluster'] == 0]
os.makedirs(args.outdir, exist_ok=True) os.makedirs(args.outdir, exist_ok=True)
...@@ -54,7 +54,7 @@ if __name__ == '__main__': ...@@ -54,7 +54,7 @@ if __name__ == '__main__':
slayer = dfe.groupby('event').apply(lambda x: find_start_layer(x, 1.0)).astype(int) slayer = dfe.groupby('event').apply(lambda x: find_start_layer(x, 1.0)).astype(int)
dfe = dfe.merge(slayer.to_frame(name='slayer'), on='event') dfe = dfe.merge(slayer.to_frame(name='slayer'), on='event')
# dfe.loc[:, 'eff_layer'] = dfe['layer'] - dfe['slayer'] # dfe.loc[:, 'eff_layer'] = dfe['layer'] - dfe['slayer']
# prof = dfe[dfe['eff_layer'] > 0].groupby('eff_layer')['edep'].describe() # prof = dfe[dfe['eff_layer'] > 0].groupby('eff_layer')['energy'].describe()
prof = dfe.groupby('layer')['efrac'].describe() prof = dfe.groupby('layer')['efrac'].describe()
# print(prof['mean']) # print(prof['mean'])
...@@ -73,7 +73,7 @@ if __name__ == '__main__': ...@@ -73,7 +73,7 @@ if __name__ == '__main__':
ax.set_ylabel('Normalized Counts', fontsize=26) ax.set_ylabel('Normalized Counts', fontsize=26)
ax.text(*bpos, 'Mininum Edep\n' + '{:.1f} MeV'.format(1.0), ax.text(*bpos, 'Mininum Edep\n' + '{:.1f} MeV'.format(1.0),
transform=ax.transAxes, fontsize=26, verticalalignment='top', bbox=bprops) transform=ax.transAxes, fontsize=26, verticalalignment='top', bbox=bprops)
fig.savefig(os.path.join(args.outdir, 'edep_start_{}_{}.png'.format(args.type, int(args.energy)))) fig.savefig(os.path.join(args.outdir, 'energy_start_{}_{}.png'.format(args.type, int(args.energy))))
fig, ax = plt.subplots(figsize=(16, 9), dpi=160) fig, ax = plt.subplots(figsize=(16, 9), dpi=160)
...@@ -90,7 +90,7 @@ if __name__ == '__main__': ...@@ -90,7 +90,7 @@ if __name__ == '__main__':
ax.set_ylabel('Energy Deposit Percentage', fontsize=26) ax.set_ylabel('Energy Deposit Percentage', fontsize=26)
fig.savefig(os.path.join(args.outdir, 'efrac_{}_{}.png'.format(args.type, int(args.energy)))) fig.savefig(os.path.join(args.outdir, 'efrac_{}_{}.png'.format(args.type, int(args.energy))))
# edep fraction by layers # energy fraction by layers
layers = np.asarray([ layers = np.asarray([
[1, 5, 8,], [1, 5, 8,],
[10, 15, 20], [10, 15, 20],
...@@ -111,7 +111,7 @@ if __name__ == '__main__': ...@@ -111,7 +111,7 @@ if __name__ == '__main__':
ax.grid(linestyle=':', which='both') ax.grid(linestyle=':', which='both')
# ax.set_xlabel('Energy Deposit (MeV)', fontsize=26) # ax.set_xlabel('Energy Deposit (MeV)', fontsize=26)
# ax.set_ylabel('Normalized Counts', fontsize=26) # ax.set_ylabel('Normalized Counts', fontsize=26)
mean, std = data.describe().loc[['mean', 'std'], 'edep'].values mean, std = data.describe().loc[['mean', 'std'], 'energy'].values
label = 'Layer {}'.format(layer) label = 'Layer {}'.format(layer)
# + '\n' + r'$\mu = {:.3f}$ MeV'.format(mean) # + '\n' + r'$\mu = {:.3f}$ MeV'.format(mean)
# + '\n' + r'$\sigma = {:.3f}$ MeV'.format(std) # + '\n' + r'$\sigma = {:.3f}$ MeV'.format(std)
......
...@@ -98,10 +98,12 @@ def get_hits_data(path, evnums=None, branch='RecoEcalBarrelHits'): ...@@ -98,10 +98,12 @@ def get_hits_data(path, evnums=None, branch='RecoEcalBarrelHits'):
events.GetEntry(iev) events.GetEntry(iev)
for hit in getattr(events, branch): for hit in getattr(events, branch):
dbuf[idb] = (iev, hit.clusterID, hit.layerID, hit.position.x, hit.position.y, hit.position.z, hit.edep*1000.) dbuf[idb] = (iev, hit.ID.value, hit.layer, hit.position.x, hit.position.y,
hit.position.z, hit.energy*1000.)
idb += 1 idb += 1
return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'layer', 'x', 'y', 'z', 'edep']) return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'layer', 'x', 'y',
'z', 'energy'])
# read layers data from root file # read layers data from root file
...@@ -122,11 +124,13 @@ def get_layers_data(path, evnums=None, branch="EcalBarrelClustersLayers"): ...@@ -122,11 +124,13 @@ def get_layers_data(path, evnums=None, branch="EcalBarrelClustersLayers"):
events.GetEntry(iev) events.GetEntry(iev)
for layer in getattr(events, branch): for layer in getattr(events, branch):
dbuf[idb] = (iev, layer.clusterID, layer.layerID, dbuf[idb] = (iev, layer.clusterID.value, layer.layer,
layer.position.x, layer.position.y, layer.position.z, layer.edep*1000.) layer.position.x, layer.position.y, layer.position.z,
layer.energy*1000.)
idb += 1 idb += 1
return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'layer', 'x', 'y', 'z', 'edep']) return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'layer', 'x', 'y',
'z', 'energy'])
# read clusters data from root file # read clusters data from root file
...@@ -147,10 +151,10 @@ def get_clusters_data(path, evnums=None, branch='EcalBarrelClustersReco'): ...@@ -147,10 +151,10 @@ def get_clusters_data(path, evnums=None, branch='EcalBarrelClustersReco'):
events.GetEntry(iev) events.GetEntry(iev)
for k, cl in enumerate(getattr(events, branch)): for k, cl in enumerate(getattr(events, branch)):
dbuf[idb] = (iev, k, cl.nhits, cl.edep*1000., cl.cl_theta, cl.cl_phi) dbuf[idb] = (iev, k, cl.nhits, cl.energy*1000., cl.cl_theta, cl.cl_phi)
idb += 1 idb += 1
return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'nhits', 'edep', 'cl_theta', 'cl_phi']) return pd.DataFrame(data=dbuf[:idb], columns=['event', 'cluster', 'nhits', 'energy', 'cl_theta', 'cl_phi'])
def compact_constants(path, names): def compact_constants(path, names):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment