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’.

  1. cell - Each cell of a module has specific ROC elink and channel

  2. motherboard - Each module has a specific ROC elink and polarfire

  3. 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:

EcalDetectorMap

get()

Get the single instance of the EcalDetectorMap

Returns:

Single instance of the provider

Return type:

EcalDetectorMap

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:

HgcrocEmulator

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 )

class LDMX.Ecal.ecalClusters.EcalClusterProducer(name='ecalClusters')

Bases: Producer

Configure the clustering

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.

class LDMX.Ecal.ecal_trig_digi.EcalTrigPrimDigiProducer(instance_name='ecalTrigDigis')

Bases: Producer

Configuration for EcalTrigPrimDigiProducer

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 )

class LDMX.Ecal.vetos.DNNEcalVetoProcessor(name='dnnEcalVeto')

Bases: Producer

Configuration for DNN Ecal Veto

By default, sets the disct_cut to negative 1 so the user is forced to decide on the cut.

class LDMX.Ecal.vetos.EcalVetoProcessor(name='ecalVeto')

Bases: Producer

Configuration for the ECal veto

Module contents