Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:20:41

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