Go Back to: C++ Manual General Site
LDMX.Ecal package¶
Submodules¶
LDMX.Ecal.EcalDetectorMap module¶
Conditions object providers for a mapping between ecal electronics IDs and detector IDs
- class LDMX.Ecal.EcalDetectorMap.EcalDetectorMap(cell_map, motherboard_map, layer_map, want_d2e=False)¶
Bases:
ConditionsObjectProvider
The COP that maps between Electronic and Detector IDs.
The mapping is defined in three ‘tiers’.
cell - Each cell of a module has specific ROC elink and channel
motherboard - Each module has a specific ROC elink and polarfire
layer - Each layer has specific daq optical link
So three CSV tables are necessary for providing this mapping. We can’t have multiple different detector maps during a single run, so this class is meant to be a singleton.
- __instance¶
Singleton instance of this object
- Type:
- get()¶
Get the single instance of the EcalDetectorMap
- Returns:
Single instance of the provider
- Return type:
LDMX.Ecal.EcalGeometry module¶
LDMX.Ecal.digi module¶
Package to configure the ECal digitization pipeline
All classes are derived versions of LDMX.Framework.ldmxcfg.Producer with helpful member functions.
Two module-wide parameters are defined.
- LDMX.Ecal.digi.n_kelectrons_per_mip¶
Number of thousand e-h pairs created for each MIP in 0.5mm thick Si
- Type:
float
- LDMX.Ecal.digi.mip_si_energy¶
Energy [MeV] of a single MIP on average in 0.5mm thick Si
- Type:
float
- class LDMX.Ecal.digi.EcalDigiProducer(instance_name='ecalDigis', si_thickness=0.3)¶
Bases:
Producer
Configuration for EcalDigiProducer
- Parameters:
si_thickness (float) – thickness of silicon sensitive layers in mm
- hgcroc¶
Configuration for the chip emulator
- Type:
- MeV¶
Conversion between energy [MeV] and voltage [mV]
- Type:
float
- avgReadoutThreshold¶
Average readout threshold for all channels [mV], for noise emulation
- Type:
float
- avgPedestal¶
Average pedestal for all channels [mV], for noise emulation
- Type:
float
- zero_suppresion¶
Should we suppress pure noise “hits” below readout threshold?
- Type:
bool
- inputCollName¶
Name of simulated ecal hits to digitize
- Type:
str
- inputPassName¶
Name of pass to digitize
- Type:
str
- digiCollName¶
Output name of digis put into event bus
- Type:
str
- LDMX.Ecal.digi.EcalHgcrocEmulator()¶
Get an HGCROC emulator and configure for the ECal specifically
This sets the pulse shape parameters to the ones from a fit to a test readout of an ECal module and then thresholds to the default construction using 37k electrons as the number of electrons per MIP.
- class LDMX.Ecal.digi.EcalRecProducer(instance_name='ecalRecon')¶
Bases:
Producer
Configuration for the EcalRecProducer
The layer weights and second order energy correction change when the ECal geometry changes, so we have setup various options for the different possible ECal geometries and their associated layer weights.
- MeV_per_mV¶
Conversion from voltage [mV] to energy [MeV]
- Type:
float
- mip_si_energy¶
Copied from module-wide mip_si_energy [MeV]
- Type:
float
- clock_cycle¶
Time for one DAQ clock cycle to pass [ns]
- Type:
float
- digiCollName¶
Name of digi collection
- Type:
str
- digiPassName¶
Name of digi pass
- Type:
str
- simHitCollName¶
Name of sim collection to check for pure noise hits
- Type:
str
- simHitPassName¶
Name of sim pass
- Type:
str
- recHitCollName¶
Name of output collection
- Type:
str
- secondOrderEnergyCorrection¶
Correction to weighted energy
- Type:
float
- layerWeights¶
Weighting factors depending on layer index
- Type:
list of floats
- reduced_v2()¶
Generated for the reduced v2 geometry
TODO: The secondOrderEnergyCorrection for this geometry has yet to be calculated, so the v14 secondOrderEnergyCorrection is being used as a placeholder.
- v12()¶
These layerWeights and energy correction were calculated for the v12 geometry.
The second order energy correction is determined by comparing the mean of 1M single 4GeV electron events with 4GeV.
- v14()¶
Generated for the v14 geometry
The secondOrderEnergyCorrection is deteremined by generating 1M single 4GeV electron events shot directly into the front of the ECal from immediately upstream. The mean of the resulting total recon energy is found by fitting a two-sided normal distribution (one mean, a low and high deviation) to the histogram.
- v2()¶
These layerWeights and energy correction were calculated at least before v3 geometry.
The second order energy correction is determined by comparing the mean of 1M single 4GeV electron events with 4GeV.
- v9()¶
These layerWeights and energy correction were calculated for the v9 geometry.
The second order energy correction is determined by comparing the mean of 1M single 4GeV electron events with 4GeV.
LDMX.Ecal.ecalClusters module¶
Configuration for the EcalClusterProducer
Examples
from LDMX.Ecal.ecalClusters import ecalClusters p.sequence.append( ecalClusters )
LDMX.Ecal.ecal_hardcoded_conditions module¶
LDMX.Ecal.ecal_trig_digi module¶
Package to configure the ECal trigger digitization
All classes are derived versions of LDMX.Framework.ldmxcfg.Producer with helpful member functions.
LDMX.Ecal.makePath module¶
Helpful python configuration functions for getting the path to installed data files.
- This file was configured by cmake for the installation of ldmx-sw at
/home/runner/work/ldmx-sw/ldmx-sw/install
- LDMX.Ecal.makePath.makeBDTPath(BDTname)¶
Get the full path to the installed BDT files
Exits entire python script if file does not exist.
- Parameters:
BDTname (str) – Name of BDT file to make path for (no extension)
- Returns:
full path to installed data file
- Return type:
str
Examples
ecalVeto.bdt_file = makeBDTPath( ‘gabrielle’ )
- LDMX.Ecal.makePath.makeRoCPath(RoCname)¶
Get the full path to the RoC csv file
Exits entire python script if file does not exist.
- Parameters:
RoCname (str) – Name of RoC file to make path for (no extension)
- Returns:
full path to installed data file
- Return type:
str
Examples
ecalVeto.roc_file = makeRoCPath( ‘RoC_v14_8gev’ )
LDMX.Ecal.vetos module¶
Configuration for Ecal veto
Examples
from LDMX.Ecal.ecalVeto import ecalVeto p.sequence.append( ecalVeto )