Go Back to: C++ Manual General Site
LDMX.Recon package¶
Submodules¶
LDMX.Recon.beam_electron_locator module¶
Configuration for beam electron locator
Attributes:¶
- input_collectionstring
Name of the input collection, should be one that holds sim hits
- input_pass_namestring
Pass name of the input collection
- output_collectionstring
Name of the output collection, holding the condensed list of beam electron locations
- granularity_X_mmfloat
The expected actual resolution or the bar width in mm of the TS in the X direction
- granularity_Y_mmfloat
The expected actual resolution or the bar width in mm of the TS in the Y direction
- min_granularity_mmfloat
The maximum distance between SimHits that are grouped together as one beam electron
- verboseboolean
If set to true, more information is spit out to either Info or Debug log level
- class LDMX.Recon.beam_electron_locator.BeamElectronLocator(instance_name: str = 'BeamElectronLocator', histograms: list[Histogram] = <factory>, input_collection: str = 'truthBeamElectronsTarget', input_pass_name: str = '', output_collection: str = 'BeamElectronTruthInfo', granularity_x_mm: float = 2.5, granularity_y_mm: float = 1.6666666666666667, min_granularity_mm: float = 0.1, min_x_mm: float = -10.0, max_x_mm: float = 10.0, min_y_mm: float = -40.0, max_y_mm: float = 40.0, verbose: bool = False)¶
Bases:
ProcessorThe name is purely conventional to match the C++ class name for clarity
Examples
from LDMX.Recon.beamElectronLocator import BeamElectronLocator beamEleFinder= BeamElectronLocator(‘beamEleFinder’)
- You can change the parameters after creating this object.
beamEleFinder.my_parameter = 50
- Then you put your processor into the sequence of the process.
p.sequence.append( beamEleFinder )
- class_name: str = 'recon::BeamElectronLocator'¶
- granularity_x_mm: float = 2.5¶
- granularity_y_mm: float = 1.6666666666666667¶
- input_collection: str = 'truthBeamElectronsTarget'¶
- input_pass_name: str = ''¶
- instance_name: str = 'BeamElectronLocator'¶
- max_x_mm: float = 10.0¶
- max_y_mm: float = 40.0¶
- min_granularity_mm: float = 0.1¶
- min_x_mm: float = -10.0¶
- min_y_mm: float = -40.0¶
- module_name: str = 'Recon'¶
- output_collection: str = 'BeamElectronTruthInfo'¶
- verbose: bool = False¶
LDMX.Recon.dictionary module¶
LDMX.Recon.ecal_preselection_skimmer module¶
Configuration for PreselectionProcessor
Sets all the default parameters that high so it leads to no preselection.
Attributes:¶
- use_rechits: bool
If True, use rechit-based preselection. If False, use veto-based preselection (default: False)
Rechit-based mode parameters: ecal_rec_hit_coll: string
Collection Name for ecal rechits
- ecal_rec_hit_pass: string
Pass Name for ecal rechits
Veto-based mode parameters: ecal_veto_name: string
Collection Name for veto object
- ecal_veto_pass: string
Pass Name for veto object
- ecal_mip_name: string
Collection Name for mip result object
- ecal_mip_pass: string
Pass Name for mip result object
Shared parameters (used in both modes): summed_det_max: double
Max value for summed det (veto mode) or total rechit energy sum (rechit mode, MeV)
- n_readout_hits_max: int
Max value for num readout hits (veto mode) or num rechits (rechit mode)
- summed_tight_iso_max: double
Max value for summed tigh iso (veto mode only)
- ecal_back_energy_max: double
Max value for ecal back energy (veto mode only)
- shower_rms_max: double
Max value for shower rms
- shower_y_std_max: double
Max value for shower rms in Y
- shower_x_std_max: double
Max value for shower rms in X
- max_cell_dep_max: double
Max value for maximal cell deposition
- std_layer_hit_max: int
Max value for std layer hits
- n_straight_tracks_max: int
Max value for num straight tracks
- bdt_disc_min: double
Min value for the BDT disc variable
- fiducial_level: int
0: don’t care if it’s fiducial or not, 1: keep fiducial events only, 2: keep non-fid events only
Examples
from LDMX.Recon.ecalPreselectionSkimmer import EcalPreselectionSkimmer
# Veto-based mode (default): ecal_pres_skimmer = EcalPreselectionSkimmer() p.sequence.append( ecal_pres_skimmer )
# Rechit-based mode: ecal_pres_skimmer = EcalPreselectionSkimmer() ecal_pres_skimmer.use_rechits = True ecal_pres_skimmer.ecal_rec_hit_coll = “EcalRecHits” ecal_pres_skimmer.ecal_rec_hit_pass = “” ecal_pres_skimmer.summed_det_max = 4000.0 # MeV (total rechit energy) ecal_pres_skimmer.n_readout_hits_max = 90 # num rechits p.sequence.append( ecal_pres_skimmer )
- class LDMX.Recon.ecal_preselection_skimmer.EcalPreselectionSkimmer(instance_name: str = 'EcalPreselectionSkimmer', histograms: list[Histogram] = <factory>, use_rechits: bool = True, ecal_rec_hit_coll: str = 'EcalRecHits', ecal_rec_hit_pass: str = '', ecal_veto_name: str = 'EcalVeto', ecal_veto_pass: str = '', ecal_mip_name: str = 'EcalMipInfo', ecal_mip_pass: str = '', summed_det_max: float = 4000.0, summed_tight_iso_max: float = 9999.0, ecal_back_energy_max: float = 9999.0, n_readout_hits_max: int = 90, shower_rms_max: float = 9999.0, shower_y_std_max: float = 9999.0, shower_x_std_max: float = 9999.0, max_cell_dep_max: float = 9999.0, std_layer_hit_max: int = 9999, n_straight_tracks_max: int = 9999, bdt_disc_min: float = 0.0, fiducial_level: int = 0)¶
Bases:
ProcessorConfiguration for an ECAL-based pre-selection skimmer
- bdt_disc_min: float = 0.0¶
- class_name: str = 'recon::EcalPreselectionSkimmer'¶
- ecal_back_energy_max: float = 9999.0¶
- ecal_mip_name: str = 'EcalMipInfo'¶
- ecal_mip_pass: str = ''¶
- ecal_rec_hit_coll: str = 'EcalRecHits'¶
- ecal_rec_hit_pass: str = ''¶
- ecal_veto_name: str = 'EcalVeto'¶
- ecal_veto_pass: str = ''¶
- fiducial_level: int = 0¶
- instance_name: str = 'EcalPreselectionSkimmer'¶
- max_cell_dep_max: float = 9999.0¶
- module_name: str = 'Recon'¶
- n_readout_hits_max: int = 90¶
- n_straight_tracks_max: int = 9999¶
- shower_rms_max: float = 9999.0¶
- shower_x_std_max: float = 9999.0¶
- shower_y_std_max: float = 9999.0¶
- std_layer_hit_max: int = 9999¶
- summed_det_max: float = 4000.0¶
- summed_tight_iso_max: float = 9999.0¶
- use_rechits: bool = True¶
LDMX.Recon.electron_counter module¶
Configuration for ElectronCounter
Sets all parameters to reasonable defaults.
Examples
from LDMX.Recon.electron_counter import electron_counter p.sequence.append( electron_counter )
- class LDMX.Recon.electron_counter.ElectronCounter(instance_name: str = 'ElectronCounter', histograms: list[Histogram] = <factory>, simulated_electron_number: int = 1, input_collection: str = 'TriggerPadTracksY', input_pass_name: str = 'truth', output_collection: str = 'BeamElectronCount', use_simulated_electron_number: bool = False)¶
Bases:
ProcessorConfiguration for the event beam electron counter
- class_name: str = 'recon::ElectronCounter'¶
- input_collection: str = 'TriggerPadTracksY'¶
- input_pass_name: str = 'truth'¶
- instance_name: str = 'ElectronCounter'¶
- module_name: str = 'Recon'¶
- output_collection: str = 'BeamElectronCount'¶
- simulated_electron_number: int = 1¶
- use_simulated_electron_number: bool = False¶
LDMX.Recon.fiducial_flag module¶
- class LDMX.Recon.fiducial_flag.RecoilFiducialityProcessor(instance_name: str = 'RecoilFiducialityProcessor', histograms: list[LDMX.Framework._histogram.Histogram] = <factory>, min_p_mag: float = 50.0, min_tracker_hits: int = 5, input_pass_name: str = '', ecal_collection: str = 'EcalSimHits', hcal_collection: str = 'HcalSimHits', recoil_collection: str = 'RecoilSimHits', output_collection: str = 'RecoilTruthFiducialFlags', inverse_skim: bool = False)¶
Bases:
Processor- class_name: str = 'recon::RecoilFiducialityProcessor'¶
- ecal_collection: str = 'EcalSimHits'¶
- hcal_collection: str = 'HcalSimHits'¶
- input_pass_name: str = ''¶
- instance_name: str = 'RecoilFiducialityProcessor'¶
- inverse_skim: bool = False¶
- min_p_mag: float = 50.0¶
- min_tracker_hits: int = 5¶
- module_name: str = 'Recon'¶
- output_collection: str = 'RecoilTruthFiducialFlags'¶
- recoil_collection: str = 'RecoilSimHits'¶
LDMX.Recon.my_processor module¶
Example configuration object for a processor
- class LDMX.Recon.my_processor.MyProcessor(instance_name: str = 'MyProcessor', histograms: list[Histogram] = <factory>, my_parameter: int = 20, ecal_rechits_passname: str = '', ecal_rec_hits_event_passname: str = '')¶
Bases:
ProcessorThe name is purely conventional to match the C++ class name for clarity
The @processor decorator and Processor base class handle the registration with the framework. You need to give the actual C++ class name with namespace(s) as the first argument, and the name of the module the C++ class is in as the second argument.
Any class-level attributes define parameters that are accessible in the C++ configure method. For example, the attribute
my_parameter: int = 20
defines an integer parameter for this class which can be accessed in the configure method with
int my_parameter = parameters.get<int>(“my_parameter”);
Examples
Creating the configuration object gives the parameters set in the class definition.
myProc = MyProcessor( instance_name=’myProc’)
- You can also change the parameters after creating this object.
myProc.my_parameter = 50
- Then you put your processor into the sequence of the process.
p.sequence.append( myProc )
- class_name: str = 'recon::MyProcessor'¶
- ecal_rec_hits_event_passname: str = ''¶
- ecal_rechits_passname: str = ''¶
- instance_name: str = 'MyProcessor'¶
- module_name: str = 'Recon'¶
- my_parameter: int = 20¶
LDMX.Recon.overlay module¶
Configuration for overlay
- param overlay_filename:
The name of the file containing the pileup events to overlay on the sim event
- type overlay_filename:
string
- param Attributes:
- param ————-:
- param sim_passname:
Pass name of the sim events
- type sim_passname:
string
- param overlay_passname:
Pass name of the pileup events
- type overlay_passname:
string
- param calo_collections:
List of SimCalorimeterHit collections to pull from the sim and pileup events and combine
- type calo_collections:
string
- param tracker_collections:
List of SimTrackerHit collections to pull from the sim and pileup events and combine
- type tracker_collections:
string
- param particle_collections:
List of SimParticles collections to pull from the sim and pileup events and combine.
- type particle_collections:
list[str]
- param contrib_collections:
List of SimCalorimeterHit collections which need contribs added separately.
- type contrib_collections:
list[str]
- param poisson_mu:
The total number of interactions combined (including the sim event)
- type poisson_mu:
int
- param do_poisson_in_time:
- Specifies whether to sample a Poisson(totalNumberOfInteractions)
to obtain the number of events to combine in-time
with the sim event (doPoissonIntime=true), or deterministically set nOverlay=totalNumberOfInteractions-1
(doPoissonIntime = false)
- type do_poisson_in_time:
bool
- param do_poisson_out_of_time:
Specifies whether to sample a Poisson(totalNumberOfInteractions) to obtain the number of events to put in bunches that are out-of-time with the sim event (doPoissonOutoftime=true), or deterministically set nOverlay=totalNumberOfInteractions-1
(doPoissonOutoftime = false)
- type do_poisson_out_of_time:
bool
- param time_sigma:
The width of a single bunch in time (expressed in sigma) [ns]
- type time_sigma:
float
- param time_mean:
The average time, relative to the sim time, of the pileup events [ns]. Note that this should generally be 0. A non-zero number combined with a 0 spread is useful for debugging.
- type time_mean:
float
- param n_earlier:
The number of preceding bunches sampled for out-of-time pileup. Furthermore, pileup will be uniformly distributed among this number of bunches m = -N_earlier, -N_earlier+1, …, N_later while the sim event is always in bunch m = 0.
- type n_earlier:
int
- param n_later:
The number of following bunches sampled for out-of-time pileup. Furthermore, pileup will be uniformly distributed among this number of bunches m = -N_earlier, -N_earlier+1, …, N_later while the sim event is always in bunch m = 0.
- type n_later:
int
- param bunch_spacing:
The spacing in time between bunches [ns]
- type bunch_spacing:
float
- param start_event_min:
The minimum event number to start overlaying pileup events.
- type start_event_min:
int
- param start_event_max:
The max event number to start overlaying pileup events.
- type start_event_max:
int
- param track_id_encoding:
The version number for the track ID bitwise encoding schema. Possible values range over [0, 15]. The version number is stored in bits 27-31 in the C++ int type.
- type track_id_encoding:
int
- class LDMX.Recon.overlay.OverlayProducer(instance_name: str = 'OverlayProducer', histograms: list[Histogram] = <factory>, overlay_filename: str = '', sim_passname: str = 'sim', overlay_passname: str = 'sim', calo_collections: list[str] = <factory>, tracker_collections: list[str] = <factory>, particle_collections: list[str] = <factory>, contrib_collections: list[str] = <factory>, out_coll_postfix: str = 'Overlay', poisson_mu: float = 2.0, do_poisson_in_time: bool = False, do_poisson_out_of_time: bool = False, time_sigma: float = 0.0, time_mean: float = 0.0, n_earlier: int = 0, n_later: int = 0, bunch_spacing: float = 26.9, tree_name: str = 'LDMX_Events', start_event_min: int = 1, start_event_max: int = 10000, track_id_encoding: int = 1)¶
Bases:
ProcessorConfiguration for pileup overlay
Sets all parameters to reasonable defaults.
Examples
from LDMX.Recon.overlay import OverlayProducer p.sequence.append( OverlayProducer(
overlay_filename=’myPileupFileName.root’ )
)
- bunch_spacing: float = 26.9¶
- calo_collections: list[str]¶
- class_name: str = 'recon::OverlayProducer'¶
- contrib_collections: list[str]¶
- do_poisson_in_time: bool = False¶
- do_poisson_out_of_time: bool = False¶
- instance_name: str = 'OverlayProducer'¶
- module_name: str = 'Recon'¶
- n_earlier: int = 0¶
- n_later: int = 0¶
- out_coll_postfix: str = 'Overlay'¶
- overlay_filename: str = ''¶
- overlay_passname: str = 'sim'¶
- particle_collections: list[str]¶
- poisson_mu: float = 2.0¶
- sim_passname: str = 'sim'¶
- start_event_max: int = 10000¶
- start_event_min: int = 1¶
- time_mean: float = 0.0¶
- time_sigma: float = 0.0¶
- track_id_encoding: int = 1¶
- tracker_collections: list[str]¶
- tree_name: str = 'LDMX_Events'¶
LDMX.Recon.pf_reco module¶
Configuration for pfReco producers
Sets all parameters to reasonable defaults.
Examples
from LDMX.Recon.pf_reco import PFEcalClusterProducer p.sequence.append( PFEcalClusterProducer )
- class LDMX.Recon.pf_reco.PFEcalClusterProducer(instance_name: str = 'PFEcalClusterProducer', histograms: list[Histogram] = <factory>, hit_coll_name: str = 'EcalRecHits', hit_pass_name: str = '', cluster_coll_name: str = 'PFEcalClusters', do_single_cluster: bool = False, log_energy_weight: bool = True, min_cluster_hit_mult: int = 2, cluster_hit_dist: float = 50.0, min_hit_energy: float = 1.0)¶
Bases:
ProcessorConfiguration for Ecal cluster builder for particle reco
- class_name: str = 'recon::PFEcalClusterProducer'¶
- cluster_coll_name: str = 'PFEcalClusters'¶
- cluster_hit_dist: float = 50.0¶
- do_single_cluster: bool = False¶
- hit_coll_name: str = 'EcalRecHits'¶
- hit_pass_name: str = ''¶
- instance_name: str = 'PFEcalClusterProducer'¶
- log_energy_weight: bool = True¶
- min_cluster_hit_mult: int = 2¶
- min_hit_energy: float = 1.0¶
- module_name: str = 'Recon'¶
- class LDMX.Recon.pf_reco.PFHcalClusterProducer(instance_name: str = 'PFHcalClusterProducer', histograms: list[Histogram] = <factory>, hit_coll_name: str = 'HcalRecHits', hit_pass_name: str = '', cluster_coll_name: str = 'PFHcalClusters', do_single_cluster: bool = False, log_energy_weight: bool = True, min_cluster_hit_mult: int = 2, cluster_hit_dist: float = 100.0, min_hit_energy: float = 0.1)¶
Bases:
ProcessorConfiguration for Hcal cluster builder for particle reco
- class_name: str = 'recon::PFHcalClusterProducer'¶
- cluster_coll_name: str = 'PFHcalClusters'¶
- cluster_hit_dist: float = 100.0¶
- do_single_cluster: bool = False¶
- hit_coll_name: str = 'HcalRecHits'¶
- hit_pass_name: str = ''¶
- instance_name: str = 'PFHcalClusterProducer'¶
- log_energy_weight: bool = True¶
- min_cluster_hit_mult: int = 2¶
- min_hit_energy: float = 0.1¶
- module_name: str = 'Recon'¶
- class LDMX.Recon.pf_reco.PFProducer(instance_name: str = 'ParticleFlow', histograms: list[Histogram] = <factory>, input_ecal_coll_name: str = 'PFEcalClusters', input_hcal_coll_name: str = 'PFHcalClusters', input_track_coll_name: str = 'PFTracks', use_existing_ecal_clusters: bool = False, output_coll_name: str = 'PFCandidates', single_particle: bool = False, input_ecal_passname: str = '', input_hcal_passname: str = '', input_tracks_passname: str = '')¶
Bases:
ProcessorConfiguration for particle reco
- class_name: str = 'recon::ParticleFlow'¶
- input_ecal_coll_name: str = 'PFEcalClusters'¶
- input_ecal_passname: str = ''¶
- input_hcal_coll_name: str = 'PFHcalClusters'¶
- input_hcal_passname: str = ''¶
- input_track_coll_name: str = 'PFTracks'¶
- input_tracks_passname: str = ''¶
- instance_name: str = 'ParticleFlow'¶
- module_name: str = 'Recon'¶
- output_coll_name: str = 'PFCandidates'¶
- single_particle: bool = False¶
- use_existing_ecal_clusters: bool = False¶
- class LDMX.Recon.pf_reco.PFTrackProducer(instance_name: str = 'PFTrackProducer', histograms: list[Histogram] = <factory>, input_track_coll_name: str = 'EcalScoringPlaneHits', input_pass_name: str = '', output_track_coll_name: str = 'PFTracks', do_electron_tracking: bool = False, min_electron_momentum_z: float = 2500.0, max_electron_track_id: int = 30)¶
Bases:
ProcessorConfiguration for track selector for particle reco
- class_name: str = 'recon::PFTrackProducer'¶
- do_electron_tracking: bool = False¶
- input_pass_name: str = ''¶
- input_track_coll_name: str = 'EcalScoringPlaneHits'¶
- instance_name: str = 'PFTrackProducer'¶
- max_electron_track_id: int = 30¶
- min_electron_momentum_z: float = 2500.0¶
- module_name: str = 'Recon'¶
- output_track_coll_name: str = 'PFTracks'¶
- class LDMX.Recon.pf_reco.PFTruthProducer(instance_name: str = 'PFTruthProducer', histograms: list[Histogram] = <factory>, output_primary_coll_name: str = 'PFTruth', output_target_coll_name: str = 'PFTruthTarget', output_ecal_coll_name: str = 'PFTruthEcal', output_hcal_coll_name: str = 'PFTruthHcal', target_sp_coll_name: str = 'TargetScoringPlaneHits', target_sp_passname: str = '', ecal_sp_coll_name: str = 'EcalScoringPlaneHits', ecal_sp_passname: str = '', sim_particles_coll_name: str = 'SimParticles', sim_particles_passname: str = '', sim_particles_event_passname: str = '', ecal_sp_hits_event_passname: str = '', target_sp_hits_event_passname: str = '')¶
Bases:
ProcessorConfiguration for track selector for particle reco
- class_name: str = 'recon::PFTruthProducer'¶
- ecal_sp_coll_name: str = 'EcalScoringPlaneHits'¶
- ecal_sp_hits_event_passname: str = ''¶
- ecal_sp_passname: str = ''¶
- instance_name: str = 'PFTruthProducer'¶
- module_name: str = 'Recon'¶
- output_ecal_coll_name: str = 'PFTruthEcal'¶
- output_hcal_coll_name: str = 'PFTruthHcal'¶
- output_primary_coll_name: str = 'PFTruth'¶
- output_target_coll_name: str = 'PFTruthTarget'¶
- sim_particles_coll_name: str = 'SimParticles'¶
- sim_particles_event_passname: str = ''¶
- sim_particles_passname: str = ''¶
- target_sp_coll_name: str = 'TargetScoringPlaneHits'¶
- target_sp_hits_event_passname: str = ''¶
- target_sp_passname: str = ''¶
LDMX.Recon.pileup_finder module¶
Configuration for pfReco producers
Sets all parameters to reasonable defaults.
Examples
from LDMX.Recon import pileup_finder p.sequence.append( PileupFinder )
- class LDMX.Recon.pileup_finder.PileupFinder(instance_name: str = 'PileupFinder', histograms: list[Histogram] = <factory>, rec_hit_coll_name: str = 'EcalRecHits', rec_hit_pass_name: str = '', cluster_coll_name: str = 'PFEcalClusters', cluster_pass_name: str = '', pf_cand_coll_name: str = 'PFCandidates', pf_cand_pass_name: str = '', output_rec_hit_coll_name: str = 'EcalRecHitsNoPileup', min_momentum: float = 4000.0)¶
Bases:
ProcessorConfiguration for pileup finding from particle flow objects
- class_name: str = 'recon::PileupFinder'¶
- cluster_coll_name: str = 'PFEcalClusters'¶
- cluster_pass_name: str = ''¶
- instance_name: str = 'PileupFinder'¶
- min_momentum: float = 4000.0¶
- module_name: str = 'Recon'¶
- output_rec_hit_coll_name: str = 'EcalRecHitsNoPileup'¶
- pf_cand_coll_name: str = 'PFCandidates'¶
- pf_cand_pass_name: str = ''¶
- rec_hit_coll_name: str = 'EcalRecHits'¶
- rec_hit_pass_name: str = ''¶
LDMX.Recon.simple_seq_trigger module¶
Configuration for TriggerProcessor
Sets all parameters to reasonable defaults.
Attributes:¶
- trigger_list
the collection of each trigger we perform sequential skimming with.
- trigger_pass_names
our input pass names for the multiple trigger.
- doORbool
skimmer checks if one trigger is true
- doANDbool
skimmer checks if all triggers are true
- doVALbool
skimmer produces an output collection for the purpose of validation
- class LDMX.Recon.simple_seq_trigger.SequentialTrigger(instance_name: str = 'SequentialTrigger', histograms: list[Histogram] = <factory>, trigger_list: list[str] = <factory>, trigger_pass_names: list[str] = <factory>, do_or: bool = False, do_and: bool = True, do_val: bool = True)¶
Bases:
ProcessorConfiguration for the sequential trigger (skimmer) on the ECal reco hits
- class_name: str = 'recon::SequentialTrigger'¶
- do_and: bool = True¶
- do_or: bool = False¶
- do_val: bool = True¶
- instance_name: str = 'SequentialTrigger'¶
- module_name: str = 'Recon'¶
- trigger_list: list[str]¶
- trigger_pass_names: list[str]¶
LDMX.Recon.simple_trigger module¶
Configuration for TriggerProcessor
Sets all parameters to reasonable defaults.
Attributes:¶
- beam_energyfloat
The beam energy in MeV
- thresholdslist of floats
The upper limit on Ecal reconstructed hit energy sum (in MeV) allowed for the event to pass the trigger. Calculated as a sum over the specified number of layers. The processor assumes that the first element in the list is for 1e, 2nd is for 2e, etc: [ my_cut_for_1e, my_cut_for_2e, … ] If the electron count exceeds the number of elements, the 1e threshold and a simple formula subtracting a multiple of the beam energy is used.
- modeint
Legacy parameter for which energy calculation mode to use. Defaults to 0 (layer sums). mode = 1 is for tower sums, currently not implemented.
- start_layerint
First layer used in the Ecal energy sum over layers.
- end_layerint
First layer not used in the Ecal energy sum over layers. So, the last used layer is end_layer-1.
- input_collectionstring
Name of the Ecal hit collection used as input
- trigger_collectionstring
Name of the output collection containing the trigger result
Examples
from LDMX.Recon.simple_trigger import simple_trigger p.sequence.append( simple_trigger )
- class LDMX.Recon.simple_trigger.TriggerProcessor(instance_name: str = 'TriggerProcessor', histograms: list[Histogram] = <factory>, beam_energy: float = 8000.0, thresholds: list[float] = <factory>, mode: int = 0, start_layer: int = 0, end_layer: int = 20, input_collection: str = 'EcalRecHits', input_pass: str = '', trigger_collection: str = 'Trigger')¶
Bases:
ProcessorConfiguration for the (multi-electron aware but simple) trigger on the ECal reco hits
- beam_energy: float = 8000.0¶
- class_name: str = 'recon::TriggerProcessor'¶
- end_layer: int = 20¶
- input_collection: str = 'EcalRecHits'¶
- input_pass: str = ''¶
- instance_name: str = 'TriggerProcessor'¶
- mode: int = 0¶
- module_name: str = 'Recon'¶
- start_layer: int = 0¶
- thresholds: list[float]¶
- trigger_collection: str = 'Trigger'¶
LDMX.Recon.track_dedx_mass_estimator module¶
Configuration for TrackDeDxMassEstimator
The tracker dE/dx vs momentum 2d distribution profile histogram can be fitted using an approximated Bethe-Bloch parametrization at low relativistic regime:
dE/dx = K * m^2 / p^2 + C,
where m is the particle mass, p is the particle momentum, K and C are fit parameters. Using the fitted result of the parameters, the mass of the particle can be calculated from its dE/dx and momentum.
Attributes:¶
- track_collectionstring
Name of the track collection used as input
- fit_res_cfloat
The fitted result of the constant term C (unit: MeV/mm)
- fit_res_kfloat
The fitted result of the factor K of the quadratic term (dimentionless)
Examples
from LDMX.Recon.track_dedx_mass_estimator import recoil_track_mass_estimator p.sequence.append( recoil_track_mass_estimator )
- class LDMX.Recon.track_dedx_mass_estimator.TrackDeDxMassEstimator(instance_name: str = 'TrackDeDxMassEstimator', histograms: list[Histogram] = <factory>, track_collection: str = 'RecoilTruthTracks', fit_res_c: float = 3.094, fit_res_k: float = 1.862)¶
Bases:
ProcessorConfiguration for the mass estimator from tracker dEdx
- class_name: str = 'recon::TrackDeDxMassEstimator'¶
- fit_res_c: float = 3.094¶
- fit_res_k: float = 1.862¶
- instance_name: str = 'TrackDeDxMassEstimator'¶
- module_name: str = 'Recon'¶
- track_collection: str = 'RecoilTruthTracks'¶