hitfindermodules.fcl
Go to the documentation of this file.
1 // from larreco/RecoAlg:
2 #include "hitalgorithms.fcl"
3 #include "HitFinderTools.fcl"
4 
5 BEGIN_PROLOG
6 
7 standard_hitcheater:
8 {
9  module_type: "HitCheater"
10  G4ModuleLabel: "largeant"
11  WireModuleLabel: "caldata"
12  MinimumCharge: 5.
13 }
14 
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"
19 
20 standard_hitfinder:
21 {
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.
34 }
35 
36 gaus_hitfinder:
37 {
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
50 
51  # Candididate peak finding done by tool, one tool instantiated per plane (but could be other divisions too)
52  HitFinderToolVec:
53  {
54  CandidateHitsPlane0: @local::candhitfinder_standard # plane 0
55  CandidateHitsPlane1: @local::candhitfinder_standard # plane 1
56  CandidateHitsPlane2: @local::candhitfinder_standard # plane 2
57  }
58 
59  # Declare the peak fitting tool
60  PeakFitter: @local::peakfitter_gaussian
61  #PeakFitter: @local::peakfitter_mrqdt
62 
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
65  HitFilterAlg:
66  {
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
70  }
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
75 }
76 
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
82 
83 dpraw_hitfinder:
84 {
85  module_type: "DPRawHitFinder"
86  LogLevel: 0
87 
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.
91 
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
95 
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
102 
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.
106 
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.
111 
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.
115 
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.
118 
119  LongPulseWidth: 40 # max widths for hits in long pulse trains
120  LongMaxHits: 20 # max number hits in long pulse trains
121 
122 
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.
128 
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.
132 }
133 
134 standard_rffhitfinderalg:
135 {
136  AmplitudeThreshold: [ 0.0 ]
137  MeanMatchThreshold: [ 2.0 ]
138  MinMergeMultiplicity: [ 2 ]
139 }
140 
141 rff_hitfinder:
142 {
143  module_type: "RFFHitFinder"
144  WireModuleLabel: "caldata"
145  RFFHitFinderAlgParams: @local::standard_rffhitfinderalg
146 }
147 
148 tt_hitfinder:
149 {
150  module_type: "TTHitFinder"
151  CalDataModuleLabel: "caldata"
152  MinSigPeakInd: 6.0
153  MinSigPeakCol: 11.0
154  MinSigTailInd: 2.0
155  MinSigTailCol: 3.67
156  IndWidth: 3
157  ColWidth: 3
158 }
159 
160 #For now, keep the APAHitFinder configured just like the GausHitFinder
161 apa_hitfinder: @local::gaus_hitfinder
162 apa_hitfinder.module_type: "APAHitFinder"
163 
164 
165 standard_hitfinderana:
166 {
167  module_type: "HitFinderAna"
168  HitsModuleLabel: "ffthit"
169  LArGeantModuleLabel: "largeant"
170 }
171 
172 gaus_hitfinderana:
173 {
174  module_type: "GausHitFinderAna"
175  HitsModuleLabel: "gaushit"
176  LArGeantModuleLabel: "largeant"
177 }
178 
179 standard_fasthitfinder:
180 {
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
197 }
198 
199 standard_clustercrawlerhit:
200 {
201  # call this: "cchit"
202  module_type: "HitFinder"
203  CalDataModuleLabel: "caldata"
204  CCHitFinderAlg: @local::standard_cchitfinderalg
205 } # standard_clustercrawlerhit
206 
207 
208 jp250L_hitfinder: @local::standard_hitfinder
209 jp250L_gaushitfinder: @local::gaus_hitfinder
210 
211 bo_hitfinder: @local::standard_hitfinder
212 bo_gaushitfinder: @local::gaus_hitfinder
213 
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 ]
218 
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
230 END_PROLOG