Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-01 23:40:29

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 import SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi as digiparam
0004 import RecoLocalCalo.HGCalRecProducers.HGCalUncalibRecHit_cfi as recoparam
0005 import RecoLocalCalo.HGCalRecProducers.HGCalRecHit_cfi as recocalibparam 
0006 from . import hgcalLayersCalibrationCoefficients_cfi as layercalibparam
0007 
0008 
0009 feCfg_si = digiparam.hgceeDigitizer.digiCfg.feCfg
0010 feCfg_sc = digiparam.hgchebackDigitizer.digiCfg.feCfg
0011 
0012 # trigger cell LSB before compression is the LSB of the ADC
0013 triggerCellLsbBeforeCompression_si = float(feCfg_si.adcSaturation_fC.value())/(2**float(feCfg_si.adcNbits.value()))
0014 triggerCellLsbBeforeCompression_sc = float(feCfg_sc.adcSaturation_fC.value())/(2**float(feCfg_sc.adcNbits.value()))
0015 
0016 # Linearization parameters for silicon
0017 linearization_params_si = cms.PSet(
0018         linLSB = cms.double(triggerCellLsbBeforeCompression_si),
0019         adcsaturation = feCfg_si.adcSaturation_fC,
0020         tdcnBits = feCfg_si.tdcNbits,
0021         tdcOnset = feCfg_si.tdcOnset_fC,
0022         adcnBits = feCfg_si.adcNbits,
0023         tdcsaturation = feCfg_si.tdcSaturation_fC,
0024         linnBits = cms.uint32(17),
0025          oot_coefficients = cms.vdouble(0., 0.), # OOT PU subtraction coeffs for samples (bx-2, bx-1). (0,0) = no OOT PU subtraction
0026         )
0027 
0028 # Linearization parameters for scintillator
0029 linearization_params_sc = cms.PSet(
0030         linLSB = cms.double(triggerCellLsbBeforeCompression_sc),
0031         adcsaturation = feCfg_sc.adcSaturation_fC,
0032         tdcnBits = feCfg_sc.tdcNbits,
0033         tdcOnset = feCfg_sc.tdcOnset_fC,
0034         adcnBits = feCfg_sc.adcNbits,
0035         tdcsaturation = feCfg_sc.tdcSaturation_fC,
0036         linnBits = cms.uint32(17),
0037          oot_coefficients = cms.vdouble(0., 0.), # OOT PU subtraction coeffs for samples (bx-2, bx-1). (0,0) = no OOT PU subtraction
0038         )
0039 
0040 summation_params = cms.PSet(
0041         siliconCellLSB_fC =  cms.double(triggerCellLsbBeforeCompression_si),
0042         scintillatorCellLSB_MIP = cms.double(triggerCellLsbBeforeCompression_sc),
0043         noiseSilicon = cms.PSet(),
0044         noiseScintillator = cms.PSet(),
0045         # cell thresholds before TC sums
0046         # Cut at 3sigma of the noise
0047         noiseThreshold = cms.double(3), # in units of sigmas of the noise
0048         )
0049 
0050 # Compression parameters for low density modules
0051 compression_params_ldm = cms.PSet(
0052         exponentBits = cms.uint32(4),
0053         mantissaBits = cms.uint32(3),
0054         truncationBits = cms.uint32(1),
0055         rounding = cms.bool(True),
0056         )
0057 # Compression parameters for high density modules
0058 compression_params_hdm = cms.PSet(
0059         exponentBits = cms.uint32(4),
0060         mantissaBits = cms.uint32(3),
0061         truncationBits = cms.uint32(3),
0062         rounding = cms.bool(True),
0063         )
0064 
0065 # Reco calibration parameters
0066 fCperMIPee = recoparam.HGCalUncalibRecHit.HGCEEConfig.fCPerMIP
0067 fCperMIPhe = recoparam.HGCalUncalibRecHit.HGCHEFConfig.fCPerMIP
0068 fCperMIPnose = recoparam.HGCalUncalibRecHit.HGCHFNoseConfig.fCPerMIP
0069 layerWeightsNose = recocalibparam.dEdX.weightsNose
0070 thicknessCorrectionSi = recocalibparam.HGCalRecHit.thicknessCorrection
0071 thicknessCorrectionSc = recocalibparam.HGCalRecHit.sciThicknessCorrection
0072 thicknessCorrectionNose = recocalibparam.HGCalRecHit.thicknessNoseCorrection
0073 
0074 NTHICKNESS = 3
0075 calibration_params_ee = cms.PSet(
0076         lsb = cms.double(triggerCellLsbBeforeCompression_si),
0077         fCperMIP = fCperMIPee,
0078         dEdXweights = layercalibparam.triggerWeights.weights,
0079         thicknessCorrection = cms.vdouble(thicknessCorrectionSi[0:NTHICKNESS]),
0080         chargeCollectionEfficiency = cms.PSet(),
0081         )
0082 
0083 calibration_params_hesi = cms.PSet(
0084         lsb = cms.double(triggerCellLsbBeforeCompression_si),
0085         fCperMIP = fCperMIPhe,
0086         dEdXweights = layercalibparam.triggerWeights.weights,
0087         thicknessCorrection = cms.vdouble(thicknessCorrectionSi[NTHICKNESS:2*NTHICKNESS]),
0088         chargeCollectionEfficiency = cms.PSet(),
0089         )
0090 
0091 calibration_params_hesc = cms.PSet(
0092         lsb = cms.double(triggerCellLsbBeforeCompression_sc),
0093         fCperMIP = cms.vdouble(1.),
0094         dEdXweights = layercalibparam.triggerWeights.weights,
0095         thicknessCorrection = cms.vdouble(thicknessCorrectionSc.value()),
0096         chargeCollectionEfficiency = cms.PSet(values=cms.vdouble(1.)),
0097         )
0098 
0099 calibration_params_nose = cms.PSet(
0100         lsb = cms.double(triggerCellLsbBeforeCompression_si),
0101         fCperMIP = fCperMIPnose,
0102         dEdXweights = layerWeightsNose,
0103         thicknessCorrection = thicknessCorrectionNose,
0104         chargeCollectionEfficiency = cms.PSet(),
0105         )
0106 
0107 vfe_proc = cms.PSet( ProcessorName = cms.string('HGCalVFEProcessorSums'),
0108                      linearizationCfg_si = linearization_params_si,
0109                      linearizationCfg_sc = linearization_params_sc,
0110                      summationCfg = summation_params,
0111                      compressionCfg_ldm = compression_params_ldm,
0112                      compressionCfg_hdm = compression_params_hdm,
0113                      calibrationCfg_ee = calibration_params_ee,
0114                      calibrationCfg_hesi = calibration_params_hesi,
0115                      calibrationCfg_hesc = calibration_params_hesc,
0116                      calibrationCfg_nose = calibration_params_nose,
0117                      )
0118 
0119 # isolate these refs in case they aren't available in some other WF
0120 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0121 phase2_hgcal.toModify(summation_params,
0122     noiseSilicon = cms.PSet(refToPSet_ = cms.string("HGCAL_noise_fC")),
0123     noiseScintillator = cms.PSet(refToPSet_ = cms.string("HGCAL_noise_heback")),
0124 )
0125 
0126 phase2_hgcal.toModify(calibration_params_ee,
0127     chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0128 )
0129 phase2_hgcal.toModify(calibration_params_hesi,
0130     chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0131 )
0132 phase2_hgcal.toModify(calibration_params_nose,
0133     chargeCollectionEfficiency = cms.PSet(refToPSet_ = cms.string("HGCAL_chargeCollectionEfficiencies")),
0134 )
0135 
0136 
0137 
0138 l1tHGCalVFEProducer = cms.EDProducer(
0139         "HGCalVFEProducer",
0140         eeDigis = cms.InputTag('simHGCalUnsuppressedDigis:EE'),
0141         fhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEfront'),
0142         bhDigis = cms.InputTag('simHGCalUnsuppressedDigis:HEback'),
0143         ProcessorParameters = vfe_proc.clone()
0144        )
0145 
0146 l1tHFnoseVFEProducer = cms.EDProducer(
0147         "HFNoseVFEProducer",
0148         noseDigis = cms.InputTag('simHFNoseUnsuppressedDigis:HFNose'),
0149         ProcessorParameters = vfe_proc.clone()
0150        )
0151 
0152 
0153