From ea13c1ac2ce562ff63369aca76d90926c232e759 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Mon, 11 Aug 2025 18:17:16 -0500 Subject: [PATCH 1/3] Put supera config in icaruscode with correct SimChannel input. Override in stage1 reco fcl file. --- fcl/reco/Definitions/stage1_icarus_defs.fcl | 3 + .../supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl | 199 ++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl diff --git a/fcl/reco/Definitions/stage1_icarus_defs.fcl b/fcl/reco/Definitions/stage1_icarus_defs.fcl index d5b1255c6..49ca2ea09 100644 --- a/fcl/reco/Definitions/stage1_icarus_defs.fcl +++ b/fcl/reco/Definitions/stage1_icarus_defs.fcl @@ -389,4 +389,7 @@ icarus_stage1_producers.SBNShowerGausCryoW.UseAllParticles: icarus_stage1_producers.SBNShowerGausCryoE.PFParticleLabel: "pandoraGausCryoE" icarus_stage1_producers.SBNShowerGausCryoE.UseAllParticles: true +# Set supera input fcl files +icarus_stage1_analyzers.superaMC.supera_params: "supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl" + END_PROLOG diff --git a/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl b/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl new file mode 100644 index 000000000..0a6b52ed5 --- /dev/null +++ b/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_v10.fcl @@ -0,0 +1,199 @@ +ProcessDriver: { + + Verbosity: 2 + EnableFilter: true + RandomAccess: false + ProcessType: ["SuperaMCTruth","SuperaBBoxInteraction","SuperaMCParticleCluster","SuperaSimEnergyDeposit","SuperaSpacePoint","SuperaSpacePoint","Tensor3DFromCluster3D","CombineTensor3D","ThresholdTensor3D","CombineTensor3D","ParticleCorrector","EmptyTensorFilter","RescaleChargeTensor3D","RescaleChargeTensor3D","SuperaOptical","SuperaCRT"] + ProcessName: ["MultiPartVrtx","SuperaBBoxInteraction","SuperaMCParticleCluster","SuperaSimEnergyDeposit","SuperaSpacePointCryoE","SuperaSpacePointCryoW","Tensor3DFromCluster3D","CombineTensor3DGhost","ThresholdTensor3D","CombineTensor3D","ParticleCorrector","EmptyTensorFilter","RescaleChargeTensor3DCryoE","RescaleChargeTensor3DCryoW","SuperaOptical","SuperaCRT"] + + IOManager: { + Verbosity: 2 + Name: "IOManager" + IOMode: 1 + OutFileName: "out_test.root" + InputFiles: [] + InputDirs: [] + StoreOnlyType: [] + StoreOnlyName: [] + } + + ProcessList: { + SuperaCRT: { + CRTHitProducers: ["crthit"] + CRTHitOutputs: ["crthit"] + } + + SuperaOptical: { + OpFlashProducers: ["opflashCryoE","opflashCryoW"] + OpFlashOutputs: ["cryoE","cryoW"] + } + + EmptyTensorFilter: { + Tensor3DProducerList: ["pcluster_semantics_ghost"] + MinVoxel3DCountList: [1] + } + + RescaleChargeTensor3DCryoE: { + HitKeyProducerList: ["reco_cryoE_hit_key0","reco_cryoE_hit_key1","reco_cryoE_hit_key2"] + HitChargeProducerList: ["reco_cryoE_hit_charge0","reco_cryoE_hit_charge1","reco_cryoE_hit_charge2"] + OutputProducer: "reco_cryoE_rescaled" + ReferenceProducer: "pcluster" + } + + RescaleChargeTensor3DCryoW: { + HitKeyProducerList: ["reco_cryoW_hit_key0","reco_cryoW_hit_key1","reco_cryoW_hit_key2"] + HitChargeProducerList: ["reco_cryoW_hit_charge0","reco_cryoW_hit_charge1","reco_cryoW_hit_charge2"] + OutputProducer: "reco_cryoW_rescaled" + ReferenceProducer: "pcluster" + } + + ThresholdTensor3D: { # fill with ghost value (5) + TargetProducer: "pcluster_semantics_ghost" + OutputProducer: "pcluster_semantics_ghost" + PaintValue: 5 + } + + CombineTensor3DGhost: { # Combine voxels of cryoE and cryoW + OutputProducer: "pcluster_semantics_ghost" + Tensor3DProducers: ["reco_cryoE","reco_cryoW"] + PoolType: 0 + } + + CombineTensor3D: { + Tensor3DProducers: ["pcluster_semantics_ghost","pcluster_semantics"] + OutputProducer: "pcluster_semantics_ghost" + PoolType: 0 + } + + SuperaMCParticleCluster: { + OutputLabel: "pcluster" + LArMCParticleProducer: "simplemerge" + LArMCShowerProducer: "mcreco" + LArMCTrackProducer: "mcreco" + #LArMCMiniPartProducer: #"largeant" + DeltaSize: 10 + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + Meta3DFromCluster3D: "mcst" + Meta2DFromTensor2D: "" + Verbosity: 2 + UseSimEnergyDeposit: false #true + UseSimEnergyDepositLite: false #true + UseSimEnergyDepositPoints: false #true + UseOrigTrackID: true + CryostatList: [0,0,0,0,1,1,1,1] + TPCList: [0,1,2,3,0,1,2,3] + PlaneList: [] + #SemanticPriority: [2,1,0,3,4] # 0-4 for shower track michel delta LE-scattering + SemanticPriority: [1,2,0,3,4] # 0-4 for shower track michel delta LE-scattering + CheckParticleValidity: false #set false, but this needs to be checked later + + SuperaTrue2RecoVoxel3D: { + DebugMode: false + Verbosity: 2 + Meta3DFromCluster3D: "pcluster" + #LArSimChProducer: "largeant" + LArSimChProducer: "merge" + LArSpacePointProducers: ["cluster3DCryoE","cluster3DCryoW"] + TwofoldMatching: true + UseTruePosition: true + HitThresholdNe: 100 + HitWindowTicks: 15 #5 + HitWindowNSigma: 3 + HitPeakFinding: false + PostAveraging: true + PostAveragingThreshold_cm: 0.425 + DumpToCSV: false + RecoChargeRange: [-1000,50000] + VoxelDistanceThreshold: 3. + UseOrigTrackID: true + } + } + + MultiPartVrtx: { + Verbosity: 2 + #LArMCTruthProducer: "generator" + MCTruthProducers: ["generator","cosmgen"] + OutParticleLabel: "mpv" + Origin: 0 + } + + SuperaBBoxInteraction: { + Verbosity: 2 + LArMCTruthProducer: "generator" + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + UseSEDLite: true + Origin: 0 + Cluster3DLabels: ["mcst","pcluster","sed","masked_true2reco"] + Tensor3DLabels: ["reco_cryoE","reco_cryoW","pcluster_index","masked_true"] + #BBoxSize: [230.4,230.4,230.4] + BBoxSize: [1843.2,1843.2,1843.2] # Covers the whole detector with the smallest possible cube -> yields 6144 = 1024*6 px + #BBoxBottom: [-460.8,-230.4,-921.6] + #BBoxSize: [1789.902,1789.902,1789.902] + #BBoxBottom: [-358.49,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml + #BBoxBottom: [-412.788,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml taking readout window into account + # 358.49+340*1.6/10 = 412.89 + BBoxBottom: [-412.89,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml taking readout window into account + UseFixedBBox: true + VoxelSize: [0.3,0.3,0.3] + CryostatList: [0,0,0,0,1,1,1,1] + TPCList: [0,1,2,3,0,1,2,3] + } + + SuperaSimEnergyDeposit: { + Verbosity: 2 + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + LArMCShowerProducer: "mcreco" + UseSEDLite: true + ParticleProducer: "pcluster" + OutCluster3DLabel: "sed" + StoreLength: false + StoreCharge: false + StorePhoton: false + StoreDiffTime: false + StoreAbsTime: true + StoreDEDX: false + TPCList: [0,1,2,3,0,1,2,3] + CryostatList: [0,0,0,0,1,1,1,1] + } + + ParticleCorrector: { + Verbosity: 2 + Cluster3DProducer: "pcluster_highE" + ParticleProducer: "pcluster" + OutputProducer: "corrected" + VoxelMinValue: -1000 + } + + + Tensor3DFromCluster3D: { + Verbosity: 2 + Cluster3DProducerList: ["pcluster","sed"] + OutputProducerList: ["pcluster","sed"] + PITypeList: [1,1] + FixedPIList: [0.,0.] + } + + SuperaSpacePointCryoE: { + Verbosity: 2 + SpacePointProducers: ["cluster3DCryoE"] + OutputLabel: "reco_cryoE" + DropOutput: ["hit_amp","hit_time","hit_rms","hit_mult","nhits","occupancy"] + StoreWireInfo: true + RecoChargeRange: [-1000, 50000] + } + + SuperaSpacePointCryoW: { + Verbosity: 2 + SpacePointProducers: ["cluster3DCryoW"] + OutputLabel: "reco_cryoW" + DropOutput: ["hit_amp","hit_time","hit_rms","hit_mult","nhits","occupancy"] + StoreWireInfo: true + RecoChargeRange: [-1000, 50000] + } + + } +} + From b5c77b069fcc2f314597924b93f302c99b80e34e Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 12 Aug 2025 10:18:26 -0500 Subject: [PATCH 2/3] Add in overlay supera config with correct CRT label. --- .../Definitions/enable_overlay_stage1.fcl | 3 + ...era_icarus_MC_all_cryo_PMT_CRT_overlay.fcl | 199 ++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl diff --git a/fcl/reco/Definitions/enable_overlay_stage1.fcl b/fcl/reco/Definitions/enable_overlay_stage1.fcl index 71707c38e..27ae256b5 100644 --- a/fcl/reco/Definitions/enable_overlay_stage1.fcl +++ b/fcl/reco/Definitions/enable_overlay_stage1.fcl @@ -12,3 +12,6 @@ physics.producers.crttrack.DataLabelHits: "overlayCRTHit" # overlay PMT waveforms physics.analyzers.simpleLightAna.OpDetWaveformLabels: ["overlayOpWaveforms"] + +# Set Supera config +icarus_stage1_analyzers.superaMC.supera_params: "supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl" diff --git a/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl b/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl new file mode 100644 index 000000000..c04bb22a5 --- /dev/null +++ b/fcl/supera/supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl @@ -0,0 +1,199 @@ +ProcessDriver: { + + Verbosity: 2 + EnableFilter: true + RandomAccess: false + ProcessType: ["SuperaMCTruth","SuperaBBoxInteraction","SuperaMCParticleCluster","SuperaSimEnergyDeposit","SuperaSpacePoint","SuperaSpacePoint","Tensor3DFromCluster3D","CombineTensor3D","ThresholdTensor3D","CombineTensor3D","ParticleCorrector","EmptyTensorFilter","RescaleChargeTensor3D","RescaleChargeTensor3D","SuperaOptical","SuperaCRT"] + ProcessName: ["MultiPartVrtx","SuperaBBoxInteraction","SuperaMCParticleCluster","SuperaSimEnergyDeposit","SuperaSpacePointCryoE","SuperaSpacePointCryoW","Tensor3DFromCluster3D","CombineTensor3DGhost","ThresholdTensor3D","CombineTensor3D","ParticleCorrector","EmptyTensorFilter","RescaleChargeTensor3DCryoE","RescaleChargeTensor3DCryoW","SuperaOptical","SuperaCRT"] + + IOManager: { + Verbosity: 2 + Name: "IOManager" + IOMode: 1 + OutFileName: "out_test.root" + InputFiles: [] + InputDirs: [] + StoreOnlyType: [] + StoreOnlyName: [] + } + + ProcessList: { + SuperaCRT: { + CRTHitProducers: ["overlayCRTHit"] + CRTHitOutputs: ["overlayCRTHit"] + } + + SuperaOptical: { + OpFlashProducers: ["opflashCryoE","opflashCryoW"] + OpFlashOutputs: ["cryoE","cryoW"] + } + + EmptyTensorFilter: { + Tensor3DProducerList: ["pcluster_semantics_ghost"] + MinVoxel3DCountList: [1] + } + + RescaleChargeTensor3DCryoE: { + HitKeyProducerList: ["reco_cryoE_hit_key0","reco_cryoE_hit_key1","reco_cryoE_hit_key2"] + HitChargeProducerList: ["reco_cryoE_hit_charge0","reco_cryoE_hit_charge1","reco_cryoE_hit_charge2"] + OutputProducer: "reco_cryoE_rescaled" + ReferenceProducer: "pcluster" + } + + RescaleChargeTensor3DCryoW: { + HitKeyProducerList: ["reco_cryoW_hit_key0","reco_cryoW_hit_key1","reco_cryoW_hit_key2"] + HitChargeProducerList: ["reco_cryoW_hit_charge0","reco_cryoW_hit_charge1","reco_cryoW_hit_charge2"] + OutputProducer: "reco_cryoW_rescaled" + ReferenceProducer: "pcluster" + } + + ThresholdTensor3D: { # fill with ghost value (5) + TargetProducer: "pcluster_semantics_ghost" + OutputProducer: "pcluster_semantics_ghost" + PaintValue: 5 + } + + CombineTensor3DGhost: { # Combine voxels of cryoE and cryoW + OutputProducer: "pcluster_semantics_ghost" + Tensor3DProducers: ["reco_cryoE","reco_cryoW"] + PoolType: 0 + } + + CombineTensor3D: { + Tensor3DProducers: ["pcluster_semantics_ghost","pcluster_semantics"] + OutputProducer: "pcluster_semantics_ghost" + PoolType: 0 + } + + SuperaMCParticleCluster: { + OutputLabel: "pcluster" + LArMCParticleProducer: "simplemerge" + LArMCShowerProducer: "mcreco" + LArMCTrackProducer: "mcreco" + #LArMCMiniPartProducer: #"largeant" + DeltaSize: 10 + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + Meta3DFromCluster3D: "mcst" + Meta2DFromTensor2D: "" + Verbosity: 2 + UseSimEnergyDeposit: false #true + UseSimEnergyDepositLite: false #true + UseSimEnergyDepositPoints: false #true + UseOrigTrackID: true + CryostatList: [0,0,0,0,1,1,1,1] + TPCList: [0,1,2,3,0,1,2,3] + PlaneList: [] + #SemanticPriority: [2,1,0,3,4] # 0-4 for shower track michel delta LE-scattering + SemanticPriority: [1,2,0,3,4] # 0-4 for shower track michel delta LE-scattering + CheckParticleValidity: false #set false, but this needs to be checked later + + SuperaTrue2RecoVoxel3D: { + DebugMode: false + Verbosity: 2 + Meta3DFromCluster3D: "pcluster" + #LArSimChProducer: "largeant" + LArSimChProducer: "merge" + LArSpacePointProducers: ["cluster3DCryoE","cluster3DCryoW"] + TwofoldMatching: true + UseTruePosition: true + HitThresholdNe: 100 + HitWindowTicks: 15 #5 + HitWindowNSigma: 3 + HitPeakFinding: false + PostAveraging: true + PostAveragingThreshold_cm: 0.425 + DumpToCSV: false + RecoChargeRange: [-1000,50000] + VoxelDistanceThreshold: 3. + UseOrigTrackID: true + } + } + + MultiPartVrtx: { + Verbosity: 2 + #LArMCTruthProducer: "generator" + MCTruthProducers: ["generator","cosmgen"] + OutParticleLabel: "mpv" + Origin: 0 + } + + SuperaBBoxInteraction: { + Verbosity: 2 + LArMCTruthProducer: "generator" + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + UseSEDLite: true + Origin: 0 + Cluster3DLabels: ["mcst","pcluster","sed","masked_true2reco"] + Tensor3DLabels: ["reco_cryoE","reco_cryoW","pcluster_index","masked_true"] + #BBoxSize: [230.4,230.4,230.4] + BBoxSize: [1843.2,1843.2,1843.2] # Covers the whole detector with the smallest possible cube -> yields 6144 = 1024*6 px + #BBoxBottom: [-460.8,-230.4,-921.6] + #BBoxSize: [1789.902,1789.902,1789.902] + #BBoxBottom: [-358.49,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml + #BBoxBottom: [-412.788,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml taking readout window into account + # 358.49+340*1.6/10 = 412.89 + BBoxBottom: [-412.89,-181.86,-894.951] # geometry from icarus_complete_20210527_no_overburden.gdml taking readout window into account + UseFixedBBox: true + VoxelSize: [0.3,0.3,0.3] + CryostatList: [0,0,0,0,1,1,1,1] + TPCList: [0,1,2,3,0,1,2,3] + } + + SuperaSimEnergyDeposit: { + Verbosity: 2 + #LArSimEnergyDepositProducer: "largeant TPCActive" + LArSimEnergyDepositLiteProducer: "filtersed" + LArMCShowerProducer: "mcreco" + UseSEDLite: true + ParticleProducer: "pcluster" + OutCluster3DLabel: "sed" + StoreLength: false + StoreCharge: false + StorePhoton: false + StoreDiffTime: false + StoreAbsTime: true + StoreDEDX: false + TPCList: [0,1,2,3,0,1,2,3] + CryostatList: [0,0,0,0,1,1,1,1] + } + + ParticleCorrector: { + Verbosity: 2 + Cluster3DProducer: "pcluster_highE" + ParticleProducer: "pcluster" + OutputProducer: "corrected" + VoxelMinValue: -1000 + } + + + Tensor3DFromCluster3D: { + Verbosity: 2 + Cluster3DProducerList: ["pcluster","sed"] + OutputProducerList: ["pcluster","sed"] + PITypeList: [1,1] + FixedPIList: [0.,0.] + } + + SuperaSpacePointCryoE: { + Verbosity: 2 + SpacePointProducers: ["cluster3DCryoE"] + OutputLabel: "reco_cryoE" + DropOutput: ["hit_amp","hit_time","hit_rms","hit_mult","nhits","occupancy"] + StoreWireInfo: true + RecoChargeRange: [-1000, 50000] + } + + SuperaSpacePointCryoW: { + Verbosity: 2 + SpacePointProducers: ["cluster3DCryoW"] + OutputLabel: "reco_cryoW" + DropOutput: ["hit_amp","hit_time","hit_rms","hit_mult","nhits","occupancy"] + StoreWireInfo: true + RecoChargeRange: [-1000, 50000] + } + + } +} + From 9fc493dff91492696cad5ac99afc20e5f0afa996 Mon Sep 17 00:00:00 2001 From: Gray Putnam Date: Tue, 12 Aug 2025 10:47:21 -0500 Subject: [PATCH 3/3] Set overload path correctly... --- fcl/reco/Definitions/enable_overlay_stage1.fcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fcl/reco/Definitions/enable_overlay_stage1.fcl b/fcl/reco/Definitions/enable_overlay_stage1.fcl index 27ae256b5..68715ee7c 100644 --- a/fcl/reco/Definitions/enable_overlay_stage1.fcl +++ b/fcl/reco/Definitions/enable_overlay_stage1.fcl @@ -14,4 +14,4 @@ physics.producers.crttrack.DataLabelHits: "overlayCRTHit" physics.analyzers.simpleLightAna.OpDetWaveformLabels: ["overlayOpWaveforms"] # Set Supera config -icarus_stage1_analyzers.superaMC.supera_params: "supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl" +physics.analyzers.superaMC.supera_params: "supera_icarus_MC_all_cryo_PMT_CRT_overlay.fcl"