1 #include "pddp_sam.fcl"
2 #include "services_dune.fcl"
3 #include "caldata_dune.fcl"
4 #include "hitfindermodules_dune.fcl"
5 #include "cluster_dune.fcl"
6 #include "trackfindermodules_dune.fcl"
7 #include "pandoramodules_dune.fcl"
8 #include "calorimetry_dune10kt.fcl"
9 #include "mctrutht0matching.fcl"
11 #include "particleid.fcl"
12 #include "showerfindermodules_dune.fcl"
13 #include "channelstatus_pddp.fcl"
15 #include "tools_dune.fcl"
21 # Load the service that manages root files for histograms.
22 TFileService: { fileName: "hist.root" }
25 RandomNumberGenerator: {} #ART native random number generator
26 message: @local::dune_message_services_prod_debug
27 FileCatalogMetadata: @local::pddp_art_file_catalog
28 @table::protodunedphase_reco_services_legacy
31 #services.FileCatalogMetadata.applicationVersion: "v08_32_01"
33 services.Geometry: @local::protodunedphase_geo
34 services.DetectorPropertiesService: @local::protodunedphase_detproperties
35 services.RawDigitPrepService: @local::adcprep_with_tools_data
36 services.ChannelStatusService: @local::pddp_channel_status_lemblind
37 services.DetectorPropertiesService.Efield: [0.166, 4.0, 0.0]
40 tools.pddp_adcMultiThreshSignalFinder: {
41 tool_type: AdcMultiThreshSignalFinder
43 UseStandardDeviation: true
45 SamplesAboveThreshold1: 10
47 SamplesAboveThreshold2: 10
54 tools.pddp_RemoveBadChannels: {
55 tool_type: RemoveBadChannels
62 dataprep_tool_list: [ "digitReader",
65 "pddp_RemoveBadChannels",
66 "pddp_adcMultiThreshSignalFinder" ]
67 services.RawDigitPrepService.ToolNames: @local::dataprep_tool_list
68 services.AdcWireBuildingService.SaveChanPedRMS: false
69 tools.def_adcPedestalFit.FitRmsMin: 0.1
70 tools.def_adcPedestalFit.FitRmsMax: 5.0
71 tools.def_adcPedestalFit.FitOpt: 1
72 tools.def_adcPedestalFit.FitPrecision: 1.0
74 #source is now a root file
77 module_type: RootInput
79 fileNames: ["detsim.root"]
82 # Define and configure some modules to do work on each event.
83 # First modules are defined; they are scheduled later.
84 # Modules are grouped by type.
89 ### random number saver
90 rns: { module_type: RandomNumberSaver }
92 ### convert raw::RawDigit to recob::wire
93 caldata: @local::producer_adcprep
96 dprawhit: @local::dunefddphase_dprawhitfinder
97 gaushit: @local::dunefddphase_gaushitfinder
100 pandora: @local::protodune_dp_pandora
101 pandoraTrack: @local::dune_pandoraTrackCreation
102 pandoraShower: @local::dune_pandoraShowerCreation
104 trajcluster: @local::dunefdmc_trajcluster
106 ## calo: @local::dune10kt_calomc
107 ## linecluster: @local::dunefd_linecluster
108 ## pmtrack: @local::dunefd_pmalgtrackmaker
109 ## pmtrajfit: @local::dunefd_pmalgtrajfitter
110 ## pmtrackcalo: @local::dune10kt_calomc
111 ## pmtrackpid: @local::standard_chi2pid
114 #define the producer and filter modules for this path, order matters,
115 #filters reject all following items. see lines starting physics.producers below
116 reco: [ rns, caldata, gaushit, pandora, pandoraTrack, pandoraShower ]
127 #define the output stream, there could be more than one if using filters
130 #trigger_paths is a keyword and contains the paths that modify the art::event,
131 #ie filters and producers
132 trigger_paths: [reco]
134 #end_paths is a keyword and contains the paths that do not modify the art::Event,
135 #ie analyzers and output streams. these all run simultaneously
139 #block to define where the output goes. if you defined a filter in the physics
140 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
141 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
146 module_type: RootOutput
147 fileName: "%ifb_reco.root"
148 dataTier: "hit-reconstructed"
149 streamName: "cosmics"
153 ################################################################################
155 ################################################################################
157 services.RawDigitPrepService.DoNoiseRemoval: false
158 services.RawDigitPrepService.DoDeconvolution: true
159 services.RawDigitPrepService.DoEarlySignalFinding: false
160 services.RawDigitPrepService.DoMitigation: false
161 services.RawDigitPrepService.SkipBad: false
162 services.RawDigitPrepService.SkipNoisy: false
163 services.RawDigitPrepService.DoROI: true
165 physics.producers.caldata.DoGroups: false
166 physics.producers.caldata.OnlineChannelMapTool: ""
169 ################################################################################
170 # GausHit finder configuration
171 ################################################################################
173 physics.producers.gaushit.AreaNorm: 35.64 # in units (ADC x us) / fC
174 physics.producers.gaushit.ADCpermV: 1.0 # ADC conversion factor (not used at the moment)
175 physics.producers.gaushit.AmpENC: 1000.0 # noise in electrons from TDR
176 physics.producers.gaushit.DeconNorm: 70
177 physics.producers.gaushit.ShapeFunc: "[0]/([0]-[1]) * ( exp(-(x)/[0]) - exp(-(x)/[1]) )"
178 physics.producers.gaushit.ShapeFuncParams: [1.0, 4.5]
179 physics.producers.gaushit.RespSamplingPeriod: 400. # in nano second
180 physics.producers.gaushit.AddFieldFunction: false
181 physics.producers.gaushit.ColFieldFunction: "x*[0]"
182 physics.producers.gaushit.ColFieldFunctionParams: [1.0]
183 physics.producers.gaushit.ColFieldRespAmp: 1.0
184 physics.producers.gaushit.ColFilter: "(x>0.0)*gaus"
185 physics.producers.gaushit.ColFilterParams: [ 1.0, 0.0, 0.13 ]
186 #physics.producers.gaushit.FieldFunctionParameters: [1.0, 1.0, 1.0, 1.0] #0 step width #1 step height #2 slow/fast (could be taken from E field) #Tau (could be taken from field and temperature). 0 and Tau in us
188 ################################################################################
190 ################################################################################
192 physics.producers.dprawhit.MinSig: 2 # threshold for raw hit fitting algorithm in ADC. No peak with lower amplitude is fitted.
193 physics.producers.dprawhit.TicksToStopPeakFinder: 50 # when walking along waveform to find start and end points of a peak, stop when current tick is followed by minimum "TicksToStopPeakFinder" ticks
194 # with equal or higher ADC counts (stop anyway if ADC count of a tick is <= 0)
195 physics.producers.dprawhit.MinWidth: 5 # threshold for single pulses in ticks (= 400 ns), reduces noise hits
196 physics.producers.dprawhit.MinADCSumOverWidth: 2.0 # threshold for ADC sum over width (ADC per ticks). Peaks with smaller values are neither fitted nor stored.
197 physics.producers.dprawhit.MaxMultiHit: 3
198 physics.producers.dprawhit.TryNplus1Fits: true # true: will try to re-fit poorly modeled hits (chi2PerNDF>Chi2NDFRetry) with n+1 exponentials
199 # false will NOT try to re-fit poorly modled hits
200 physics.producers.dprawhit.Chi2NDFRetry: 25 # fits with chi2/ndf above this value will be refitted with an additional peak (if TryNplus1Fits is set to true)
201 physics.producers.dprawhit.MinTau: 0.01 # mainimum value of the rising and falling time constants of the fit, in ticks. Sets a minimum width for the fit (~ width the elec.shaping function)
202 physics.producers.dprawhit.MaxTau: 5 # maximum value of the rising and falling time constants of the fit, in ticks. Limits the max. width of the fit (depends on drift distance etc.)
203 physics.producers.dprawhit.GroupMaxDistance: 5 # max distance between two peaks for grouping. grouped hits are fitted together.
204 physics.producers.dprawhit.DoMergePeaks: true # true: peak merging (merge two peaks into one) before fitting enabled
205 physics.producers.dprawhit.MergeADCSumThreshold: 0.2 # merge two peaks only if (ADC sum of the smaller peak) < MergeADCSumThreshold*(ADC sum of the bigger peak)
206 physics.producers.dprawhit.MergeMaxADCThreshold: 0.2 # merge two peaks only if (height of the smaller peak) < MergeADCSumThreshold*(height sum of the bigger peak)
209 ################################################################################
211 ################################################################################
213 physics.producers.trajcluster.HitModuleLabel: "dprawhit"
214 #physics.producers.trajcluster.TrajClusterAlg.HitErrFac: 0.2
215 #physics.producers.trajcluster.TrajClusterAlg.MakeNewHits: false
217 #physics.producers.pmtrack.HitModuleLabel: "trajcluster"
218 #physics.producers.pmtrack.ClusterModuleLabel: "trajcluster"
220 #physics.producers.pmtrajfit.HitModuleLabel: "trajcluster"
221 #physics.producers.pmtrajfit.PfpModuleLabel: "trajcluster"
223 ################################################################################
225 ################################################################################
227 physics.producers.pandora.ConfigFile: "PandoraSettings_Master_ProtoDUNE_DP.xml"
228 physics.producers.pandora.EnableLineGaps: true
229 physics.producers.pandora.EnableMCParticles: false
230 physics.producers.pandora.EnableProduction: true
231 physics.producers.pandora.GeantModuleLabel: "largeant"
232 physics.producers.pandora.HitFinderModuleLabel: "gaushit"
233 physics.producers.pandora.PrintOverallRecoStatus: false
234 physics.producers.pandora.ShouldPerformSliceId: false
235 physics.producers.pandora.ShouldRunAllHitsCosmicReco: true
236 physics.producers.pandora.ShouldRunCosmicHitRemoval: false
237 physics.producers.pandora.ShouldRunCosmicRecoOption: false
238 physics.producers.pandora.ShouldRunNeutrinoRecoOption: false
239 physics.producers.pandora.ShouldRunSlicing: false
240 physics.producers.pandora.ShouldRunStitching: false
241 physics.producers.pandora.UseGlobalCoordinates: false
242 physics.producers.pandora.UseHitWidths: true
243 physics.producers.pandoraTrack.PFParticleLabel: "pandora"
244 physics.producers.pandoraShower.PFParticleLabel: "pandora"
246 #Optical detector configuration