Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
aa0e95a
Reorganize standard fcls. Update to new MC path. Add in overlay path.
gputnam May 16, 2025
d45b9f5
Fhicl file to convert ChannelROIs back into Wires
gputnam May 16, 2025
cb50ecb
Fix input label for MC stage0.
gputnam May 16, 2025
1339362
Get non-YZ detsim configs working. Add in overlay option to non-YZ sim.
gputnam May 17, 2025
8d5d447
Tune sim-reco timing offsets to 2D deconv.
gputnam May 17, 2025
a75c82e
Fix ophit label.
gputnam May 20, 2025
5f4c23e
Add partial fcls back into icaruscode
gputnam May 21, 2025
e73e676
Reorganize standard fcls. Update to new MC path. Add in overlay path.
gputnam May 16, 2025
4729a40
Fhicl file to convert ChannelROIs back into Wires
gputnam May 16, 2025
b3946e9
Fix input label for MC stage0.
gputnam May 16, 2025
8d76950
Get non-YZ detsim configs working. Add in overlay option to non-YZ sim.
gputnam May 17, 2025
eb123e6
Tune sim-reco timing offsets to 2D deconv.
gputnam May 17, 2025
4cad74f
Fix ophit label.
gputnam May 20, 2025
1e245e8
Add partial fcls back into icaruscode
gputnam May 21, 2025
4f5f72c
Prune simChannelROI from 1D SP fcl.
gputnam May 30, 2025
f37a12f
Fix database tags.
gputnam May 30, 2025
5d3a59e
Merge branch 'release/Mar25Production-build' into release/MC25Production
gputnam May 30, 2025
41ff587
Simple detsim jsonnet bugfix.
gputnam May 30, 2025
59f69c4
Remove mcreco from CAF stage.
gputnam Jun 1, 2025
73cc510
Stage1+CAF configs for non-YZ detsim.
gputnam Jun 1, 2025
32c965f
Ignore mcreco logging.
gputnam Jun 1, 2025
fc72220
Merge branch 'develop' into release/MC25Production
gputnam Jun 1, 2025
9fd7afb
Correctly disable mcreco logging.
gputnam Jun 4, 2025
c3f0a8f
Fix ctoffset to match RawDigit/Deconvolved collection hit time.
gputnam Jun 18, 2025
99234c3
Update overlay reco to use same calibrations as data reco.
gputnam Jul 31, 2025
c04a691
Update calibrations for 2D+DNN signal processing for Run 2.
gputnam Jul 31, 2025
ef8076e
Update reco1 processing chain. Pandora gets hits with 'long hits', co…
gputnam Jul 31, 2025
2f30b6c
Tune transverse diffusion constant.
gputnam Jul 31, 2025
77f4d33
Tune MC gain and sim-reco timing offsets.
gputnam Jul 31, 2025
87f3e5b
Fix stage0 mc no trigger simulation fcl file.
gputnam Jul 31, 2025
e0a5831
Disable pusle trains.
gputnam Jun 17, 2025
c6fcff6
Update to new YZ gain map.
gputnam Aug 1, 2025
279266f
Revert "Tune transverse diffusion constant."
gputnam Aug 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions fcl/caf/cafmaker_add_detsim2d_icarus.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ physics.producers.cafmaker.SimChannelLabel: "merge" # 2D, YZ sim
# SimChannel's get re-made by 2D drift simulation -- use these to backtrack
services.BackTrackerService.BackTracker.SimChannelModuleLabel: "merge"

# MCReco also needs correct SimChannels
# need to use new config names to make MCParticle/SimChannel labels different
physics.producers.mcreco.G4ModName: @erase
physics.producers.mcreco.MCParticleLabel: "largeant"
physics.producers.mcreco.SimChannelLabel: "merge"

# Mini production, pre signal shape tuning
# this_cal_constants: [1.343e-2, 1.338e-2, 0.01227]
# Post signal shape tuning, post gain fixing
Expand Down
4 changes: 4 additions & 0 deletions fcl/caf/cafmaker_add_overlay_icarus.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
services.BackTrackerService.BackTracker.OverrideRealData: true
services.ParticleInventoryService.ParticleInventory.OverrideRealData: true

physics.producers.cafmaker.OverrideRealData: true
7 changes: 2 additions & 5 deletions fcl/caf/cafmaker_defs.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include "eventweight_genie_sbn.fcl"
#include "eventweight_genie_systtools.fcl"
#include "eventweight_flux_sbn.fcl"
#include "mcreco.fcl"
#include "mcsproducer.fcl"
#include "rangeproducer.fcl"
#include "flashmatch_simple_icarus.fcl"
Expand Down Expand Up @@ -87,8 +86,6 @@ recoana_datacalo_producers.vertexStubCryoW.NormTools: @local::icarus_calonormtoo

