1 #include "trackfinderalgorithms.fcl"
2 #include "cluster3dalgorithms.fcl"
3 #include "calorimetry.fcl"
4 #include "kalmanfilterfittrackmakertool.fcl"
7 standard_trajclusteralg:
9 Mode: 1 # 1(-1) step from US(DS) to DS(US), 2 = don't use
10 NPtsAve: 10 # Number of points to find average charge, Ave chg rms
11 MinPtsFit: [3, 3, 3] # Min number of points in the trajectory fit required on each pass
12 MinPts: [3, 3, 3] # Min number of points in the trajectory required on each pass
13 MaxAngleCode: [0, 1, 2] # Max angle range code allowed on each pass
14 MinMCSMom: [0, 0, 0] # Minimum MCSMom for each pass
15 MaxChi: 20 # Max Chi/DOF for accepting a trajectory fit (long muons)
16 HitErrFac: 0.4 # hit time error for fitting = fHitErrFac * (hit RMS)
17 MinAmp: 1 # Min amplitude for a wire signal being considered present (must be > 0)
18 AngleRanges: [40, 85, 90] # Max angle (degrees) for small, intermediate and large angle trajectories
19 MultHitSep: 2.5 # Hits separated by < MultHitSep * RMS may be combined in a trajectory point
20 ChargeCuts: [4, 0.15, 0.25] # [Max(min) chg pull, Min allowed chg RMS, Max allowed chg RMS]
21 # KinkCuts: [0.4, 1.5, 3] # kink angle, MCS kink significance, nPts fit << OLD
22 KinkCuts: [ 8, 15, 1, 10 ] # << NEW
23 # 0 Number of points to fit at the end of the trajectory
24 # 1 Minimum kink significance
25 # 2 Use charge in significance calculation? (yes if > 0)
26 # 3 3D kink fit length (cm)
27 ProjectionErrFactor: 2 # Factor applied to calculated trajectory error
28 VLAStepSize: 1.5 # Step size for Very Large Angle trajectories
29 JTMaxHitSep: 3 # max hit separation (WSE units) for making Junk Trajectories (<0) turn off
30 MaxWireSkipNoSignal: 3 # max allowed number of not-dead wires if no signal is present
31 MaxWireSkipWithSignal: 100 # max allowed number of not-dead wires if a signal is present
32 QualityCuts: [ 0.8, 3] # Min points/wire, min consecutive pts after a gap
33 MuonTag: [40, 500, 40, 3] # minLength, minMCSMom, maxWireSkip,(min delta-ray length for muon direction tag)
34 DeltaRayTag: [10, 5, 500] # Tag short TJs as delta-rays close to muons [min sep, min MCSMom, max MCSMom]
35 # 0 1 2 3 4 5 6 7 8 9 10 11 12
36 ShowerTag: [ 1, 100, 10, 50, 2.5, 1, 0, 3, 5, 0.7, 1, 10, -13]
37 # 0 Mode (<= 0 OFF, 1 = tag only, 2 = find showers)
38 # 1 Max Tj MCSMom for a shower tag
42 # 5 Min shower 1/2 width (WSE units)
43 # 6 Min ElectronLikelihood (if > 0)
49 # 12 Print 2D showers in plane (0,1,2) or all planes (3) or just 3D matching (4)
53 ChkStopCuts: [10, 8, 1.5] # [Min chg slope, nFitPts, Chg fit ChiDOF cut]
54 VertexScoreWeights: [1, 2, 10, 2]
55 # 0 = Vertex error weight
57 # 2 = Charge fraction of vertex Tjs near the vertex weight
58 # 3 = Tj MCSMom, ChgRMS, Angle difference significance between Tjs weight
59 Vertex2DCuts: [6, 8, 45, 3, 3, 50, 0.6, 30, 0.8, 0.8] # << NEW increase min Score
60 # 0 User definition of a short Tj => max number of Tj points
61 # 1 max separation between a vertex and the start of a trajectory for a user-defined short Tj
62 # 2 max separation for a user-defined long Tj
63 # 3 max position pull when attaching a Tj to a vertex
64 # 4 max position error for creating a Tj or attaching Tjs to an existing vertex
65 # 5 Min MCSMom of Tjs that can be used to create a vertex
66 # 6 min frac of Points/Wire between a vtx and a Tj. Ideally one if the efficiency is good
68 # 8 Min charge fraction near a vertex or merge point
69 # 9 max MCSmom asymmetry for a merge
70 Vertex3DCuts: [0.8, 2., 3.]
72 # 1 dY and dZ match cut (cm)
73 # 2 max separation btw PFParticle end and 3D vertex
74 Match3DCuts: [ 0.5, 10000, 1, 2, 2.0, 2.5, 1]
75 # 0 dx (cm) matching cut
76 # 1 max number of 3-plane matches for any Tj
77 # 2 Attempt 2-view match?
78 # 3 min number of TP3Ds in at least 2 planes to fit in each PFP section
79 # 4 max pull for adding/rejecting TP3Ds in sections
80 # 5 suggested max ChiDOF for a SectionFit
81 # 6 > 0 Don't match muon shower tjs
82 PFPStitchCuts: [ 0.02, 3, 2 ]
83 # 0 = matching angle resolution (radians)
84 # 1 = matching position resolution (cm)
85 # 2 = max angle-position figure of merit
86 SkipAlgs: [ ] # List of algs that should not be used
89 standard_trajclusteralg.CaloAlg: @local::standard_calorimetryalgmc
91 standard_clustercrawleralg:
93 NumPass: 3 # number of passes through the hit list. 0 = no cluster reco
94 MaxHitsFit: [ 100, 8, 4] # number of hits fitted to a line
95 MinHits: [ 50, 8, 3] # minimum size of a cluster
96 NHitsAve: [ 20, 8, 2] # number of hits to find the average charge and width
97 # at the end of the cluster. NHitsAve should be 1 or 2
98 ChgCut: [ .8, .8, .8] # max fractional hit charge difference for adding hits
99 ChiCut: [ 4, 8, 10] # stop adding hits to clusters if ChiCut is reached
100 MaxWirSkip: [25, 8, 0] # max number of wires to skip without adding a hit
101 MinWirAfterSkip: [2, 2, 1] # min reqd number of consecutive wires with a hit after a skip
102 KinkChiRat: [1.2, 1.2, 0.] # Max consecutive chisq increase for the last 3 hits on the cluster
103 # 0. = no kink check when following
104 KinkAngCut: [0.4, 0.4, 1.5] # kink angle cut (radians) used to follow and merge
105 DoMerge: [false, true, true] # run cluster merging code?
106 TimeDelta: [ 8, 8, 20] # max time difference for cluster merging
107 MergeChgCut: [0.8, 0.8, 0.8] # max charge ratio for cluster merging
108 FindVertices: [true, true, true] # make 2D vertices after clustering?
109 LACrawl: [true, true, true] # crawl Large Angle clusters?
110 LAClusAngleCut: 60 # Large cluster angle cut (0 < 90 degrees). <0 to turn off
111 LAClusMaxHitsFit: 4 #
112 MinHitFrac: 0.6 # Drop clusters having < (#hits/#wires)
113 MinAmp: [5, 5, 5] # Min hit signal amplitude for merging
114 ChgNearWindow: 40 # #of ticks for summing charge near a cluster
115 ChgNearCut: 1.5 # Cluster end is shower-like if (nearby chg)/(cls chg)> cut
116 HitMergeChiCut: 2.5 # Merge cluster hit-multiplets if the separation chisq
117 # is < cut. Set < 0 for no merging
118 MergeAllHits: false # merge all hits before reconstructing clusters
119 MergeOverlapAngCut: 0.1 # Set <= 0 to turn off overlapping cluster merging
120 ChkClusterDS: true # Check reconstruction at DS end of clusters?
121 KillGarbageClusters: 0.1 # Kill ghost clusters, set to 0 to turn off
122 VtxClusterSplit: true # Split clusters that cross vertices
123 FindStarVertices: true # Find vertices with a star topology
124 HitErrFac: 0.2 # hit time error for fitting = fHitErrFac * (hit width)
125 HitMinAmp: 2 # ignore hits with PH < this value
126 ClProjErrFac: 3 # cluster projection error factor
127 AllowNoHitWire: 1 # Allow skipping N wires w no hits (if poor purity)
128 Vertex2DCut: 10 # Max chisq cut for attaching a cluster to a vtx
129 Vertex3DCut: 5 # 2D vtx -> 3D vtx matching cut (chisq)
130 FindHammerClusters: true # look for hammer type clusters
131 RefineVertexClusters: false # (not ready)
132 FindVLAClusters: false # find Very Large Angle clusters (not ready)
133 DebugPlane: -1 # print info only in this plane
134 DebugWire: 0 # set to the Begin Wire and Hit of a cluster to print
135 DebugHit: 0 # out detailed information while crawling
138 standard_blurredclusteralg:
144 ClusterWireDistance: 2
145 ClusterTickDistance: 2
147 NeighboursThreshold: 0
152 ChargeThreshold: 0.07
155 standard_mergeclusteralg:
157 MinMergeClusterSize: 3
158 MaxMergeSeparation: 30
159 ProjWidthThreshold: 0.2
162 standard_houghbasealg:
164 MaxLines: 50 # The maximum number of Hough lines to look for, 20 had been working!
167 NumAngleCells: 20000 # The number of angle cells to create for the Hough transform,
168 RhoResolutionFactor: 5 # Was set to 5
169 MaxDistance: 1.0 # 0.1 was working (okay, not really, larger is probably better,
170 MaxSlope: 80.0 # 80 was working fine previously
174 MissedHits: 1 # Was set to 0
175 MissedHitsDistance: 2.0 #
176 MissedHitsToLineSize: 0.25 # Was set to 0
179 standard_endpointalg:
190 standard_cornerfinderalg:
192 RawDataModuleLabel: "daq"
193 CalDataModuleLabel: "caldata"
194 Trimming_threshold: 10
195 Trimming_totalThreshold: 5e4
196 Conversion_algorithm: "standard"
197 Conversion_function: "TMath::Gaus(x,0,1)*TMath::Gaus(y,0,1)"
198 Conversion_func_neighborhood: 3
199 Conversion_threshold: 0
200 Conversion_bins_per_input_x: 1
201 Conversion_bins_per_input_y: 1
202 Derivative_method: "Sobel" #Noble
203 Derivative_neighborhood: 1
204 Derivative_BlurFunc: "NotImplemented"
205 Derivative_BlurNeighborhood: 5
206 CornerScore_Noble_epsilon: 1e-5
207 CornerScore_Harris_kappa: 0.05
208 CornerScore_neighborhood: 1
209 CornerScore_algorithm: "Nobel" #Harris
210 MaxSuppress_neighborhood: 3
211 MaxSuppress_threshold: 1000
212 Integral_bin_threshold: 5
213 Integral_fraction_threshold: 0.95
223 Method: 0 # 0 -- naive findNeighbor implemention
224 # 1 -- findNeigbors with R*-tree
225 # 2 -- DBScan from the paper with R*-tree
226 Metric: 3 # Which RegionQuery distance metric to use.
227 # **ONLY APPLIES** if Method is 1 or 2.
229 # 0 -- rectangle (no bad channels) **not implemented**
230 # 1 -- Manhattan distance (only uses eps, no bad channels)
231 # **not implemented**
232 # 2 -- Eliptical (no bad channels) **not implemented**
233 # 3 -- findNeighbors-alike: Elliptical and bad
234 # channel aware (not working)
237 standard_dbscan3dalg:
245 standard_tcshoweralg:
247 CalorimetryAlg: @local::standard_calorimetryalgmc
248 ProjectionMatchingAlg: @local::standard_projectionmatchingalg
251 standard_fuzzyclusteralg:
253 RunHough: true # Turns on and off the Hough line finder, useful for diagnostics
254 NumberTimeBoundaries: 3 # Number of boundaries in ticks for the drift window to be divided up to make the Hough line finder easier on memory
255 NumberWireBoundaries: 3 # Number of boundaries in wires for the drift window to be divided up to make the Hough line finder easier on memory
256 GenerateHoughLinesOnly: false # Show only the results of the Hough line finder, hits not in a line will not be clustered
263 RhoResolutionFactor: 5
264 MaxSlope: 80.0 # 80 was working fine previously
268 MissedHits: 1 # Was set to 0
269 MissedHitsDistance: 1.0 #
270 MissedHitsToLineSize: 0.5 # Was set to 0
272 DBScanAlg: @local::standard_dbscanalg
273 DoFuzzyRemnantMerge: true # Tell the algorithm to merge fuzzy cluster remnants into showers or tracks (0-off, 1-on)
274 FuzzyRemnantMergeCutoff: 20 # Cut off on distance from hough line to hit in the remnant of the fuzzy cluster
276 DoTrackClusterMerge: true # Turns on merging of track-like Hough lines (0-off, 1-on)
277 ChargeAsymAngleCut: 0.1 # Cut on product of charge asymmetry and the square of the sin of angle between slopes of lines, only for track-like
278 SigmaChargeAsymAngleCut: 1.0 # Cut on product of charge sigma asymmetry and the sin of angle between slopes of lines, only for track-like
279 TrackClusterMergeCutoff: 5.0 # The maximum distance between track-like Hough line endpoints before they can be merged,
281 DoShowerClusterMerge: true # Turns on merging of shower-like Hough line (0-off, 1-on)
282 ShowerClusterMergeAngle: 30 # The maximum angle between slopes of shower-like lines to be merged,
283 ShowerClusterMergeCutoff: 7.5 # The maximum distance between shower-like line endpoints before they can be merged,
285 DoShowerTrackClusterMerge: true # Turns on merging of shower-like and track-like lines (0-off, 1-on)
286 ShowerTrackClusterMergeAngle: 15 # The maximum angle between slopes of shower-like and track-like lines to be merged,
287 ShowerTrackClusterMergeCutoff: 7.5 # The maximum distance between shower-like and track-like line endpoints before they can be merged,
288 ShowerLikenessCut: 10 # Cut on shower likeness (the larger the more shower like, the smaller the less shower like)
289 MaxVertexLines: 100 # Max number of line end points allowed in a Hough line merge region for a merge to happen
290 VertexLinesCutoff: 5.0 # Size of the vertex region to count up lines for MaxVertexLines
293 standard_clusterparamsalg:
295 ChargeCutoffThreshold: [500,500,1000]
296 SelectBoxSizePar: 10 #distance along axis
297 SelectBoxSizePerp: 3 #distance perpendicular to axis
298 ForceRightGoing: false
301 #HoughBaseAlg.NumAngleCells: 3000
302 #HoughBaseAlg.RhoResolutionFactor: 4
303 #HoughBaseAlg.MaxLines: 100
304 HitDensityCutoff: 1.9 # Showers is high, tracks low, 0 don't use cut
305 MultiHitWireCutoff: 2.1 # Showers is high, tracks low, 0 don't use cut
306 OffAxisHitsCutoff: 0 # Showers is high, tracks low, 0 don't use cut
307 PrincipalComponentCutoff: 0 # Tracks is high ~1, showers low, 0 don't use cut
308 ShowerSelisORorAND: 0 # 0 = OR, 1 = AND
310 HoughBaseAlg: @local::standard_houghbasealg
314 standard_clustermatchalg:
317 StoreSpacePoint: true
318 MatchAlgoList: [0, 1, 2, 3] # Algorithms enum to be enabled
319 CutParam_NumSpacePoint: 100 # Number of minimum space point to claim a cluster by kSpacePoint
320 CutParam_OverlayTimeFraction: 0.0 # Minimum fraction of overlayed time period used by kRoughTime
321 CutParam_SumChargeRatio: 1000.0 # Maximum difference in fraction of clusters' charge sum used by kSumCharge
322 SpacePointAlg: @local::microboone_spacepointalg
324 standard_clustermatchalg.SpacePointAlg.Filter: false
326 standard_clustermergealg:
333 standard_smallclustalg:
335 RadiusSizePar: 3 #radius of circle in "cm"
336 NHitsInClust: 4 # Max Number of hits in cluster
340 standard_clustermatchtq:
348 standard_dbscanalg_fast: @local::standard_dbscanalg
349 standard_dbscanalg_fast.eps: 1.25
350 standard_dbscanalg_fast.epstwo: 1.75
351 standard_dbscanalg_fast.Method: 2
353 jp250L_dbscanalg: @local::standard_dbscanalg
354 jp250L_fuzzyclusteralg: @local::standard_fuzzyclusteralg
355 jp250L_houghbasealg: @local::standard_houghbasealg
356 jp250L_houghbasealg.MaxLines: 15
357 jp250L_houghbasealg.MinHits: 3
358 jp250L_houghbasealg.NumAngleCells: 5000
359 jp250L_houghbasealg.MaxDistance: 5.0
360 jp250L_endpointalg: @local::standard_endpointalg
362 bo_dbscanalg: @local::standard_dbscanalg
363 bo_fuzzyclusteralg: @local::standard_fuzzyclusteralg
364 bo_houghbasealg: @local::standard_houghbasealg
365 bo_houghbasealg.MaxLines: 15
366 bo_houghbasealg.MinHits: 3
367 bo_houghbasealg.NumAngleCells: 5000
368 bo_houghbasealg.MaxDistance: 5.0
369 bo_endpointalg: @local::standard_endpointalg
370 bo_clustercrawleralg: @local::standard_clustercrawleralg
371 bo_clustercrawleralg.NumPass: 1
372 bo_clustercrawleralg.MaxHitsFit: [ 8 ]
373 bo_clustercrawleralg.MinHits: [ 3 ]
374 bo_clustercrawleralg.ChgCut: [ 2. ]
375 bo_clustercrawleralg.WidCut: [ 2. ]
376 bo_clustercrawleralg.ChiCut: [ 20. ]
377 bo_clustercrawleralg.MaxWirSkip: [ 25 ]
378 bo_clustercrawleralg.MinWirAfterSkip: [ 1 ]
379 bo_clustercrawleralg.KinkChiRat: [ 2. ]
380 bo_clustercrawleralg.KinkAngCut: [ 0.5 ]
381 bo_clustercrawleralg.DoMerge: [ true ]
382 bo_clustercrawleralg.TimeDelta: [ 10. ]
383 bo_clustercrawleralg.FindVertices: [ false ]
384 bo_clustercrawleralg.HitErrFac: 1.
385 bo_clustermatchtq: @local::standard_clustermatchtq
387 argoneut_dbscanalg: @local::standard_dbscanalg
388 argoneut_fuzzyclusteralg: @local::standard_fuzzyclusteralg
389 argoneut_houghbasealg: @local::standard_houghbasealg
390 argoneut_houghbasealg.MaxLines: 15
391 argoneut_houghbasealg.MinHits: 3
392 argoneut_houghbasealg.NumAngleCells: 5000
393 argoneut_houghbasealg.MaxDistance: 5.0
394 argoneut_endpointalg: @local::standard_endpointalg
395 argoneut_cornerfinderalg: @local::standard_cornerfinderalg
396 argoneut_clusterparamsalg: @local::standard_clusterparamsalg
397 argoneut_clusterparamsalg.HoughBaseAlg: @local::argoneut_houghbasealg
398 argoneut_clusterparamsalg.HoughBaseAlg.NumAngleCells: 3000
399 argoneut_clusterparamsalg.HoughBaseAlg.RhoResolutionFactor: 4
400 argoneut_clusterparamsalg.HoughBaseAlg.MaxLines: 100
401 argoneut_clusterparamsalg.ChargeCutoffThreshold: [200,400]
402 argoneut_clusterparamsalg.ForceRightGoing: true
403 argoneut_smallclustalg: @local::standard_smallclustalg
404 argoneut_clustermatchtq: @local::standard_clustermatchtq
405 argoneut_clustermatchtq.KSCut: 0.5
408 microboone_dbscanalg: @local::standard_dbscanalg_fast
409 microboone_endpointalg: @local::standard_endpointalg
410 microboone_houghbasealg: @local::standard_houghbasealg
411 microboone_houghbasealg.MaxLines: 20
412 microboone_houghbasealg.MaxDistance: 1.0
413 microboone_houghbasealg.MinHits: 5
414 microboone_houghbasealg.NumAngleCells: 20000
415 microboone_houghbasealg.DoHoughLineMerge: 1
416 microboone_fuzzyclusteralg: @local::standard_fuzzyclusteralg
417 microboone_fuzzyclusteralg.Threshold : -20.0
418 microboone_cornerfinderalg: @local::standard_cornerfinderalg
419 microboone_clusterparamsalg: @local::standard_clusterparamsalg
420 microboone_smallclustalg: @local::standard_smallclustalg
421 microboone_clustercrawleralg: @local::standard_clustercrawleralg
423 microboone_trajclusteralg: @local::standard_trajclusteralg
424 microboone_trajclusteralg.MultHitSep: 3.2
425 microboone_trajclusteralg.MaxWireSkipNoSignal: 2
426 microboone_trajclusteralg.MuonTag: [40, 500, 10, 3]
427 microboone_trajclusteralg.VLAStepSize: 1
428 microboone_trajclusteralg.Vertex2DCuts: [ 6, 8, 45, 3, 3, 50, 0.6, 50, 0.8, 0.8]
430 microboone_clustermatchalg: @local::standard_clustermatchalg
431 microboone_clustermergealg: @local::standard_clustermergealg
432 microboone_clustermatchtq: @local::standard_clustermatchtq
434 dune35t_dbscanalg: @local::standard_dbscanalg_fast
435 dune35t_dbscanalg.eps: 2.0
436 dune35t_dbscanalg.epstwo: 2.0
437 dune35t_houghbasealg: @local::standard_houghbasealg
438 #dune35t_houghbasealg.DoHoughLineMerge: 1
439 dune35t_endpointalg: @local::standard_endpointalg
440 dune35t_fuzzyclusteralg: @local::standard_fuzzyclusteralg
441 dune35t_fuzzyclusteralg.HoughBaseAlg: @local::dune35t_houghbasealg
442 #dune35t_fuzzyclusteralg.Threshold: -50.0
443 dune35t_clustercrawleralg: @local::standard_clustercrawleralg
444 dune35t_clustermatchtq: @local::standard_clustermatchtq
445 dune35t_clustermatchtq.KSCut: 0.7
447 dunefd_dbscanalg: @local::standard_dbscanalg_fast
448 dunefd_houghbasealg: @local::standard_houghbasealg
449 dunefd_endpointalg: @local::standard_endpointalg
450 dunefd_fuzzyclusteralg: @local::standard_fuzzyclusteralg
451 dunefd_fuzzyclusteralg.HoughBaseAlg: @local::dunefd_houghbasealg
452 dunefd_clustercrawleralg: @local::standard_clustercrawleralg
453 dunefd_clustermatchtq: @local::standard_clustermatchtq
454 dunefd_clustermatchtq.KSCut: 0.7