diff --git a/benchmarks/clustering/options/full_cal_clusters.py b/benchmarks/clustering/options/full_cal_clusters.py index c091624cdd6dfdb35aea62b18c8e3a0e6315c70a..426e7c2e235ab59e35b16696d2059e00987584a5 100644 --- a/benchmarks/clustering/options/full_cal_clusters.py +++ b/benchmarks/clustering/options/full_cal_clusters.py @@ -48,8 +48,8 @@ from Configurables import Jug__Reco__ImagingClusterReco as ImagingClusterReco # branches needed from simulation root file digi_coll = [ # "mcparticles2", - "CrystalEcalHitsReco", - "EcalEndcapHitsReco", + "EcalEndcapNHitsReco", + "EcalEndcapPHitsReco", "EcalBarrelHitsReco", "HcalBarrelHitsReco", "HcalHadronEndcapHitsReco", @@ -66,38 +66,38 @@ podout = PodioOutput("out", filename=output_rec) # Crystal Endcap Ecal ce_ecal_cl = IslandCluster("ce_ecal_cl", # OutputLevel=DEBUG, - inputHitCollection="CrystalEcalHitsReco", - outputClusterCollection="CrystalEcalClusters", - splitHitCollection="CrystalEcalHitsSplit", + inputHitCollection="EcalEndcapNHitsReco", + outputClusterCollection="EcalEndcapNClusters", + splitHitCollection="EcalEndcapNHitsSplit", splitCluster=False, minClusterCenterEdep=30*MeV, groupRanges=[2.2*cm, 2.2*cm]) ce_ecal_clreco = RecoCoG("ce_ecal_clreco", - clusterCollection="CrystalEcalClusters", + clusterCollection="EcalEndcapNClusters", samplingFraction=0.998, # this accounts for a small fraction of leakage logWeightBase=4.6) # Endcap Sampling Ecal # merge hits in different layer (projection to local x-y plane) -ce_ecal2_merger = CalHitsMerger("ce_ecal2_merger", - inputHitCollection="EcalEndcapHitsReco", - outputHitCollection="EcalEndcapHitsRecoXY", +ci_ecal_merger = CalHitsMerger("ci_ecal_merger", + inputHitCollection="EcalEndcapPHitsReco", + outputHitCollection="EcalEndcapPHitsRecoXY", fields=["layer", "slice"], fieldRefNumbers=[1, 0], - readoutClass="EcalEndcapHits") + readoutClass="EcalEndcapPHits") -ce_ecal2_cl = IslandCluster("ce_ecal2_cl", - inputHitCollection="EcalEndcapHitsRecoXY", - outputClusterCollection="EcalEndcapClusters", - splitHitCollection="EcalEndcapHitsSplit", +ci_ecal_cl = IslandCluster("ci_ecal_cl", + inputHitCollection="EcalEndcapPHitsRecoXY", + outputClusterCollection="EcalEndcapPClusters", + splitHitCollection="EcalEndcapPHitsSplit", splitCluster=False, minClusterCenterEdep=30.*MeV, groupRanges=[5*mm, 5*mm]) -ce_ecal2_clreco = RecoCoG("ce_ecal2_clreco", - clusterCollection="EcalEndcapClusters", +ci_ecal_clreco = RecoCoG("ci_ecal_clreco", + clusterCollection="EcalEndcapPClusters", logWeightBase=6.2, samplingFraction=ce_ecal_sf) @@ -187,7 +187,7 @@ podout.outputCommands = ["drop *", "keep mcparticles", "keep *Clusters", "keep * ApplicationMgr( TopAlg = [podin, # copier, ce_ecal_cl, ce_ecal_clreco, - ce_ecal2_merger, ce_ecal2_cl, ce_ecal2_clreco, + ci_ecal_merger, ci_ecal_cl, ci_ecal_clreco, cb_ecal_cl, cb_ecal_clreco, cb_hcal_merger, cb_hcal_cl, cb_hcal_clreco, ce_hcal_merger, ce_hcal_cl, ce_hcal_clreco, diff --git a/benchmarks/clustering/options/full_cal_digi.py b/benchmarks/clustering/options/full_cal_digi.py index dcc584a1c6b25a1564f92c34ceaf3989195c0a56..b0681023ce1295f3767ef5793093091833a98aaf 100644 --- a/benchmarks/clustering/options/full_cal_digi.py +++ b/benchmarks/clustering/options/full_cal_digi.py @@ -40,8 +40,8 @@ from Configurables import Jug__Reco__ImagingClusterReco as ImagingClusterReco # branches needed from simulation root file sim_coll = [ "mcparticles", - "CrystalEcalHits", - "EcalEndcapHits", + "EcalEndcapNHits", + "EcalEndcapPHits", "EcalBarrelHits", "HcalBarrelHits", "HcalHadronEndcapHits", @@ -57,8 +57,8 @@ copier = MCCopier("MCCopier", inputCollection="mcparticles", outputCollection="m # Crystal Endcap Ecal ce_ecal_digi = CalHitDigi("ce_ecal_digi", - inputHitCollection="CrystalEcalHits", - outputHitCollection="CrystalEcalHitsDigi", + inputHitCollection="EcalEndcapNHits", + outputHitCollection="EcalEndcapNHitsDigi", energyResolutions=[0., 0.02, 0.], dynamicRangeADC=5.*GeV, # digi settings must match with reco capacityADC=32768, @@ -66,27 +66,29 @@ ce_ecal_digi = CalHitDigi("ce_ecal_digi", pedestalSigma=3) ce_ecal_reco = CalHitReco("ce_ecal_reco", - inputHitCollection="CrystalEcalHitsDigi", - outputHitCollection="CrystalEcalHitsReco", + inputHitCollection="EcalEndcapNHitsDigi", + outputHitCollection="EcalEndcapNHitsReco", dynamicRangeADC=5.*GeV, capacityADC=32768, pedestalMean=400, pedestalSigma=3, thresholdFactor=4, # 4 sigma - minimumHitEdep=1.0*MeV) # discard low energy hits + minimumHitEdep=1.0*MeV, # discard low energy hits + readoutClass="EcalEndcapNHits", + sectorField="sector") # Endcap Sampling Ecal -ce_ecal2_digi = CalHitDigi("ce_ecal2_digi", - inputHitCollection="EcalEndcapHits", - outputHitCollection="EcalEndcapHitsDigi", +ci_ecal_digi = CalHitDigi("ci_ecal_digi", + inputHitCollection="EcalEndcapPHits", + outputHitCollection="EcalEndcapPHitsDigi", dynamicRangeADC=50.*MeV, capacityADC=32768, pedestalMean=400, pedestalSigma=10) -ce_ecal2_reco = CalHitReco("ce_ecal2_reco", - inputHitCollection="EcalEndcapHitsDigi", - outputHitCollection="EcalEndcapHitsReco", +ci_ecal_reco = CalHitReco("ci_ecal_reco", + inputHitCollection="EcalEndcapPHitsDigi", + outputHitCollection="EcalEndcapPHitsReco", dynamicRangeADC=50.*MeV, capacityADC=32768, pedestalMean=400, @@ -130,7 +132,10 @@ cb_hcal_reco = CalHitReco("cb_hcal_reco", capacityADC=32768, pedestalMean=400, pedestalSigma=10, - thresholdFactor=5.0) + thresholdFactor=5.0, + readoutClass="HcalBarrelHits", + layerField="layer", + sectorField="module") # Hcal Hadron Endcap ci_hcal_digi = CalHitDigi("ci_hcal_digi", @@ -174,7 +179,7 @@ podout.outputCommands = ['drop *', 'keep mcparticles2', 'keep *Reco', 'keep *Dig ApplicationMgr( TopAlg = [podin, copier, ce_ecal_digi, ce_ecal_reco, - ce_ecal2_digi, ce_ecal2_reco, + ci_ecal_digi, ci_ecal_reco, cb_ecal_digi, cb_ecal_reco, cb_hcal_digi, cb_hcal_reco, ce_hcal_digi, ce_hcal_reco, diff --git a/benchmarks/clustering/scripts/cluster_plots.py b/benchmarks/clustering/scripts/cluster_plots.py index b7bcb95b3bf56af6280acec48a9abfb116926bc6..9d0bd63353adc50144b1f032fd7677fdc8138f12 100644 --- a/benchmarks/clustering/scripts/cluster_plots.py +++ b/benchmarks/clustering/scripts/cluster_plots.py @@ -91,8 +91,8 @@ def general_clusters_figure(df, collection, save, min_nhits=3): data=np.vstack(list(data.values())).T) dfp.loc[:, 'evn'] = evns # select the max. energy cluster for each event - dfp = dfp.loc[dfp.groupby('evn')['edep'].idxmax()] - dfp = dfp.loc[dfp['nhits'] >= min_nhits] + dfc = dfp.loc[dfp.groupby('evn')['edep'].idxmax()] + dfc = dfc.loc[dfc['nhits'] >= min_nhits] # figure fig, axs = plt.subplots(2, 2, figsize=(16, 12), dpi=120) labels = [ @@ -101,7 +101,7 @@ def general_clusters_figure(df, collection, save, min_nhits=3): (r'$\theta$ (rad)', 'Counts'), (r'$\phi$ (rad)', 'Counts'), ] - for ax, label, vals in zip(axs.flat, labels, dfp[['nhits', 'edep', 'theta', 'phi']].values.T): + for ax, label, vals in zip(axs.flat, labels, dfc[['nhits', 'edep', 'theta', 'phi']].values.T): ax.hist(vals, bins=50, ec='k') ax.tick_params(labelsize=22, direction='in', which='both') ax.grid(linestyle=':', which='both') @@ -112,6 +112,7 @@ def general_clusters_figure(df, collection, save, min_nhits=3): fig.text(0.5, 0.95, collection, ha='center', fontsize=24) fig.savefig(save) plt.close(fig) + return dfp if __name__ == '__main__': @@ -143,12 +144,18 @@ if __name__ == '__main__': rdf_rec = ROOT.RDataFrame('events', args.rec_file) thrown_particles_figure(rdf_sim, save=os.path.join(args.outdir, 'thrown_particles.png'), mcbranch=args.mc) - general_clusters_figure(rdf_rec, collection='CrystalEcalClusters', min_nhits=5, - save=os.path.join(args.outdir, 'crystal_ecal_clusters.png')) - general_clusters_figure(rdf_rec, collection='EcalEndcapClusters', min_nhits=10, - save=os.path.join(args.outdir, 'ecal_endcap_clusters.png')) + + general_clusters_figure(rdf_rec, collection='EcalEndcapNClusters', min_nhits=10, + save=os.path.join(args.outdir, 'ecal_electron_endcap_clusters.png')) + general_clusters_figure(rdf_rec, collection='EcalEndcapPClusters', min_nhits=5, + save=os.path.join(args.outdir, 'ecal_hadron_endcap_clusters.png')) general_clusters_figure(rdf_rec, collection='EcalBarrelClusters', save=os.path.join(args.outdir, 'ecal_barrel_clusters.png')) + + general_clusters_figure(rdf_rec, collection='HcalElectronEndcapClusters', min_nhits=5, + save=os.path.join(args.outdir, 'hcal_electron_endcap_clusters.png')) + general_clusters_figure(rdf_rec, collection='HcalHadronEndcapClusters', min_nhits=10, + save=os.path.join(args.outdir, 'hcal_hadron_endcap_clusters.png')) general_clusters_figure(rdf_rec, collection='HcalBarrelClusters', save=os.path.join(args.outdir, 'hcal_barrel_clusters.png')) diff --git a/benchmarks/ecal/options/crystal_calorimeter_reco.py b/benchmarks/ecal/options/crystal_calorimeter_reco.py index 51b2cf17b076089bf8a210ab97378234197e3139..706a7fd75f8177b6a5f2ae39fe9b8578ff421047 100644 --- a/benchmarks/ecal/options/crystal_calorimeter_reco.py +++ b/benchmarks/ecal/options/crystal_calorimeter_reco.py @@ -45,14 +45,14 @@ from Configurables import Jug__Reco__CrystalEndcapsReco as CrystalEndcapsReco from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG -podioinput = PodioInput("PodioReader", collections=["mcparticles","CrystalEcalHits"], OutputLevel=DEBUG) +podioinput = PodioInput("PodioReader", collections=["mcparticles","EcalEndcapNHits"], OutputLevel=DEBUG) ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection. copier = MCCopier("MCCopier", inputCollection="mcparticles", outputCollection="mcparticles2",OutputLevel=INFO) -calcopier = CalCopier("CalCopier", inputCollection="CrystalEcalHits", outputCollection="CrystalEcalHits2",OutputLevel=INFO) +calcopier = CalCopier("CalCopier", inputCollection="EcalEndcapNHits", outputCollection="EcalEndcapNHits2",OutputLevel=INFO) emcaldigi = CrystalEndcapsDigi("ecal_digi", - inputHitCollection="CrystalEcalHits", + inputHitCollection="EcalEndcapNHits", outputHitCollection="RawDigiEcalHits") emcalreco = CrystalEndcapsReco("ecal_reco", @@ -69,7 +69,7 @@ emcalcluster = IslandCluster("emcal_cluster", clusterreco = RecoCoG("cluster_reco", clusterCollection="EcalClusters", logWeightBase=4.2, - moduleDimZName="CrystalBox_z_length") + moduleDimZName="CrystalModule_sz") out = PodioOutput("out", filename=output_rec_file) diff --git a/benchmarks/ecal/options/example_crystal.py b/benchmarks/ecal/options/example_crystal.py index ae5675dab6fafe85a0d1b994479a9ce5e608f01d..5c41b001183458d95a582a159d301ef0f25d137b 100644 --- a/benchmarks/ecal/options/example_crystal.py +++ b/benchmarks/ecal/options/example_crystal.py @@ -29,7 +29,7 @@ emcalreco = CrystalEndcapsReco("ecal_reco", inputHitCollection="RawDigiEcalHits" minModuleEdep=1.0*units.MeV) emcalcluster = IslandCluster("emcal_cluster", inputHitCollection="RecoEcalHits", outputClusterCollection="EcalClusters", minClusterCenterEdep=30*units.MeV, groupRange=2.0) -clusterreco = RecoCoG("cluster_reco", clusterCollection="EcalClusters", logWeightBase=4.2, moduleDimZName="CrystalBox_z_length") +clusterreco = RecoCoG("cluster_reco", clusterCollection="EcalClusters", logWeightBase=4.2, moduleDimZName="CrystalModule_sz") out = PodioOutput("out", filename=output_rec_file) diff --git a/benchmarks/ecal/options/full_em_calorimeter_reco.py b/benchmarks/ecal/options/full_em_calorimeter_reco.py index 42f15da7a2da767ca7f4eab640726bad658ac17d..8bbf1bdfcb13151d013ac6772cd4a24cbae68d45 100644 --- a/benchmarks/ecal/options/full_em_calorimeter_reco.py +++ b/benchmarks/ecal/options/full_em_calorimeter_reco.py @@ -42,7 +42,7 @@ from Configurables import Jug__Reco__CrystalEndcapsReco as CrystalEndcapsReco from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG -podioinput = PodioInput("PodioReader", collections=["mcparticles","CrystalEcalHits","EcalBarrelHits","EcalEndcapHits"], OutputLevel=DEBUG) +podioinput = PodioInput("PodioReader", collections=["mcparticles","EcalEndcapNHits","EcalBarrelHits","EcalEndcapPHits"], OutputLevel=DEBUG) ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection. copier = MCCopier("MCCopier", @@ -51,8 +51,8 @@ copier = MCCopier("MCCopier", OutputLevel=DEBUG) calcopier = CalCopier("CalCopier", - inputCollection="CrystalEcalHits", - outputCollection="CrystalEcalHits2", + inputCollection="EcalEndcapNHits", + outputCollection="EcalEndcapNHits2", OutputLevel=DEBUG) embarrelcopier = CalCopier("CalBarrelCopier", @@ -71,13 +71,13 @@ embarreldigi = EcalTungstenSamplingDigi("ecal_barrel_digi", OutputLevel=DEBUG) emendcapdigi = EcalTungstenSamplingDigi("ec_endcap_digi", - inputHitCollection="EcalEndcapHits", - outputHitCollection="RawEcalEndcapHits", + inputHitCollection="EcalEndcapPHits", + outputHitCollection="RawEcalEndcapPHits", energyResolution=0.07, OutputLevel=DEBUG) emcaldigi = CrystalEndcapsDigi("ecal_digi", - inputHitCollection="CrystalEcalHits", + inputHitCollection="EcalEndcapNHits", outputHitCollection="RawDigiEcalHits") emcalreco = CrystalEndcapsReco("ecal_reco", @@ -94,7 +94,7 @@ emcalcluster = IslandCluster("emcal_cluster", clusterreco = RecoCoG("cluster_reco", clusterCollection="EcalClusters", logWeightBase=4.2, - moduleDimZName="CrystalBox_z_length") + moduleDimZName="CrystalModule_sz") out = PodioOutput("out", filename=output_rec_file)