rearranged pma modules
play

Rearranged PMA modules D. Stefan, R. Sulej, T. Yang Review - PowerPoint PPT Presentation

Rearranged PMA modules D. Stefan, R. Sulej, T. Yang Review recommendation: modularization different tracking flows were living in a single module, tracking functionality was also included in the module code tracking functionality extracted to


  1. Rearranged PMA modules D. Stefan, R. Sulej, T. Yang Review recommendation: modularization different tracking flows were living in a single module, tracking functionality was also included in the module code  tracking functionality extracted to algorithm classes  two specialized modules instead of one implemented  some other recommendations done while moving code  Code tested, this is the second part of review recommendations implemented, would like to merge with develop. 1

  2. Review recommendation: modularization different tracking flows were living in a single module, tracking functionality was also included in the module code  tracking functionality extracted to algorithm classes  PMAlgTrackingBase for common things: input data, output of reconstruction, basic PMA algorithms and tracking functionality (actually only helper for isochron tracks is common for two derived algs)  PMAlgTracker : set of methods for matching 2D clusters and building/extending/stiching tracks  PMAlgFitter : more input data (PFParticles and associations), and simple methods to create trajectory fits to track-like objects and segment fits to initial parts of shower-like objects  vertexing functionality avalilable to both algorithms, now used only by „ full ” tracking algorithm (where it is free to decide on track breaking); need to add more simple way of using it with „ fit only ” algorithm (where it could do a good job of fitting many tracks from a single vertex)  but need convention on particle-interaction vertex in input data products…  two specialized modules implemented  PMAlgTrackMaker_module to work on 2D clusters at input and do the complete event topology reconstruction (3D tracks, 3D vertices, particle hierarchy)  PMAlgTrajFitter_module to create only 3D trajectory fits for the elsewhere prepared topology (particles associated to their 2D clusters are the input)  only relevant data products registered  less complicated configuration  no „ if-elses ” in the module flow  some other recommendations done while moving code  FHiCL parameter set validation in all PMA algorithms and modules  no allocated memory out of produce() methods, algorithms are local to produce()  minor cosmetics, e.g.: use art::InputTag instead of std::string labels, use std::make_unique instead of std::unique_ptr constructors 2

  3. Configuration changes # NEW (added algorithm config) # NEW (more clear way to configure em-like tagged clusters) # REMOVED (parameters moved from modules to algorithms) # REMOVED (parameters no longer needed) standard_pmalgtrackmaker: { module_type: "PMAlgTrackMaker" ProjectionMatchingAlg: @local::standard_projectionmatchingalg PMAlgTracking: @local::standard_pmalgtracker PMAlgVertexing: @local::standard_pmavertexalg # # RunVertexing: false # find vertices, join with tracks, reoptimize track-vertex structure SaveOnlyBranchingVtx: false # use true to save only vertices interconnecting many tracks, otherwise # vertex is added to the front of each track SavePmaNodes: false # save track nodes (only for algorithm development purposes) # # MakePFPs: false # PFParticles are always created for „ full tracking ” and never for „ fit-only ” # (then input PFPs are used and reconstructed trajectories are assigned to them) # CluMatchingAlg: 1 # two modules are now used instead of flow options in one module HitModuleLabel: "hits" # unclustered hits are used for tracks validation ClusterModuleLabel: "cluster" # cluster module label, these clusters are used for track building EmClusterModuleLabel: "" # EM-like clusters, will be excluded from tracking if provided # # MinSeedSize1stPass: 20 # min. cluster size used to start building a track in the 1st pass # MinSeedSize2ndPass: 4 # ..and in the 2nd pass: differentiate to speed up finding long tracks # w/o checking large number of possibilities, then use as small size # as reasonnable for used clustering algorithm to complete the search # in the second pass # FlipToBeam: false # set the track direction to increasing Z values # FlipDownward: false # set the track direction to decreasing Y values (like cosmic rays) # AutoFlip_dQdx: false # set the track direction to increasing dQ/dx (overrides FlipToBeam # and FlipDownward if significant rise of dQ/dx at the track end) # MergeWithinTPC: false # merge witnin single TPC; finds tracks best matching by angle, with limits: # MergeTransverseShift: 2.0 # - max. transverse displacement [cm] between tracks # MergeAngle: 2.0 # - max. angle [degree] between tracks (nearest segments) # StitchBetweenTPCs: true # stitch between TPCs; finds tracks best matching by angle, with limits: # StitchDistToWall: 3.0 # - max. track endpoint distance [cm] to TPC boundary # StitchTransverseShift: 3.0 # - max. transverse displacement [cm] between tracks # StitchAngle: 10.0 # - max. angle [degree] between tracks (nearest segments) # MatchT0inAPACrossing: false # match T0 of APA-crossing tracks, TPC stitching limits are used, but track # parts are not stitched into a single recob::Track 3 }

  4. Configuration changes # NEW (fit-only algorithm): # Trajectory fit using PMA. # Input: clusters associated to PFParticles. # Output: 3D trajectories associated to PFParticles. # Simply use all clusters associated to each PFParticle and fit 3D trajectories (no pattern recognition at all, # no corrections to input objects, etc). Resulting trajectories are associated to existing PFPs. standard_pmalgtrajfitter: { module_type: "PMAlgTrajFitter" ProjectionMatchingAlg: @local::standard_projectionmatchingalg PMAlgFitting: @local::standard_pmalgfitter PMAlgVertexing: @local::standard_pmavertexalg # SaveOnlyBranchingVtx: false # use true to save only vertices interconnecting many tracks, otherwise # vertex is added to the front of each track SavePmaNodes: false # save track nodes (only for algorithm development purposes) # HitModuleLabel: "hits" # tag of unclustered hits, which were used to produce PFPs and clusters PfpModuleLabel: "pandora" # tag of the input PFParticles and associated clusters } 4

  5. Configuration changes # NEW (added algorithm config) standard_pmalgtracker: { MinSeedSize1stPass: 20 # min. cluster size used to start building a track in the 1st pass MinSeedSize2ndPass: 4 # ..and in the 2nd pass: differentiate to speed up finding long tracks # w/o checking large number of possibilities, then use as small size # as reasonnable for used clustering algorithm to complete the search # in the second pass # RunVertexing: false # find vertices, join with tracks, reoptimize track-vertex structure # FlipToBeam: false # set the track direction to increasing Z values FlipDownward: false # set the track direction to decreasing Y values (like cosmic rays) AutoFlip_dQdx: false # set the track direction to increasing dQ/dx (overrides FlipToBeam # and FlipDownward if significant rise of dQ/dx at the track end) # MergeWithinTPC: false # merge witnin single TPC; finds tracks best matching by angle, with limits: MergeTransverseShift: 2.0 # - max. transverse displacement [cm] between tracks MergeAngle: 2.0 # - max. angle [degree] between tracks (nearest segments) # StitchBetweenTPCs: true # stitch between TPCs; finds tracks best matching by angle, with limits: StitchDistToWall: 3.0 # - max. track endpoint distance [cm] to TPC boundary StitchTransverseShift: 3.0 # - max. transverse displacement [cm] between tracks StitchAngle: 10.0 # - max. angle [degree] between tracks (nearest segments) # MatchT0inAPACrossing: false # match T0 of APA-crossing tracks, TPC stitching limits are used, but track # parts are not stitched into a single recob::Track } standard_pmalgfitter: { TrackingOnlyPdg: [0] # PDG list to select which PFParticles should be reconstructed; # all PFP's are used if the list is empty or starts with 0 TrackingSkipPdg: [11] # PDG list to select which PFParticles should NOT be reconstructed, # e.g. skip EM showers; no skipping if the list is empty or starts with 0 # RunVertexing: false # find vertices, join with tracks, reoptimize track-vertex structure } 5

Recommend


More recommend