Skip to content
Snippets Groups Projects

Improved calorimeter reconstruction

Merged Sylvester Joosten requested to merge improved_clusters into master
3 files
+ 104
59
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -60,6 +60,8 @@ from Configurables import Jug__Reco__CalorimeterHitReco as CalHitReco
@@ -60,6 +60,8 @@ from Configurables import Jug__Reco__CalorimeterHitReco as CalHitReco
from Configurables import Jug__Reco__CalorimeterHitsMerger as CalHitsMerger
from Configurables import Jug__Reco__CalorimeterHitsMerger as CalHitsMerger
from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster
from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster
from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG
from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG
 
from Configurables import Jug__Fast__TruthClustering as TruthClustering
 
from Configurables import Jug__Fast__ClusterMerger as ClusterMerger
# branches needed from simulation root file
# branches needed from simulation root file
sim_coll = [
sim_coll = [
@@ -77,7 +79,6 @@ algorithms.append(podin)
@@ -77,7 +79,6 @@ algorithms.append(podin)
# Crystal Endcap Ecal
# Crystal Endcap Ecal
ce_ecal_daq = calo_daq['ecal_neg_endcap']
ce_ecal_daq = calo_daq['ecal_neg_endcap']
ce_ecal_digi = CalHitDigi("ce_ecal_digi",
ce_ecal_digi = CalHitDigi("ce_ecal_digi",
inputHitCollection="EcalEndcapNHits",
inputHitCollection="EcalEndcapNHits",
outputHitCollection="EcalEndcapNRawHits",
outputHitCollection="EcalEndcapNRawHits",
@@ -89,36 +90,50 @@ ce_ecal_reco = CalHitReco("ce_ecal_reco",
@@ -89,36 +90,50 @@ ce_ecal_reco = CalHitReco("ce_ecal_reco",
inputHitCollection=ce_ecal_digi.outputHitCollection,
inputHitCollection=ce_ecal_digi.outputHitCollection,
outputHitCollection="EcalEndcapNRecHits",
outputHitCollection="EcalEndcapNRecHits",
thresholdFactor=4, # 4 sigma cut on pedestal sigma
thresholdFactor=4, # 4 sigma cut on pedestal sigma
 
samplingFraction=0.998, # this accounts for a small fraction of leakage
readoutClass="EcalEndcapNHits",
readoutClass="EcalEndcapNHits",
sectorField="sector",
sectorField="sector",
**ce_ecal_daq)
**ce_ecal_daq)
algorithms.append(ce_ecal_reco)
algorithms.append(ce_ecal_reco)
ce_ecal_cl = IslandCluster("ce_ecal_cl",
ce_ecal_cl = TruthClustering("ce_ecal_cl",
inputHitCollection=ce_ecal_reco.outputHitCollection,
inputHits=ce_ecal_reco.outputHitCollection,
outputProtoClusterCollection="EcalEndcapNProtoClusters",
mcHits="EcalEndcapNHits",
splitCluster=False,
outputProtoClusters="EcalEndcapNProtoClusters")
minClusterHitEdep=1.0*units.MeV, # discard low energy hits
#ce_ecal_cl = IslandCluster("ce_ecal_cl",
minClusterCenterEdep=30*units.MeV,
# inputHitCollection=ce_ecal_reco.outputHitCollection,
sectorDist=5.0*units.cm,
# outputProtoClusterCollection="EcalEndcapNProtoClusters",
dimScaledLocalDistXY=[1.8, 1.8]) # dimension scaled dist is good for hybrid sectors with different module size
# splitCluster=False,
 
# minClusterHitEdep=1.0*units.MeV, # discard low energy hits
 
# minClusterCenterEdep=30*units.MeV,
 
# sectorDist=5.0*units.cm,
 
# dimScaledLocalDistXY=[1.8, 1.8]) # dimension scaled dist is good for hybrid sectors with different module size
algorithms.append(ce_ecal_cl)
algorithms.append(ce_ecal_cl)
ce_ecal_clreco = RecoCoG("ce_ecal_clreco",
ce_ecal_clreco = RecoCoG("ce_ecal_clreco",
inputHitCollection=ce_ecal_cl.inputHitCollection,
#inputHitCollection=ce_ecal_cl.inputHitCollection,
inputProtoClusterCollection=ce_ecal_cl.outputProtoClusterCollection,
inputHitCollection=ce_ecal_cl.inputHits,
 
#inputProtoClusterCollection=ce_ecal_cl.outputProtoClusterCollection,
 
inputProtoClusterCollection=ce_ecal_cl.outputProtoClusters,
outputClusterCollection="EcalEndcapNClusters",
outputClusterCollection="EcalEndcapNClusters",
mcHits="EcalEndcapNHits",
mcHits="EcalEndcapNHits",
samplingFraction=0.998, # this accounts for a small fraction of leakage
logWeightBase=4.6)
logWeightBase=4.6)
algorithms.append(ce_ecal_clreco)
algorithms.append(ce_ecal_clreco)
# Endcap Sampling Ecal
ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger",
 
inputClusters = ce_ecal_clreco.outputClusterCollection,
 
outputClusters = "EcalEndcapNMergedClusters",
 
outputRelations = "EcalEndcapNMergedClusterRelations")
 
algorithms.append(ce_ecal_clmerger)
 
 
# Endcap ScFi Ecal
ci_ecal_daq = calo_daq['ecal_pos_endcap']
ci_ecal_daq = calo_daq['ecal_pos_endcap']
ci_ecal_digi = CalHitDigi("ci_ecal_digi",
ci_ecal_digi = CalHitDigi("ci_ecal_digi",
inputHitCollection="EcalEndcapPHits",
inputHitCollection="EcalEndcapPHits",
outputHitCollection="EcalEndcapPRawHits",
outputHitCollection="EcalEndcapPRawHits",
 
scaleResponse=ci_ecal_sf,
 
energyResolutions=[.1, .0015, 0.],
**ci_ecal_daq)
**ci_ecal_daq)
algorithms.append(ci_ecal_digi)
algorithms.append(ci_ecal_digi)
@@ -126,6 +141,7 @@ ci_ecal_reco = CalHitReco("ci_ecal_reco",
@@ -126,6 +141,7 @@ ci_ecal_reco = CalHitReco("ci_ecal_reco",
inputHitCollection=ci_ecal_digi.outputHitCollection,
inputHitCollection=ci_ecal_digi.outputHitCollection,
outputHitCollection="EcalEndcapPRecHits",
outputHitCollection="EcalEndcapPRecHits",
thresholdFactor=5.0,
thresholdFactor=5.0,
 
samplingFraction=ci_ecal_sf,
**ci_ecal_daq)
**ci_ecal_daq)
algorithms.append(ci_ecal_reco)
algorithms.append(ci_ecal_reco)
@@ -140,23 +156,35 @@ ci_ecal_merger = CalHitsMerger("ci_ecal_merger",
@@ -140,23 +156,35 @@ ci_ecal_merger = CalHitsMerger("ci_ecal_merger",
readoutClass="EcalEndcapPHits")
readoutClass="EcalEndcapPHits")
algorithms.append(ci_ecal_merger)
algorithms.append(ci_ecal_merger)
ci_ecal_cl = IslandCluster("ci_ecal_cl",
ci_ecal_cl = TruthClustering("ci_ecal_cl",
inputHitCollection=ci_ecal_merger.outputHitCollection,
inputHits=ci_ecal_reco.outputHitCollection,
outputProtoClusterCollection="EcalEndcapPProtoClusters",
mcHits="EcalEndcapPHits",
splitCluster=False,
outputProtoClusters="EcalEndcapPProtoClusters")
minClusterCenterEdep=10.*units.MeV,
#ci_ecal_cl = IslandCluster("ci_ecal_cl",
localDistXY=[10*units.mm, 10*units.mm])
#inputHitCollection=ci_ecal_merger.outputHitCollection,
 
#outputProtoClusterCollection="EcalEndcapPProtoClusters",
 
#splitCluster=False,
 
#minClusterCenterEdep=10.*units.MeV,
 
#localDistXY=[10*units.mm, 10*units.mm])
algorithms.append(ci_ecal_cl)
algorithms.append(ci_ecal_cl)
ci_ecal_clreco = RecoCoG("ci_ecal_clreco",
ci_ecal_clreco = RecoCoG("ci_ecal_clreco",
inputHitCollection=ci_ecal_cl.inputHitCollection,
#inputHitCollection=ci_ecal_cl.inputHitCollection,
inputProtoClusterCollection=ci_ecal_cl.outputProtoClusterCollection,
inputHitCollection=ci_ecal_cl.inputHits,
 
#inputProtoClusterCollection=ci_ecal_cl.outputProtoClusterCollection,
 
inputProtoClusterCollection=ci_ecal_cl.outputProtoClusters,
outputClusterCollection="EcalEndcapPClusters",
outputClusterCollection="EcalEndcapPClusters",
 
enableEtaBounds=True,
mcHits="EcalEndcapPHits",
mcHits="EcalEndcapPHits",
logWeightBase=6.2,
logWeightBase=6.2)
samplingFraction=ci_ecal_sf)
algorithms.append(ci_ecal_clreco)
algorithms.append(ci_ecal_clreco)
 
ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger",
 
inputClusters = ci_ecal_clreco.outputClusterCollection,
 
outputClusters = "EcalEndcapPMergedClusters",
 
outputRelations = "EcalEndcapPMergedClusterRelations")
 
algorithms.append(ci_ecal_clmerger)
 
# Output
# Output
podout = PodioOutput("out", filename=output_rec)
podout = PodioOutput("out", filename=output_rec)
podout.outputCommands = [
podout.outputCommands = [
Loading