Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions fcl/detsim/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# add underlying subfolders
add_subdirectory(SBNNov17)
add_subdirectory(SBNMar18)
add_subdirectory(SBNNoise)

# Install fcl files in /job subdirectory.
install_fhicl()
Expand Down
8 changes: 8 additions & 0 deletions fcl/detsim/SBNNoise/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Install fcl files in /job subdirectory.

install_fhicl()

# Also put a copy in the source tree.

FILE(GLOB fcl_files *.fcl)
install_source( EXTRAS ${fcl_files} )
90 changes: 90 additions & 0 deletions fcl/detsim/SBNNoise/multitpc_detsim_icarus_sbnnoise.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#include "services_icarus_simulation.fcl"
#include "detsimmodules_ICARUS.fcl"
#include "opdetsim_pmt_icarus.fcl"
#include "crtsimmodules_icarus.fcl"

process_name: DetSim

services:
{
#FileCatalogMetadata: @local::art_file_catalog_mc
@table::icarus_detsim_services
}

#source is now a root file
source:
{
module_type: RootInput
saveMemoryObjectThreshold: 0
}

# Define and configure some modules to do work on each event.
# First modules are defined; they are scheduled later.
# Modules are grouped by type.
physics:
{

producers:
{
crtdaq: @local::icarus_crtsim
#opdaq: @local::icarus_simpmt
opdaq: @local::icarus_simpmt_nonoise #turn off the noise so it runs more quickly
daq0: @local::icarus_simwire
daq1: @local::icarus_simwire
daq2: @local::icarus_simwire
daq3: @local::icarus_simwire
rns: { module_type: "RandomNumberSaver" }
}

#define the producer and filter modules for this path, order matters,
#filters reject all following items. see lines starting physics.producers below
simulate: [ rns, opdaq, daq0, daq1, daq2, daq3, crtdaq ]

#define the output stream, there could be more than one if using filters
stream1: [ out1 ]

#trigger_paths is a keyword and contains the paths that modify the art::event,
#ie filters and producers
trigger_paths: [ simulate ]

#end_paths is a keyword and contains the paths that do not modify the art::Event,
#ie analyzers and output streams. these all run simultaneously
end_paths: [stream1]
}

#
# For MCC1.1 we are still suppressing channels with no signal in the TPC
physics.producers.daq0.SuppressNoSignal: true
physics.producers.daq0.Cryostat: 0
physics.producers.daq0.TPC: 0
physics.producers.daq1.SuppressNoSignal: true
physics.producers.daq1.Cryostat: 0
physics.producers.daq1.TPC: 1
physics.producers.daq2.SuppressNoSignal: true
physics.producers.daq2.Cryostat: 1
physics.producers.daq2.TPC: 0
physics.producers.daq3.SuppressNoSignal: true
physics.producers.daq3.Cryostat: 1
physics.producers.daq3.TPC: 1

physics.producers.daq0.NoiseGenToolVec: [@local::SBNNoiseToolInd1, @local::SBNNoiseToolInd2, @local::SBNNoiseToolColl]
physics.producers.daq1.NoiseGenToolVec: [@local::SBNNoiseToolInd1, @local::SBNNoiseToolInd2, @local::SBNNoiseToolColl]
physics.producers.daq2.NoiseGenToolVec: [@local::SBNNoiseToolInd1, @local::SBNNoiseToolInd2, @local::SBNNoiseToolColl]
physics.producers.daq3.NoiseGenToolVec: [@local::SBNNoiseToolInd1, @local::SBNNoiseToolInd2, @local::SBNNoiseToolColl]

#block to define where the output goes. if you defined a filter in the physics
#block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
#entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
outputs:
{
out1:
{
module_type: RootOutput
fileName: "%ifb_%tc-%p.root"
dataTier: "detector-simulated"
saveMemoryObjectThreshold: 0
compressionLevel: 1
fastCloning: false
}
}

103 changes: 103 additions & 0 deletions fcl/evd/evd_multitpc_icarus.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#include "evdservices_icarus.fcl"
#include "services_icarus.fcl"

process_name: EvdIcarus

services:
{
@table::icarus_disp
}


#Look at the input files
source:
{
module_type: RootInput
fileNames: [ "data.root" ]
maxEvents: -1 # Number of events to create
}

outputs:{}

