1 // from larreco/RecoAlg:
2 #include "hitalgorithms.fcl"
3 #include "HitFinderTools.fcl"
9 module_type: "HitCheater"
10 G4ModuleLabel: "largeant"
11 WireModuleLabel: "caldata"
15 standard_hitcheater_preSpill: @local::standard_hitcheater
16 standard_hitcheater_postSpill: @local::standard_hitcheater
17 standard_hitcheater_preSpill.WireModuleLabel: "caldataPreSpill:preSpill"
18 standard_hitcheater_postSpill.WireModuleLabel: "caldataPostSpill:postSpill"
22 module_type: "FFTHitFinder"
23 CalDataModuleLabel: "caldata"
24 MinSigInd: 6.0 # Induction signal height threshold
25 MinSigCol: 11.0 # Collection signal height threshold
26 IndWidth: 6.0 # Initial width for induction fit
27 ColWidth: 7.8 # Initial width for collection fit
28 IndMinWidth: 4.0 # Induction Hit width threshold
29 ColMinWidth: 6.0 # Collection hit width threshold
30 MaxMultiHit: 3 # maximum hits for multi fit
31 AreaMethod: 0 # 0 = area by integral, 1 = area by gaussian area formula
32 AreaNorms: [ 13.25, 26.31 ] # normalizations that put signal area in
33 # same scale as peak height.
38 module_type: "GausHitFinder"
39 CalDataModuleLabel: "caldata"
40 MaxMultiHit: 10 # maximum hits for multi gaussia fit attempt
41 AreaMethod: 0 # 0 = area by integral, 1 = area by gaussian area formula
42 AreaNorms: [ 13.25, 26.31 ] # normalizations that put signal area in
43 # same scale as peak height.
44 LongMaxHits: [ 1, 1, 1] # max number hits in long pulse trains
45 LongPulseWidth: [ 16, 16, 16] # max widths for hits in long pulse trains
46 Chi2NDF: 2000 # maximum Chisquared / NDF allowed to store fit, if fail
47 # will use "long" pulse method to return hit
48 AllHitsInstanceName: "" # If non-null then this will be the instance name of all hits output to event
49 # in this case there will be two hit collections, one filtered and one containing all hits
51 # Candididate peak finding done by tool, one tool instantiated per plane (but could be other divisions too)
54 CandidateHitsPlane0: @local::candhitfinder_standard # plane 0
55 CandidateHitsPlane1: @local::candhitfinder_standard # plane 1
56 CandidateHitsPlane2: @local::candhitfinder_standard # plane 2
59 # Declare the peak fitting tool
60 PeakFitter: @local::peakfitter_gaussian
61 #PeakFitter: @local::peakfitter_mrqdt
63 # The below are for the hit filtering section of the gaushit finder
64 FilterHits: false # true = do not keep undesired hits according to settings of HitFilterAlg object
67 AlgName: "HitFilterAlg"
68 MinPulseHeight: [5.0, 5.0, 5.0] #minimum hit peak amplitude per plane
69 MinPulseSigma: [1.0, 1.0, 1.0] #minimum hit rms per plane
71 # In addition to the filter alg we can also filter hits on the same pulse train
72 PulseHeightCuts: [3.0, 3.0, 3.0 ] # Minimum pulse height
73 PulseWidthCuts: [2.0, 1.5, 1.0 ] # Minimum pulse width
74 PulseRatioCuts: [0.35, 0.40, 0.20] # Ratio of pulse height to width
77 # Currently have to tell each tool which plane it is operating on... this is really
78 # for the histogramming option which enables hist naming without conflict
79 gaus_hitfinder.HitFinderToolVec.CandidateHitsPlane0.Plane: 0
80 gaus_hitfinder.HitFinderToolVec.CandidateHitsPlane1.Plane: 1
81 gaus_hitfinder.HitFinderToolVec.CandidateHitsPlane2.Plane: 2
85 module_type: "DPRawHitFinder"
88 CalDataModuleLabel: "caldata"
89 MinSig: 10 # peak threshold for peak finding (in ADC). Peaks with lower amplitudes are neither fitted nor stored.
90 TicksToStopPeakFinder: 4 # when walking along waveform to find start and end points of a peak, stop when current tick is followed by minimum "TicksToStopPeakFinder" ticks # with equal or higher ADC counts (=inflection point). Stop anyway if ADC count of a tick is <= 0.
92 GroupMaxDistance: 10 # maximum distance (in ticks) between two peaks to be grouped.
93 GroupMinADC: 0 # minimum ADC count between two peaks to be grouped.
94 SameShape: true # if true: fits within same group are forced to have identical shape
96 DoMergePeaks: false # true: enables peak merging for peaks in the same group.
97 MergeADCSumThreshold: 0.2 # merge two peaks only if (ADC sum of the smaller peak) < MergeADCSumThreshold*(ADC sum of the bigger peak).
98 MergeMaxADCThreshold: 0.2 # merge two peaks only if (height of the smaller peak) < MergeADCSumThreshold*(height of the bigger peak).
99 MinRelativePeakHeightLeft: 0.1 # if smaller peak is on the left: merge two peaks if (relative peak height of the smaller peak) < MinRelativePeakHeightLeft*(peak height of the smaller peak)
100 MinRelativePeakHeightRight: 0.1 # if smaller peak is on the right: merge two peaks if (relative peak height of the smaller peak) < MinRelativePeakHeightRight*(peak height of the smaller peak)
101 MergeMaxADCLimit: 25 # merge two peaks only if smaller peak <= MergeMaxADCLimit
103 MinWidth: 5 # threshold for width (in ticks). Groups of peaks with smaller values are neither fitted nor stored.
104 MinADCSum: 10 # threshold for ADC sum (in ADC*ticks). Groups of peaks with smaller values are neither fitted nor stored.
105 MinADCSumOverWidth: 0 # threshold for ADC sum over width (in ADC*ticks/ticks). Groups of peaks with smaller values are neither fitted nor stored.
107 MaxMultiHit: 6 # maximum number of peaks in a group for the group to be fitted. If more, split the group in equally spaced hits without fitting.
108 # When refitting, maximum number of peaks in group is: 1) not greater than 3x number of peaks before re-fitting.
109 MaxGroupLength: 20000 # 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.
110 MaxFluctuations: 20000 # If the sum of fluctuations in all peaks is > MaxFluctuations, split the group in equally spaced hits without fitting.
112 TryNplus1Fits: false # true: will try to re-fit poorly modeled groups of peaks (chi2PerNDF>Chi2NDFRetry) while adding (an) additional peak(s).
113 Chi2NDFRetry: 25 # for single peaks: if the first fit returns a Chi2/NDF greater than this, try to re-fit.
114 Chi2NDFRetryFactorMultiHits: 2 # for groups of peaks (2 or more): if the first fit returns a Chi2/NDF greater than Chi2NDFRetryFactorMultiHits*Chi2NDFRetry, try to re-fit.
116 Chi2NDFMax: 2000 # for single peaks: maximum chi square / NDF allowed for a fit to be stored as recob::Hits. Otherwise, handle peak as long pulse train.
117 Chi2NDFMaxFactorMultiHits: 2 # 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.
119 LongPulseWidth: 40 # max widths for hits in long pulse trains
120 LongMaxHits: 20 # max number hits in long pulse trains
123 ChargeNorm: 1 # Normalization for fit integral. Should be set to 1.
124 NumBinsToAverage: 0 # 0 or 1 = no averaging.
125 MinTau: 0.01 # minimum value of the rising and falling time constants of the fit, in microseconds.
126 MaxTau: 20 # maximum value of the rising and falling time constants of the fit, in microseconds.
127 FitPeakMeanRange: 5 # range in that the fitter can move the mean of the fit function w.r.t. the peak.
129 WidthNormalization: 2.335 # standard width of the fitted hit is the FWHM of the fitted function (full width at half maximum).
130 # This width is divied by 'WidthNormalization' and saved to the recob::Hit.
131 # 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.
134 standard_rffhitfinderalg:
136 AmplitudeThreshold: [ 0.0 ]
137 MeanMatchThreshold: [ 2.0 ]
138 MinMergeMultiplicity: [ 2 ]
143 module_type: "RFFHitFinder"
144 WireModuleLabel: "caldata"
145 RFFHitFinderAlgParams: @local::standard_rffhitfinderalg
150 module_type: "TTHitFinder"
151 CalDataModuleLabel: "caldata"
160 #For now, keep the APAHitFinder configured just like the GausHitFinder
161 apa_hitfinder: @local::gaus_hitfinder
162 apa_hitfinder.module_type: "APAHitFinder"
165 standard_hitfinderana:
167 module_type: "HitFinderAna"
168 HitsModuleLabel: "ffthit"
169 LArGeantModuleLabel: "largeant"
174 module_type: "GausHitFinderAna"
175 HitsModuleLabel: "gaushit"
176 LArGeantModuleLabel: "largeant"
179 standard_fasthitfinder:
181 module_type: "RawHitFinder"
182 CalDataModuleLabel: "caldata"
183 MinSigInd: 5.0 # Induction signal height threshold
184 MinSigCol: 5.0 # Collection signal height threshold
185 IndWidth: 6.0 # Initial width for induction fit
186 ColWidth: 7.8 # Initial width for collection fit
187 IndMinWidth: 4.0 # Induction Hit width threshold
188 ColMinWidth: 6.0 # Collection hit width threshold
189 MaxMultiHit: 3 # maximum hits for multi fit
190 AreaMethod: 0 # 0 = area by integral, 1 = area by gaussian area formula
191 AreaNorms: [ 13.25, 26.31 ] # normalizations that put signal area in
192 ColMinWindow: 100 # minimum integration window for charge, coll plane
193 IndCutoff: 1 # max distance between zero crossing and hit start
194 # in ticks, for induction planes only
195 SkipInd: false # If true, do not make any hits for ind plane wires
196 UncompressWithPed: false
199 standard_clustercrawlerhit:
202 module_type: "HitFinder"
203 CalDataModuleLabel: "caldata"
204 CCHitFinderAlg: @local::standard_cchitfinderalg
205 } # standard_clustercrawlerhit
208 jp250L_hitfinder: @local::standard_hitfinder
209 jp250L_gaushitfinder: @local::gaus_hitfinder
211 bo_hitfinder: @local::standard_hitfinder
212 bo_gaushitfinder: @local::gaus_hitfinder
214 argoneut_hitfinder: @local::standard_hitfinder
215 argoneut_gaushitfinder: @local::gaus_hitfinder
216 argoneut_mc_hitfinder: @local::standard_hitfinder
217 argoneut_mc_hitfinder.AreaNorms: [ 12.89, 14.51 ]
219 microboone_hitfinder: @local::standard_hitfinder
220 microboone_gaushitfinder: @local::gaus_hitfinder
221 microboone_rffhitfinder: @local::rff_hitfinder
222 microboone_hitfinder.IndMinWidth: 1.0
223 microboone_hitfinder.ColMinWidth: 1.0
224 microboone_gaushitfinder.MinSig: [ 6.0, 6.0, 11.0 ]
225 microboone_gaushitfinder.InitWidth: [ 6.0, 6.0, 7.8 ]
226 microboone_gaushitfinder.MinWidth: [ 4.0, 4.0, 6.0 ]
227 microboone_gaushitfinder.AreaNorms: [ 13.25, 13.25, 26.31 ]
228 microboone_clustercrawlerhit: @local::standard_clustercrawlerhit
229 microboone_clustercrawlerhit.CCHitFinderAlg: @local::microboone_cchitfinderalg