Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-10-09 23:02:45

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 offlinePrimaryVertices = cms.EDProducer(
0004     "PrimaryVertexProducer",
0005 
0006     verbose = cms.untracked.bool(False),
0007     TrackLabel = cms.InputTag("generalTracks"),
0008     beamSpotLabel = cms.InputTag("offlineBeamSpot"),
0009 
0010     TkFilterParameters = cms.PSet(
0011         algorithm=cms.string('filter'),
0012         maxNormalizedChi2 = cms.double(10.0),
0013         minPixelLayersWithHits=cms.int32(2),
0014         minSiliconLayersWithHits = cms.int32(5),
0015         maxD0Significance = cms.double(4.0),
0016         maxD0Error = cms.double(1.0),
0017         maxDzError = cms.double(1.0),
0018         minPt = cms.double(0.0),
0019         maxEta = cms.double(2.4),
0020         trackQuality = cms.string("any")
0021     ),
0022 
0023     TkClusParameters = cms.PSet(
0024         algorithm   = cms.string("DA_vect"),
0025         TkDAClusParameters = cms.PSet(
0026             coolingFactor = cms.double(0.6),  # moderate annealing speed
0027             zrange = cms.double(4.),          # consider only clusters within 4 sigma*sqrt(T) of a track
0028             delta_highT = cms.double(1.e-2),  # convergence requirement at high T
0029             delta_lowT = cms.double(1.e-3),   # convergence requirement at low T
0030             convergence_mode = cms.int32(0),  # 0 = two steps, 1 = dynamic with sqrt(T)
0031             Tmin = cms.double(2.0),           # end of vertex splitting
0032             Tpurge = cms.double(2.0),         # cleaning
0033             Tstop = cms.double(0.5),          # end of annealing
0034             vertexSize = cms.double(0.006),   # added in quadrature to track-z resolutions
0035             d0CutOff = cms.double(3.),        # downweight high IP tracks
0036             dzCutOff = cms.double(3.),        # outlier rejection after freeze-out (T<Tmin)
0037             zmerge = cms.double(1e-2),        # merge intermediat clusters separated by less than zmerge
0038             uniquetrkweight = cms.double(0.8),# require at least two tracks with this weight at T=Tpurge
0039             uniquetrkminp = cms.double(0.0),  # minimal a priori track weight for counting unique tracks
0040             runInBlocks = cms.bool(False),    # activate the DA running in blocks of z sorted tracks
0041             block_size = cms.uint32(10000),   # block size in tracks
0042             overlap_frac = cms.double(0.0)    # overlap between consecutive blocks (blocks_size*overlap_frac)
0043         )
0044     ),
0045 
0046     vertexCollections = cms.VPSet(
0047      [cms.PSet(label=cms.string(""),
0048                algorithm=cms.string("AdaptiveVertexFitter"),
0049                chi2cutoff = cms.double(2.5),
0050                minNdof=cms.double(0.0),
0051                useBeamConstraint = cms.bool(False),
0052                maxDistanceToBeam = cms.double(1.0)
0053                ),
0054       cms.PSet(label=cms.string("WithBS"),
0055                algorithm = cms.string('AdaptiveVertexFitter'),
0056                chi2cutoff = cms.double(2.5),
0057                minNdof=cms.double(2.0),
0058                useBeamConstraint = cms.bool(True),
0059                maxDistanceToBeam = cms.double(1.0),
0060                )
0061       ]
0062     ),
0063 
0064     isRecoveryIteration = cms.bool(False),
0065     recoveryVtxCollection = cms.InputTag("")
0066 
0067 
0068 )
0069 
0070 from Configuration.ProcessModifiers.vertexInBlocks_cff import vertexInBlocks
0071 vertexInBlocks.toModify(offlinePrimaryVertices,
0072     TkClusParameters = dict(
0073         TkDAClusParameters = dict(
0074             runInBlocks = True,
0075             block_size = 128,
0076             overlap_frac = 0.5
0077         )
0078     )
0079 )
0080 
0081 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
0082 (phase2_tracker & vertexInBlocks).toModify(offlinePrimaryVertices,
0083      TkClusParameters = dict(
0084          TkDAClusParameters = dict(
0085              block_size = 512,
0086              overlap_frac = 0.5)
0087          )
0088 )
0089 
0090 from Configuration.Eras.Modifier_highBetaStar_cff import highBetaStar
0091 highBetaStar.toModify(offlinePrimaryVertices,
0092     TkClusParameters = dict(
0093         TkDAClusParameters = dict(
0094             Tmin = 4.0,
0095             Tpurge = 1.0,
0096             Tstop = 1.0,
0097             vertexSize = 0.01,
0098             d0CutOff = 4.,
0099             dzCutOff = 5.,
0100             zmerge = 2.e-2,
0101             uniquetrkweight = 0.9
0102        )
0103     )
0104 )
0105 
0106 DA_vectParameters = cms.PSet(offlinePrimaryVertices.TkClusParameters.clone())
0107 
0108 from Configuration.ProcessModifiers.weightedVertexing_cff import weightedVertexing
0109 weightedVertexing.toModify(offlinePrimaryVertices,
0110                            vertexCollections = cms.VPSet(
0111                            [cms.PSet(label=cms.string(""),
0112                                      algorithm=cms.string("WeightedMeanFitter"),
0113                                      chi2cutoff = cms.double(2.5),
0114                                      minNdof=cms.double(0.0),
0115                                      useBeamConstraint = cms.bool(False),
0116                                      maxDistanceToBeam = cms.double(1.0)
0117                            ),
0118                            cms.PSet(label=cms.string("WithBS"),
0119                                      algorithm = cms.string('WeightedMeanFitter'),
0120                                      minNdof=cms.double(0.0),
0121                                      chi2cutoff = cms.double(2.5),
0122                                      useBeamConstraint = cms.bool(True),
0123                                      maxDistanceToBeam = cms.double(1.0)
0124                                      )
0125                            ]
0126                            ))
0127 # This customization is needed in the trackingLowPU era to be able to
0128 # produce vertices also in the cases in which the pixel detector is
0129 # not included in data-taking, like it was the case for "Quiet Beam"
0130 # collisions on 2016 with run 269207.
0131 
0132 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
0133 trackingLowPU.toModify(offlinePrimaryVertices,
0134                             TkFilterParameters = dict(minPixelLayersWithHits = 0))
0135 
0136 
0137 # higher eta cut for the phase 2 tracker
0138 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
0139 phase2_tracker.toModify(offlinePrimaryVertices,
0140                         TkFilterParameters = dict(maxEta = 4.0))
0141 
0142 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
0143 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0144 (pp_on_XeXe_2017 | pp_on_AA).toModify(offlinePrimaryVertices,
0145                TkFilterParameters = dict(
0146                    algorithm="filterWithThreshold",
0147                    maxD0Significance = 2.0,
0148                    maxD0Error = 10.0,
0149                    maxDzError = 10.0,
0150                    minPixelLayersWithHits=3,
0151                    minPt = 0.7,
0152                    trackQuality = "highPurity",
0153                    numTracksThreshold = cms.int32(10),
0154                    maxNumTracksThreshold = cms.int32(1000),
0155                    minPtTight = cms.double(1.0)
0156                ),
0157                TkClusParameters = cms.PSet(
0158                  algorithm = cms.string("gap"),
0159                  TkGapClusParameters = cms.PSet(
0160                    zSeparation = cms.double(1.0)
0161                  )
0162                )
0163 )
0164 
0165 highBetaStar.toModify(offlinePrimaryVertices,
0166      TkFilterParameters = dict(
0167          maxNormalizedChi2 = 80.0,
0168          minPixelLayersWithHits = 1,
0169          minSiliconLayersWithHits = 3,
0170          maxD0Significance = 7.0,
0171          maxD0Error = 10.0,
0172          maxDzError = 10.0,
0173          maxEta = 2.5
0174      ),
0175      vertexCollections = {
0176          0: dict(chi2cutoff = 4.0, minNdof = -1.1),
0177          1: dict(chi2cutoff = 4.0, minNdof = -2.0),
0178      }
0179 )
0180 
0181 from Configuration.Eras.Modifier_run3_upc_cff import run3_upc
0182 run3_upc.toModify(offlinePrimaryVertices,
0183     TkFilterParameters = dict(
0184         algorithm="filterWithThreshold",
0185         maxNormalizedChi2 = 80.0,
0186         minPixelLayersWithHits = 1,
0187         minSiliconLayersWithHits = 3,
0188         maxD0Significance = 4.0,
0189         maxD0Error = 10.0,
0190         maxDzError = 10.0,
0191         minPt = 0.0,
0192         maxEta = 3.0,
0193         trackQuality = "highPurity",
0194         numTracksThreshold = cms.int32(3),
0195         maxNumTracksThreshold = cms.int32(1000),
0196         minPtTight = cms.double(1.0)
0197     ),
0198     TkClusParameters = cms.PSet(
0199         algorithm = cms.string("gap"),
0200         TkGapClusParameters = cms.PSet(
0201             zSeparation = cms.double(6.0)
0202         )
0203     ),
0204     vertexCollections = {
0205         0: dict(chi2cutoff = 4.0, minNdof = -1.1),
0206         1: dict(chi2cutoff = 4.0, minNdof = -2.0),
0207     }
0208 )