# Define and configure some modules to do work on each event.
# First modules are defined; they are scheduled later.
# Modules are grouped by type.
physics:
{

producers: {}

filters:{}

analyzers:
{
evdisp:{module_type: EVD}
}

#list the modules for this path, order matters, filters reject all following items
evd: [ evdisp ]

#end_path are things that do not modify art::Event, includes analyzers
#and output modules. all items here can be run simultaneously
end_paths: [evd]
}
services.RawDrawingOptions.TotalTicks: 4100

# Some basic overrides to set up basic drawing

services.RawDrawingOptions.DrawRawDataOrCalibWires: 1 # set to zero for raw digits only
services.RawDrawingOptions.MinimumSignal: 10 # This sets the minimum ADC value to be displayed in 2D display
services.RecoDrawingOptions.DrawHits: 1 # This turns on the drawing of hits in the 2D display
services.RecoDrawingOptions.DrawPFParticles: 4 # Can be range of numbers, 4 is maximum options
services.RecoDrawingOptions.DrawClusters: 4 # draw with connecting lines & labels
services.RecoDrawingOptions.DrawTracks: 3 # Draws "tracks"
services.RecoDrawingOptions.DrawProngs: 3 # Draws "prongs" (which is really the same)
services.RecoDrawingOptions.DrawTrackTrajectoryPoints: 3 # Draws points associated to tracks
services.RecoDrawingOptions.Draw2DSlopeEndPoints: 1 # This draws cluster axis in 2D (but there is bug)
services.RecoDrawingOptions.DrawTrackSpacePoints: 3 # Draws space points
services.RecoDrawingOptions.DrawVertices: 3
services.RecoDrawingOptions.DrawSpacePoints: 3


# Set up the display of truth information
# For 2D display the information is not great
services.SimulationDrawingOptions.ShowMCTruthVectors: 0
services.SimulationDrawingOptions.ShowMCTruthTrajectories: true
services.SimulationDrawingOptions.MinimumEnergyDeposition: 0.0001 # in GeV

# The 3D display has better truth information
services.SimulationDrawingOptions.ShowSimChannelInfo: true
services.SimulationDrawingOptions.ShowSimEnergyInfo: false
services.SimulationDrawingOptions.ShowSimPhotonInfo: false

# Below sets up the 2D viwer to see RawDigit, Wire and Hit data for the multi TPC reconstruction work flow
# To view the "signgle" reconstruction work flow, replace the multiple names in the braces below with a single name:
# For RawDigits --> "rawdigitfilter"
# For Wire --> "decon1droi"
# For hits --> "cluster3d" (or "gaushit")
services.RawDrawingOptions.RawDataLabels: ["rawDigitFilterTPC0","rawDigitFilterTPC1","rawDigitFilterTPC2","rawDigitFilterTPC3"]
services.RecoDrawingOptions.WireModuleLabels: ["decon1DroiTPC0", "decon1DroiTPC1", "decon1DroiTPC2", "decon1DroiTPC3"]
services.RecoDrawingOptions.HitModuleLabels: ["cluster3DCryo0", "cluster3DCryo1"]

# Below sets up basic drawing of output from pandora (using gauss hits)
#
services.RecoDrawingOptions.ClusterModuleLabels: ["pandoraGausCryo0", "pandoraGausCryo1"]
services.RecoDrawingOptions.EndPoint2DModuleLabels: ["pandoraGausCryo0", "pandoraGausCryo1"]
services.RecoDrawingOptions.PFParticleModuleLabels: ["pandoraGausCryo0", "pandoraGausCryo1"]
services.RecoDrawingOptions.SpacePointModuleLabels: ["pandoraGausCryo0", "pandoraGausCryo1"]
services.RecoDrawingOptions.VertexModuleLabels: ["pandoraGausCryo0", "pandoraGausCryo1"]
services.RecoDrawingOptions.TrackModuleLabels: ["pandoraTrackGausCryo0", "pandoraTrackGausCryo1"]
services.RecoDrawingOptions.ProngModuleLabels: ["pandoraTrackGausCryo0", "pandoraTrackGausCryo1"]
services.RecoDrawingOptions.EdgeModuleLabels: []

