File indexing completed on 2024-04-06 12:20:44
0001 import FWCore.ParameterSet.Config as cms
0002 from L1Trigger.L1THGCal.l1tHGCalBackEndLayer2Producer_cfi import distance_C3d_params, \
0003 dbscan_C3d_params, \
0004 histoMax_C3d_clustering_params, \
0005 histoMax_C3d_seeding_params, \
0006 histoMaxVariableDR_C3d_params, \
0007 histoMaxXYVariableDR_C3d_params, \
0008 histoSecondaryMax_C3d_params, \
0009 histoInterpolatedMax_C3d_params, \
0010 histoThreshold_C3d_params, \
0011 neighbour_weights_1stOrder, \
0012 neighbour_weights_2ndOrder
0013
0014 from L1Trigger.L1THGCal.customClustering import set_histomax_clustering_params
0015 from L1Trigger.L1THGCal.customHistoSeeding import set_histomax_seeding_params
0016
0017
0018 def create_distance(process, inputs,
0019 distance=distance_C3d_params.dR_multicluster
0020 ):
0021 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0022 InputCluster = cms.InputTag(inputs)
0023 )
0024 producer.ProcessorParameters.C3d_parameters = distance_C3d_params.clone(
0025 dR_multicluster = distance
0026 )
0027 return producer
0028
0029
0030 def create_dbscan(process, inputs,
0031 distance=dbscan_C3d_params.dist_dbscan_multicluster,
0032 min_points=dbscan_C3d_params.minN_dbscan_multicluster
0033 ):
0034 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0035 InputCluster = cms.InputTag(inputs)
0036 )
0037 producer.ProcessorParameters.C3d_parameters = dbscan_C3d_params.clone(
0038 dist_dbscan_multicluster = distance,
0039 minN_dbscan_multicluster = min_points
0040 )
0041 return producer
0042
0043
0044 class CreateHistoMax(object):
0045 def __init__(self,
0046 distance=histoMax_C3d_clustering_params.dR_multicluster,
0047 nBins_X1=histoMax_C3d_seeding_params.nBins_X1_histo_multicluster,
0048 nBins_X2=histoMax_C3d_seeding_params.nBins_X2_histo_multicluster,
0049 binSumsHisto=histoMax_C3d_seeding_params.binSumsHisto,
0050 seed_threshold=histoMax_C3d_seeding_params.threshold_histo_multicluster,
0051 seeds_norm_by_area=histoMax_C3d_seeding_params.seeds_norm_by_area,
0052 shape_threshold=histoMax_C3d_clustering_params.shape_threshold,
0053 shape_distance=histoMax_C3d_clustering_params.shape_distance,
0054 ):
0055 self.clustering_parameters = histoMax_C3d_clustering_params.clone()
0056 self.seeding_parameters = histoMax_C3d_seeding_params.clone(
0057 seeds_norm_by_area=seeds_norm_by_area
0058 )
0059 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, binSumsHisto, seed_threshold)
0060 set_histomax_clustering_params(self.clustering_parameters, distance, shape_threshold, shape_distance)
0061
0062 def __call__(self, process, inputs):
0063 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0064 InputCluster = cms.InputTag(inputs)
0065 )
0066 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0067 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0068 return producer
0069
0070
0071 class CreateHistoMaxVariableDr(object):
0072 def __init__(self,
0073 distances=histoMaxVariableDR_C3d_params.dR_multicluster_byLayer_coefficientA,
0074 nBins_X1=histoMax_C3d_seeding_params.nBins_X1_histo_multicluster,
0075 nBins_X2=histoMax_C3d_seeding_params.nBins_X2_histo_multicluster,
0076 binSumsHisto=histoMax_C3d_seeding_params.binSumsHisto,
0077 seed_threshold=histoMax_C3d_seeding_params.threshold_histo_multicluster,
0078 seeds_norm_by_area=histoMax_C3d_seeding_params.seeds_norm_by_area,
0079 shape_threshold=histoMaxVariableDR_C3d_params.shape_threshold,
0080 shape_distance=histoMaxVariableDR_C3d_params.shape_distance,
0081 ):
0082 self.clustering_parameters= histoMax_C3d_clustering_params.clone(
0083 dR_multicluster_byLayer_coefficientA = distances
0084 )
0085 self.seeding_parameters = histoMax_C3d_seeding_params.clone(
0086 seeds_norm_by_area=seeds_norm_by_area
0087 )
0088 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, binSumsHisto, seed_threshold)
0089 set_histomax_clustering_params(self.clustering_parameters, 0, shape_threshold, shape_distance)
0090
0091 def __call__(self, process, inputs):
0092 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0093 InputCluster = cms.InputTag(inputs)
0094 )
0095 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0096 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0097 return producer
0098
0099
0100 class CreateHistoMaxXYVariableDr(object):
0101 def __init__(self,
0102 distances=histoMaxVariableDR_C3d_params.dR_multicluster_byLayer_coefficientA,
0103 nBins_X1=histoMaxXYVariableDR_C3d_params.nBins_X1_histo_multicluster,
0104 nBins_X2=histoMaxXYVariableDR_C3d_params.nBins_X2_histo_multicluster,
0105 seed_threshold=histoMaxXYVariableDR_C3d_params.threshold_histo_multicluster,
0106 shape_threshold=histoMaxVariableDR_C3d_params.shape_threshold,
0107 shape_distance=histoMaxVariableDR_C3d_params.shape_distance,
0108 ):
0109 self.clustering_parameters = histoMax_C3d_clustering_params.clone(
0110 dR_multicluster_byLayer_coefficientA = distances
0111 )
0112 self.seeding_parameters = histoMaxXYVariableDR_C3d_params.clone()
0113 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, histoMaxXYVariableDR_C3d_params.binSumsHisto, seed_threshold)
0114 set_histomax_clustering_params(self.clustering_parameters, 0, shape_threshold, shape_distance)
0115
0116 def __call__(self, process, inputs):
0117 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0118 InputCluster = cms.InputTag(inputs)
0119 )
0120 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0121 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0122 return producer
0123
0124
0125 class CreateHistoInterpolatedMax1stOrder(object):
0126 def __init__(self,
0127 distance=histoMax_C3d_clustering_params.dR_multicluster,
0128 nBins_X1=histoInterpolatedMax_C3d_params.nBins_X1_histo_multicluster,
0129 nBins_X2=histoInterpolatedMax_C3d_params.nBins_X2_histo_multicluster,
0130 binSumsHisto=histoInterpolatedMax_C3d_params.binSumsHisto,
0131 seed_threshold=histoInterpolatedMax_C3d_params.threshold_histo_multicluster,
0132 shape_threshold=histoMax_C3d_clustering_params.shape_threshold,
0133 shape_distance=histoMax_C3d_clustering_params.shape_distance,
0134 ):
0135 self.seeding_parameters = histoInterpolatedMax_C3d_params.clone(
0136 neighbour_weights = neighbour_weights_1stOrder
0137 )
0138 self.clustering_parameters = histoMax_C3d_clustering_params.clone()
0139 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, binSumsHisto, seed_threshold)
0140 set_histomax_clustering_params(self.clustering_parameters, distance, shape_threshold, shape_distance)
0141
0142 def __call__(self, process, inputs):
0143 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0144 InputCluster = cms.InputTag(inputs)
0145 )
0146 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0147 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0148 return producer
0149
0150
0151 class CreateHistoInterpolatedMax2ndOrder(object):
0152 def __init__(self,
0153 distance=histoMax_C3d_clustering_params.dR_multicluster,
0154 nBins_X1=histoInterpolatedMax_C3d_params.nBins_X1_histo_multicluster,
0155 nBins_X2=histoInterpolatedMax_C3d_params.nBins_X2_histo_multicluster,
0156 binSumsHisto=histoInterpolatedMax_C3d_params.binSumsHisto,
0157 seed_threshold=histoInterpolatedMax_C3d_params.threshold_histo_multicluster,
0158 shape_threshold=histoMax_C3d_clustering_params.shape_threshold,
0159 shape_distance=histoMax_C3d_clustering_params.shape_distance,
0160 ):
0161 self.seeding_parameters = histoInterpolatedMax_C3d_params.clone(
0162 neighbour_weights = neighbour_weights_2ndOrder
0163 )
0164 self.clustering_parameters = histoMax_C3d_clustering_params.clone()
0165 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, binSumsHisto, seed_threshold)
0166 set_histomax_clustering_params(self.clustering_parameters, distance, shape_threshold, shape_distance)
0167
0168 def __call__(self, process, inputs):
0169 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0170 InputCluster = cms.InputTag(inputs)
0171 )
0172 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0173 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0174 return producer
0175
0176
0177 class CreateHistoThreshold(object):
0178 def __init__(self,
0179 seed_threshold=histoThreshold_C3d_params.threshold_histo_multicluster,
0180 distance=histoMax_C3d_clustering_params.dR_multicluster,
0181 nBins_X1=histoThreshold_C3d_params.nBins_X1_histo_multicluster,
0182 nBins_X2=histoThreshold_C3d_params.nBins_X2_histo_multicluster,
0183 binSumsHisto=histoThreshold_C3d_params.binSumsHisto,
0184 shape_threshold=histoMax_C3d_clustering_params.shape_threshold,
0185 shape_distance=histoMax_C3d_clustering_params.shape_distance,
0186 ):
0187 self.seeding_parameters = histoThreshold_C3d_params.clone()
0188 self.clustering_parameters = histoMax_C3d_clustering_params.clone()
0189 set_histomax_seeding_params(self.seeding_parameters, nBins_X1, nBins_X2, binSumsHisto, seed_threshold)
0190 set_histomax_clustering_params(self.clustering_parameters, distance, shape_threshold, shape_distance)
0191
0192 def __call__(self, process, inputs):
0193 producer = process.l1tHGCalBackEndLayer2Producer.clone(
0194 InputCluster = cms.InputTag(inputs)
0195 )
0196 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_seeding_parameters = self.seeding_parameters
0197 producer.ProcessorParameters.C3d_parameters.histoMax_C3d_clustering_parameters = self.clustering_parameters
0198 return producer