1 #include "services_dune.fcl"
2 #include "caldata_dune.fcl"
3 #include "hitfindermodules_dune.fcl"
4 #include "cluster_dune.fcl"
5 #include "imagepatternalgs.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 "stitcherdp.fcl"
15 #include "tools_dune.fcl"
17 process_name: RecoTrack
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::standard_info
27 FileCatalogMetadata: @local::art_file_catalog_mc
28 @table::dunefddphase_reco_services_legacy
31 services.Geometry: @local::dunedphase10kt_workspace4x2_geo
32 services.message.destinations.infomsg.threshold: "DEBUG"
35 #source is now a root file
38 module_type: RootInput
40 fileNames: ["detsim.root"]
43 # Define and configure some modules to do work on each event.
44 # First modules are defined; they are scheduled later.
45 # Modules are grouped by type.
51 rns: { module_type: RandomNumberSaver }
52 caldata: @local::producer_adcprep
53 dprawhit: @local::dunefddphase_dprawhitfinder
56 #define the producer and filter modules for this path, order matters,
57 #filters reject all following items. see lines starting physics.producers below
58 reco: [ rns, caldata, dprawhit ]
59 #reco: [ trackstitch ]
67 #define the output stream, there could be more than one if using filters
70 #trigger_paths is a keyword and contains the paths that modify the art::event,
71 #ie filters and producers
74 #end_paths is a keyword and contains the paths that do not modify the art::Event,
75 #ie analyzers and output streams. these all run simultaneously
79 #block to define where the output goes. if you defined a filter in the physics
80 #block and put it in the trigger_paths then you need to put a SelectEvents: {SelectEvents: [XXX]}
81 #entry in the output stream you want those to go to, where XXX is the label of the filter module(s)
86 module_type: RootOutput
87 fileName: "%ifb_reco.root"
88 dataTier: "full-reconstructed"
94 ################################################################################
96 ################################################################################
98 services.RawDigitPrepService.DoNoiseRemoval: false
99 services.RawDigitPrepService.DoDeconvolution: false
100 services.RawDigitPrepService.DoEarlySignalFinding: false
101 services.RawDigitPrepService.DoMitigation: false
102 services.RawDigitPrepService.SkipBad: false
103 services.RawDigitPrepService.SkipNoisy: false
104 services.RawDigitPrepService.DoROI: true
106 physics.producers.caldata.DoGroups: false
107 physics.producers.caldata.LogLevel: 1
109 ################################################################################
111 ################################################################################
113 services.AdcRoiBuildingService.NSigmaStart: 0.75 # only pulses with ADC >= NSigmaStart*8 are considered for hit finding. This reduces fake noise hits.
114 services.AdcRoiBuildingService.NSigmaEnd: 0.75 # only pulses with ADC >= NSigmaStart*8 are considered for hit finding. This reduces fake noise hits.
116 ################################################################################
117 # Hit finder configuration
118 ################################################################################
120 physics.producers.dprawhit.LogLevel: 0 # Log level
121 physics.producers.dprawhit.NumBinsToAverage: 0 # 0 or 1 = no averaging.
122 physics.producers.dprawhit.ChargeNorm: 1 # Normalization for fit integral. Should be set to 1.
123 physics.producers.dprawhit.WidthNormalization: 2.335 # standard width of the fitted hit is the FWHM of the fitted function (full width at half maximum).
124 # This width is divied by 'WidthNormalization' and saved to the recob::Hit.
125 # standard value is chosen to be 2.335 = 2*sqrt(2*ln(2)), which is the relation between FWHM and standard deviation for the Gaussian distribution
127 physics.producers.dprawhit.MinSig: 4 # peak threshold for peak finding (in ADC). Peaks with lower amplitudes are neither fitted nor stored.
128 physics.producers.dprawhit.TicksToStopPeakFinder: 5 # when walking along waveform to find start and end points of a peak, stop when current tick is followed by minimum "TicksToStopPeakFinder" ticks
129 # with equal or higher ADC counts (=inflection point). Stop anyway if ADC count of a tick is <= 0.
131 physics.producers.dprawhit.GroupMaxDistance: 2 # maximum distance (in ticks) between two peaks to be grouped.
132 physics.producers.dprawhit.GroupMinADC: 10 # minimum ADC count between two peaks to be grouped.
135 physics.producers.dprawhit.DoMergePeaks: false # true: merge two peaks of the same group into one before fitting
136 physics.producers.dprawhit.MergeADCSumThreshold: 0.1 # merge two peaks if (ADC sum of the smaller peak) < MergeADCSumThreshold*(ADC sum of the bigger peak) AND
137 physics.producers.dprawhit.MergeMaxADCThreshold: 0.1 # merge two peaks if (height of the smaller peak) < MergeMaxADCThreshold*(height of the bigger peak) OR
138 physics.producers.dprawhit.MinRelativePeakHeightLeft: 0.1 # merge two peaks if (relative peak height of the smaller left peak) < MinRelativePeakHeightLeft*(peak height of the smaller peak)
139 physics.producers.dprawhit.MinRelativePeakHeightRight: 0.1 # merge two peaks if (relative peak height of the smaller right peak) < MinRelativePeakHeightRight*(peak height of the smaller peak)
141 #filterings grouped and merged peaks
142 physics.producers.dprawhit.MinADCSum: 5 # threshold for ADC sum (in ADC*ticks). Groups of peaks with smaller values are neither fitted nor stored.
143 physics.producers.dprawhit.MinWidth: 10 # threshold for width (in ticks). Groups of peaks with smaller values are neither fitted nor stored.
144 physics.producers.dprawhit.MinADCSumOverWidth: 2 # threshold for ADC sum over width (in ADC*ticks/ticks). Groups of peaks with smaller values are neither fitted nor stored.
146 #splitting up long groups of peaks and calculate hit paramter directly from waveform (no fit).
147 physics.producers.dprawhit.MaxMultiHit: 10 # maximum number of peaks in a group for the group to be fitted. If more, split the group in equally spaced hits without fitting.
148 # When refitting, maximum number of peaks in group can be up to 3x number of peaks before re-fitting.
149 physics.producers.dprawhit.MaxFluctuations: 500 # If the sum of fluctuations in all peaks is > MaxFluctuations, split the group in equally spaced hits without fitting.
150 physics.producers.dprawhit.MaxGroupLength: 500 # Maximum length of group of peaks for the group to be fitted, in ticks. If more, split the group in equally spaced hits without fitting.
152 physics.producers.dprawhit.LongPulseWidth: 200 # max widths for hits in long pulse trains
153 physics.producers.dprawhit.LongMaxHits: 10 # max number hits in long pulse trains
155 #fitting groups of peaks
156 physics.producers.dprawhit.SameShape: true # if true: fits within same group are forced to have identical shape
157 physics.producers.dprawhit.MinTau: 0.1 # minimum value of the rising and falling time constants of the fit, in microseconds.
158 physics.producers.dprawhit.MaxTau: 10 # maximum value of the rising and falling time constants of the fit, in microseconds.
159 physics.producers.dprawhit.FitPeakMeanRange: 2 # range in that the fitter can move the mean of the fit function w.r.t. the peak.
161 #refitting fitted groups of peaks peaks
162 physics.producers.dprawhit.TryNplus1Fits: true # true: will try to re-fit poorly modeled groups of peaks (chi2PerNDF>Chi2NDFRetry) while adding (an) additional peak(s).
163 physics.producers.dprawhit.Chi2NDFRetry: 20 # for single peaks: if the first fit returns a Chi2/NDF greater than this, try to re-fit.
164 physics.producers.dprawhit.Chi2NDFRetryFactorMultiHits: 1 # for groups of peaks (2 or more): if the first fit returns a Chi2/NDF greater than Chi2NDFRetryFactorMultiHits*Chi2NDFRetry, try to re-fit.
166 #filtering (re)fitted groups of peaks. groups of peaks with a higher chi2/ndf are split up.
167 physics.producers.dprawhit.Chi2NDFMax: 100 # for single peaks: maximum chi square / NDF allowed for a fit to be stored as recob::Hits. Otherwise, handle peak as long pulse train.
168 physics.producers.dprawhit.Chi2NDFMaxFactorMultiHits: 100 # for groups of peaks (2 or more): maximum chi square / NDF allowed for a fit to be stored as recob::Hit. Otherwise, handle group as long pulse train.
170 #filtering (re)fitted groups of peaks. groups of peaks with a higher chi2/ndf are split up.
171 ApplyCalorimetryCorrection: false #renormalize hit charge for lifetime and gainper view ( should reduce variations and make clustering easier )
172 GainPerView: 10 #for a single view
173 Lifetime: 3000 #in us