rawhitfinding_dune10ktdphase_workspace4x2.fcl
Go to the documentation of this file.
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"
10 #include "t0reco.fcl"
11 #include "particleid.fcl"
12 #include "showerfindermodules_dune.fcl"
13 # #include "stitcherdp.fcl"
14 
15 #include "tools_dune.fcl"
16 
17 process_name: RecoTrack
18 
19 services:
20 {
21  # Load the service that manages root files for histograms.
22  TFileService: { fileName: "hist.root" }
23  TimeTracker: {}
24  MemoryTracker: {}
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
29 }
30 
31 services.Geometry: @local::dunedphase10kt_workspace4x2_geo
32 services.message.destinations.infomsg.threshold: "DEBUG"
33 
34 
35 #source is now a root file
36 source:
37 {
38  module_type: RootInput
39  maxEvents: -1
40  fileNames: ["detsim.root"]
41 }
42 
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.
46 physics:
47 {
48 
49  producers:
50  {
51  rns: { module_type: RandomNumberSaver }
52  caldata: @local::producer_adcprep
53  dprawhit: @local::dunefddphase_dprawhitfinder
54  }
55 
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 ]
60 
61  analyzers:
62  {
63  }
64 
65  analyzeIt: [ ]
66 
67  #define the output stream, there could be more than one if using filters
68  stream1: [ out1 ]
69 
70  #trigger_paths is a keyword and contains the paths that modify the art::event,
71  #ie filters and producers
72  trigger_paths: [reco]
73 
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
76  end_paths: [stream1]
77 }
78 
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)
82 outputs:
83 {
84  out1:
85  {
86  module_type: RootOutput
87  fileName: "%ifb_reco.root"
88  dataTier: "full-reconstructed"
89  compressionLevel: 1
90  }
91 }
92 
93 
94 ################################################################################
95 ## Noise
96 ################################################################################
97 
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
105 
106 physics.producers.caldata.DoGroups: false
107 physics.producers.caldata.LogLevel: 1
108 
109 ################################################################################
110 ## ROI
111 ################################################################################
112 
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.
115 
116 ################################################################################
117 # Hit finder configuration
118 ################################################################################
119 
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
126 #finding peaks
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.
130 #grouping peaks
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.
133 
134 #merging peaks
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)
140 
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.
145 
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.
151 
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
154 
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.
160 
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.
165 
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.
169 
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
174 T0: 0 #run t0