# Producers for making analysis level products
recoana_caf_preprocess_producers: {
mcreco: @local::standard_mcreco

pandoraTrackMCSCryoE: @local::mcs_sbn
pandoraTrackMCSCryoW: @local::mcs_sbn

Expand Down Expand Up @@ -228,7 +225,7 @@ caf_preprocess_sce_producers: {
}

# Sequences
caf_preprocess_sequence: [ mcreco,
caf_preprocess_sequence: [
# Calorimetry
pandoraCaloGausCryoE, pandoraCaloGausCryoW,
pandoraPidGausCryoE, pandoraPidGausCryoW,
Expand Down Expand Up @@ -258,7 +255,7 @@ caf_preprocess_data_sequence: [

caf_preprocess_evtw_sequence: [@sequence::caf_preprocess_sequence, rns, genieweight, fluxweight]

caf_preprocess_sce_sequence: [ mcreco,
caf_preprocess_sce_sequence: [
# Run the SCE correction
pandoraGausSCECryoE, pandoraGausSCECryoW,
# Then remake tracks
Expand Down
9 changes: 5 additions & 4 deletions fcl/caf/cafmakerjob_icarus_detsim2d_overlay.fcl
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#include "cafmakerjob_icarus.fcl"
#include "cafmaker_add_detsim2d_icarus.fcl"

services.BackTrackerService.BackTracker.OverrideRealData: true
services.ParticleInventoryService.ParticleInventory.OverrideRealData: true
# overwrite the producers to use data versions
physics.producers: @local::caf_preprocess_data_producers
physics.runprod: [ @sequence::caf_preprocess_data_sequence, cafmaker]

physics.producers.cafmaker.OverrideRealData: true
#include "cafmaker_add_detsim2d_icarus.fcl"
#include "cafmaker_add_overlay_icarus.fcl"
4 changes: 4 additions & 0 deletions fcl/caf/cafmakerjob_icarus_detsim2d_overlay_simpledet.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "cafmakerjob_icarus_detsim2d_overlay.fcl"

physics.producers.cafmaker.SimChannelLabel: "daq:simpleSC"
services.BackTrackerService.BackTracker.SimChannelModuleLabel: "daq:simpleSC"
4 changes: 4 additions & 0 deletions fcl/caf/cafmakerjob_icarus_detsim2d_simpledet.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include "cafmakerjob_icarus_detsim2d.fcl"

physics.producers.cafmaker.SimChannelLabel: "daq:simpleSC"
services.BackTrackerService.BackTracker.SimChannelModuleLabel: "daq:simpleSC"
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#include "cafmakerjob_icarus_detsim2d_systtools_and_fluxwgt.fcl"

services.BackTrackerService.BackTracker.OverrideRealData: true
services.ParticleInventoryService.ParticleInventory.OverrideRealData: true
physics.producers.cafmaker.OverrideRealData: true
# overwrite the producers to use data versions
physics.producers: @local::caf_preprocess_data_producers
physics.runprod: [ @sequence::caf_preprocess_data_sequence, rns, systtools, fluxweight, cafmaker]

physics.producers.cafmaker.SystWeightLabels: ["systtools", "fluxweight"]


#include "cafmaker_add_overlay_icarus.fcl"
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
BEGIN_PROLOG

ICARUS_Calibration_GlobalTags: {
@table::TPC_CalibrationTags_Jan2025
@table::TPC_CalibrationTags_Jul2025
@table::PMT_CalibrationTags_Run3_Feb2025
@table::CRT_CalibrationTags_Oct2023
}
Expand Down
16 changes: 14 additions & 2 deletions fcl/configurations/calibration_database_TPC_TagSets_icarus.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,33 @@ TPC_CalibrationTags_Oct2023: {
## - Files decoded with release >=v09_66_02 should use v3r2
TPC_CalibrationTags_Feb2024: {

tpc_channelstatus_data: "v3r4"
tpc_channelstatus_data: "v3r2"
tpc_elifetime_data: "v2r1"
tpc_dqdxcalibration_data: "v2r1"
tpc_yz_correction_data: "v2r1"

}

## TPC_CalibrationTags_Feb2024 but updating tpc_yz_correction_data to tpc_yz_correction_allplanes_data
## Update to mask out additional bad noisy channels
TPC_CalibrationTags_Jan2025: {

tpc_channelstatus_data: "v3r2"
tpc_channelstatus_data: "v3r4"
tpc_elifetime_data: "v2r1"
tpc_dqdxcalibration_data: "v2r1"
tpc_yz_correction_allplanes_data: "v1r0"

}

## TPC_CalibrationTags_Jul2024
# Update to 2D deconv tags. Change TPC equalization to be per-plane
TPC_CalibrationTags_Jul2025: {

tpc_channelstatus_data: "v3r4"
tpc_elifetime_data: "v3r0"
tpc_dqdxcalibration_allplanes_data: "v1r0"
tpc_yz_correction_allplanes_data: "v2r0"

}

END_PROLOG
2 changes: 1 addition & 1 deletion fcl/detsim/detsim_2d_icarus_refactored.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ physics: {

crtdaq: @local::icarus_crtsim
opdaq: @local::icarus_simpmt
daq: @local::icarus_simwire_wirecell_filtersed
daq: @local::icarus_simwire_wirecell_shifted

rns: { module_type: "RandomNumberSaver" }
} # producers
Expand Down
3 changes: 3 additions & 0 deletions fcl/detsim/detsim_2d_icarus_refactored_overlay.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include "detsim_2d_icarus_refactored.fcl"

physics.producers.daq: @local::icarus_simwire_wirecell_shifted_overlay
1 change: 1 addition & 0 deletions fcl/reco/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ add_subdirectory(ForCITests)
#add_subdirectory(archive)
add_subdirectory(Definitions)
add_subdirectory(larcv)
add_subdirectory(wires)
add_subdirectory(ntuple)
add_subdirectory(Stage0)
add_subdirectory(Stage1)
Expand Down
37 changes: 31 additions & 6 deletions fcl/reco/Definitions/stage1_icarus_defs.fcl
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ icarus_stage1_producers:
cluster3DCryoW: @local::icarus_cluster3d
cluster3DCryoE: @local::icarus_cluster3d

### Hit combiner
combineHitsCryoE: @local::icarus_hitmerger_cryoE
combineHitsCryoW: @local::icarus_hitmerger_cryoW

### pandora
pandoraGausCryoW: @local::icarus_pandora
pandoraTrackGausCryoW: @local::icarus_pandoraTrackCreation
Expand Down Expand Up @@ -192,11 +196,17 @@ icarus_WestHits_TPC: [ gaushit1dTPCWW,
gaushit1dTPCWE
]
icarus_EastHits2d_TPC: [ gaushit2dTPCEW,
gaushit2dTPCEE
gaushit2dTPCEE,
combineHitsCryoE,
gaushitPT2dTPCEW,
gaushitPT2dTPCEE
]

icarus_WestHits2d_TPC: [ gaushit2dTPCWW,
gaushit2dTPCWE
gaushit2dTPCWE,
combineHitsCryoW,
gaushitPT2dTPCWW,
gaushitPT2dTPCWE
]

# Set up filtering of cluster3D hits by cryostat
Expand Down Expand Up @@ -314,6 +324,16 @@ icarus_stage1_producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane1.RoiT
icarus_stage1_producers.gaushit2dTPCWW.HitFinderToolVec.CandidateHitsPlane2.RoiThreshold: 5.
icarus_stage1_producers.gaushit2dTPCWW.HitFilterAlg.MinPulseHeight: [3., 3., 3.]

# Setup version of hit finder's with Pulse Trains ("PT"s) enabled
icarus_stage1_producers.gaushitPT2dTPCEE: @local::icarus_stage1_producers.gaushit2dTPCEE
icarus_stage1_producers.gaushitPT2dTPCEE.LongMaxHits: [25, 25, 25]
icarus_stage1_producers.gaushitPT2dTPCEW: @local::icarus_stage1_producers.gaushit2dTPCEW
icarus_stage1_producers.gaushitPT2dTPCEW.LongMaxHits: [25, 25, 25]
icarus_stage1_producers.gaushitPT2dTPCWE: @local::icarus_stage1_producers.gaushit2dTPCWE
icarus_stage1_producers.gaushitPT2dTPCWE.LongMaxHits: [25, 25, 25]
icarus_stage1_producers.gaushitPT2dTPCWW: @local::icarus_stage1_producers.gaushit2dTPCWW
icarus_stage1_producers.gaushitPT2dTPCWW.LongMaxHits: [25, 25, 25]

## Overrides for filtering of cluster3D hits
icarus_stage1_filters.TPCHitFilterCryoW.HitDataLabelVec: ["cluster3DCryoW"]
icarus_stage1_filters.TPCHitFilterCryoW.MaximumHits: 60000
Expand All @@ -323,29 +343,34 @@ icarus_stage1_filters.TPCHitFilterCryoE.MaximumHits: 60000

## Definitions for running the 3D clustering by Cryostat
icarus_stage1_producers.cluster3DCryoW.MakeSpacePointsOnly: true
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.HitFinderTagVec: ["gaushit2dTPCWW", "gaushit2dTPCWE"]
# use the "PT" (pulse train) hits as input to cluster3D
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.HitFinderTagVec: ["gaushitPT2dTPCWW", "gaushitPT2dTPCWE"]
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.PulseHeightFraction: 0. #0.75 #0.25
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.PHLowSelection: 0. #4.0 # 20.
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.MaxHitChiSquare: 1000000.
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.MaxMythicalChiSquare: 30.
icarus_stage1_producers.cluster3DCryoW.Hit3DBuilderAlg.OutputHistograms: false

icarus_stage1_producers.cluster3DCryoE.MakeSpacePointsOnly: true
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.HitFinderTagVec: ["gaushit2dTPCEW", "gaushit2dTPCEE"]
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.HitFinderTagVec: ["gaushitPT2dTPCEW", "gaushitPT2dTPCEE"]
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.PulseHeightFraction: 0. #0.75 #0.25
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.PHLowSelection: 0. #4.0 # 20.
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.MaxHitChiSquare: 1000000.
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.MaxMythicalChiSquare: 30.
icarus_stage1_producers.cluster3DCryoE.Hit3DBuilderAlg.OutputHistograms: false

### Definitions for a pandora by cryostat
icarus_stage1_producers.pandoraGausCryoW.HitFinderModuleLabel: "cluster3DCryoW"
icarus_stage1_producers.pandoraGausCryoW.HitFinderModuleLabel: "combineHitsCryoW"
# icarus_stage1_producers.pandoraGausCryoW.HitFinderModuleLabel: ""
# icarus_stage1_producers.pandoraGausCryoW.HitCollectionTool.OverrhideHitLabels: ["gaushit2dTPCWW", "gaushit2dTPCWE"]
icarus_stage1_producers.pandoraTrackGausCryoW.PFParticleLabel: "pandoraGausCryoW"
icarus_stage1_producers.pandoraTrackGausCryoW.UseAllParticles: true
icarus_stage1_producers.pandoraKalmanTrackGausCryoW.inputCollection: "pandoraGausCryoW"
icarus_stage1_producers.pandoraKalmanTrackGausCryoW.trackInputTag: "pandoraTrackGausCryoW"

icarus_stage1_producers.pandoraGausCryoE.HitFinderModuleLabel: "cluster3DCryoE"
icarus_stage1_producers.pandoraGausCryoE.HitFinderModuleLabel: "combineHitsCryoE"
# icarus_stage1_producers.pandoraGausCryoE.HitFinderModuleLabel: ""
# icarus_stage1_producers.pandoraGausCryoE.HitCollectionTool.OverrhideHitLabels: ["gaushit2dTPCEW", "gaushit2dTPCEE"]
icarus_stage1_producers.pandoraTrackGausCryoE.PFParticleLabel: "pandoraGausCryoE"
icarus_stage1_producers.pandoraTrackGausCryoE.UseAllParticles: true
icarus_stage1_producers.pandoraKalmanTrackGausCryoE.inputCollection: "pandoraGausCryoE"
Expand Down
2 changes: 2 additions & 0 deletions fcl/reco/Stage0/data/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
add_subdirectory(partial)

cet_enable_asserts()

install_fhicl()
1 change: 1 addition & 0 deletions fcl/reco/Stage0/data/partial/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
install_fhicl()
145 changes: 145 additions & 0 deletions fcl/reco/Stage0/data/partial/decodePMT_icarus.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
#
# File: decodePMT_icarus.fcl
# Purpose: PMT readout fragment decoding for studies in ICARUS.
# Author: Gianluca Petrillo (petrillo@slac.stanford.edu)
# Date: May 12, 2021
#
#
# PMT waveform decoding is performed, extensive debugging messages are
# included in the `debug.log` log file, and ROOT trees are produced for studies.
# This configuration, as is, is not meant for production.
#
#
# Input
# ------
#
# * artDAQ fragments from all 24 PMT readout boards, named
# `daq:ContainerCAENV1730`
# * trigger fragment `daq:ICARUSTriggerUDP` (will be decoded as well)
# * DAQ configuration as FHiCL in the art/ROOT input file
#
# This configuration requires a data fragment for each PMT readout board
# which is mentioned in `physics.producers.daqPMT.DecoderTool.BoardSetup`,
# which by default is all 24. If the input run misses some PMT readout boards,
# use `decodePMT_icarus_incomplete.fcl` instead.
#
#
# Output
# -------
#
# Only new data products are written in the art/ROOT output file, including:
#
# * `daqPMT` (std::vector<raw::OpDetWaveform>): decoded waveforms,
# with our best reconstruction for their time stamps in LArSoft reference
#
#
# The `Trees-<InputFile>*.root` file (from `TFileService`) includes ROOT tree
# `PMTfragments`.
#
#
#
# Service configuration
# ----------------------
#
# * `DetectorClocksService` is essential to assign a correct waveform timestamp
# * `Geometry` service bundle is required by `DetectorClocksService`
# * `IICARUSChannelMap` to relate PMT fragment IDs to channels
# * `TFileService` used to write trees (not needed if all trees are disabled)
#
#


# ------------------------------------------------------------------------------
#include "services_common_icarus.fcl"
#include "channelmapping_icarus.fcl"
#include "timing_icarus.fcl"

#include "rootoutput_icarus.fcl"
#include "decoderdefs_icarus.fcl"

# ------------------------------------------------------------------------------
process_name: DecodePMT


# ------------------------------------------------------------------------------
services: {

@table::icarus_art_services
message: @local::icarus_message_services_interactive_debug

@table::icarus_geometry_services
DetectorClocksService: @local::icarus_detectorclocks
IICARUSChannelMap: @local::icarus_channelmappinggservice
IPMTTimingCorrectionService: @local::icarus_pmttimingservice

TFileService: { fileName: "Trees-%ifb_%tc-%p.root" }
}


# ------------------------------------------------------------------------------
physics: {

producers: {

triggerconfig: @local::extractTriggerConfig
pmtconfig: @local::extractPMTconfig

daqTrigger: @local::decodeTriggerAutodetect

daqPMT: @local::decodePMT

}

decoding: [ triggerconfig, pmtconfig, daqTrigger, daqPMT ]
streams: [ rootoutput ]
}


# ------------------------------------------------------------------------------
outputs: {
rootoutput: {
@table::icarus_rootoutput
dataTier: "decoded"
fileProperties: { maxInputFiles: 1 }
checkFileName: false
compressionLevel: 501

outputCommands: [ "drop *_*_*_*", "keep *_*_*_DecodePMT" ]
} # rootoutput
} # outputs


# ------------------------------------------------------------------------------

physics.producers.daqTrigger.DecoderTool.Decoders[0].ToolConfig.TrigConfigLabel: triggerconfig
physics.producers.daqTrigger.DecoderTool.Decoders[1].ToolConfig.TrigConfigLabel: triggerconfig
physics.producers.daqTrigger.DecoderTool.Decoders[2].ToolConfig.TrigConfigLabel: triggerconfig
physics.producers.daqPMT.PMTconfigTag: pmtconfig # required
physics.producers.daqPMT.TriggerTag: daqTrigger # required

# services.Geometry.Name: icarus_splitwires # for runs < 548x

#
# customization of PMT decoding
#

physics.producers.daqPMT.SurviveExceptions: false
physics.producers.daqPMT.DiagnosticOutput: true
physics.producers.daqPMT.PacketDump: false
physics.producers.daqPMT.RequireKnownBoards: true
physics.producers.daqPMT.RequireBoardConfig: true
physics.producers.daqPMT.DataTrees: [ "PMTfragments" ]

#
# customization of trigger decoding
#

physics.producers.daqTrigger.DecoderTool.Decoders[0].ToolConfig.DiagnosticOutput: true
physics.producers.daqTrigger.DecoderTool.Decoders[1].ToolConfig.DiagnosticOutput: true
physics.producers.daqTrigger.DecoderTool.Decoders[2].ToolConfig.DiagnosticOutput: true
physics.producers.daqTrigger.DecoderTool.Decoders[0].ToolConfig.Debug: false
physics.producers.daqTrigger.DecoderTool.Decoders[1].ToolConfig.Debug: false
physics.producers.daqTrigger.DecoderTool.Decoders[2].ToolConfig.Debug: false


# ------------------------------------------------------------------------------
Loading