# Set up the optical display for the 3D display
#
# Note there are both MC and reconstructed versions to look at, below includes names for switching
#
services.RecoDrawingOptions.DrawOpHits: 1
services.RecoDrawingOptions.OpHitModuleLabels: ["mcophit"] #["ophit"]
services.RecoDrawingOptions.DrawOpFlashes: 0
services.RecoDrawingOptions.OpFlashModuleLabels: ["opflashTPC0", "opflashTPC1", "opflashTPC2", "opflashTPC3"]
#services.RecoDrawingOptions.OpFlashModuleLabels: ["mcopflashTPC0", "mcopflashTPC1", "mcopflashTPC2", "mcopflashTPC3"]


71 changes: 71 additions & 0 deletions icaruscode/Analysis/ana_mods_icarus.fcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#include "analysis_icarus.fcl"
#include "reco_icarus_driver_common.fcl"

process_name: HitEfficiency

#Start each new event with an empty event.
source:
{
module_type: RootInput
maxEvents: 10 # Number of events to create
}

# Define and configure some modules to do work on each event.
# First modules are defined; they are scheduled later.
# Modules are grouped by type.
physics:
{
analyzers:
{
hitEffAnalysisGauss: @local::icarus_HitEfficiencyAnalysis
hitEffAnalysisCluster3d: @local::icarus_HitEfficiencyAnalysis
hitEffAnalysisRaw: @local::icarus_HitEfficiencyAnalysis
}

#define the producer and filter modules for this path, order matters,
#filters reject all following items. see lines starting physics.producers below
ana: [ hitEffAnalysisGauss, hitEffAnalysisCluster3d, hitEffAnalysisRaw ]
end_paths: [ana]
}

#block to define where the output goes. if you defined a filter in the physics
#block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
#entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
outputs:
{
out1:
{
module_type: RootOutput
fileName: "hitEfficiency_icarus.root"
dataTier: "reco-simulated"
compressionLevel: 1
fastCloning: false
}
}

physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].OffsetVec: [9, 4, 2]
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].RawDigitLabel: "rawdigitfilter"
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].WireModuleLabel: "recowireraw"
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].HitModuleLabel: "icarushit"
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].MCParticleLabel: "largeant"
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].SimChannelLabel: "largeant"
phsyics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].UseBadChannelDB: false

physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].RawDigitLabel: "rawdigitfilter"
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].WireModuleLabel: "recowire" #"decon1droi"
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].HitModuleLabel: "gaushit"
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].MCParticleLabel: "largeant"
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].SimChannelLabel: "largeant"
phsyics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].UseBadChannelDB: false

physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].RawDigitLabelVec: ["rawDigitFilterTPC0","rawDigitFilterTPC1","rawDigitFilterTPC2","rawDigitFilterTPC3"]
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].WireModuleLabelVec: ["decon1DroiTPC0","decon1DroiTPC1","decon1DroiTPC2","decon1DroiTPC3"]
physics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].HitModuleLabelVec: ["gaushitTPC0","gaushitTPC1","gaushitTPC2","gaushitTPC3"]
phsyics.analyzers.hitEffAnalysisGauss.HitEfficiencyHistogramToolList[0].UseBadChannelDB: false
physics.analyzers.hitEffAnalysisCluster3d.HitEfficiencyHistogramToolList[0].RawDigitLabelVec: ["rawDigitFilterTPC0","rawDigitFilterTPC1","rawDigitFilterTPC2","rawDigitFilterTPC3"]
physics.analyzers.hitEffAnalysisCluster3d.HitEfficiencyHistogramToolList[0].WireModuleLabelVec: ["decon1DroiTPC0","decon1DroiTPC1","decon1DroiTPC2","decon1DroiTPC3"]
physics.analyzers.hitEffAnalysisCluster3d.HitEfficiencyHistogramToolList[0].HitModuleLabelVec: ["cluster3DCryo0","cluster3DCryo1"]
phsyics.analyzers.hitEffAnalysisCluster3d.HitEfficiencyHistogramToolList[0].UseBadChannelDB: false
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].RawDigitLabelVec: ["rawDigitFilterTPC0","rawDigitFilterTPC1","rawDigitFilterTPC2","rawDigitFilterTPC3"]
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].WireModuleLabelVec: ["recoWireRawTPC0","recoWireRawTPC1","recoWireRawTPC2","recoWireRawTPC3"]
physics.analyzers.hitEffAnalysisRaw.HitEfficiencyHistogramToolList[0].HitModuleLabelVec: ["icarusHitTPC0","icarusHitTPC1","icarusHitTPC2","icarusHitTPC3"]
Loading