File indexing completed on 2023-03-17 10:40:25
0001 import math
0002 import json
0003 import os
0004
0005 import FWCore.ParameterSet.Config as cms
0006 import FWCore.PythonUtilities.LumiList as LumiList
0007 from FWCore.ParameterSet.VarParsing import VarParsing
0008 from Alignment.OfflineValidation.TkAlAllInOneTool.utils import _byteify
0009
0010
0011
0012
0013 process = cms.Process("TkAlignmentDiMuonValidation")
0014
0015
0016
0017
0018 options = VarParsing()
0019 options.register("config", "", VarParsing.multiplicity.singleton, VarParsing.varType.string , "AllInOne config")
0020 options.parseArguments()
0021
0022
0023 valiMode = "StandAlone"
0024
0025
0026
0027
0028 with open(options.config, "r") as configFile:
0029 config = _byteify(json.load(configFile, object_hook=_byteify),ignore_dicts=True)
0030
0031
0032
0033
0034 readFiles = []
0035
0036 with open(config["validation"]["dataset"], "r") as datafiles:
0037 for fileName in datafiles.readlines():
0038 readFiles.append(fileName.replace("\n", ""))
0039
0040
0041
0042
0043 if "goodlumi" in config["validation"]:
0044 if os.path.isfile(config["validation"]["goodlumi"]):
0045 goodLumiSecs = cms.untracked.VLuminosityBlockRange(LumiList.LumiList(filename = config["validation"]["goodlumi"]).getCMSSWString().split(','))
0046
0047 else:
0048 print("Does not exist: {}. Continue without good lumi section file.")
0049 goodLumiSecs = cms.untracked.VLuminosityBlockRange()
0050
0051 else:
0052 goodLumiSecs = cms.untracked.VLuminosityBlockRange()
0053
0054
0055
0056
0057 process.source = cms.Source("PoolSource",
0058 fileNames = cms.untracked.vstring(readFiles),
0059 lumisToProcess = goodLumiSecs,
0060 skipEvents = cms.untracked.uint32(0)
0061 )
0062 process.maxEvents = cms.untracked.PSet(
0063 input = cms.untracked.int32(config["validation"].get("maxevents", 2000000))
0064 )
0065
0066
0067
0068
0069 process.options = cms.untracked.PSet(
0070 wantSummary = cms.untracked.bool(False),
0071 Rethrow = cms.untracked.vstring("ProductNotFound"),
0072 fileMode = cms.untracked.string('NOMERGE'),
0073 )
0074
0075
0076
0077
0078 process.load("FWCore.MessageService.MessageLogger_cfi")
0079 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0080 process.load("Configuration.StandardSequences.Services_cff")
0081 process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
0082 process.load("Configuration.StandardSequences.MagneticField_cff")
0083 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0084
0085
0086
0087
0088 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0089 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0090
0091
0092
0093
0094 process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
0095 import RecoTracker.TrackProducer.TrackRefitters_cff
0096 process.TrackRefitter = process.TrackRefitterP5.clone(
0097 src = 'ALCARECOTkAlZMuMu',
0098 TrajectoryInEvent = True,
0099 TTRHBuilder = "WithAngleAndTemplate",
0100 NavigationSchool = "",
0101 )
0102
0103
0104
0105
0106 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0107 from Configuration.AlCa.GlobalTag import GlobalTag
0108 process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "auto:run2_data"))
0109
0110
0111
0112
0113 import CalibTracker.Configuration.Common.PoolDBESSource_cfi
0114 if "conditions" in config["alignment"]:
0115 from CalibTracker.Configuration.Common.PoolDBESSource_cfi import poolDBESSource
0116 for condition in config["alignment"]["conditions"]:
0117 setattr(process, "conditionsIn{}".format(condition), poolDBESSource.clone(
0118 connect = cms.string(str(config["alignment"]["conditions"][condition]["connect"])),
0119 toGet = cms.VPSet(cms.PSet(record = cms.string(str(condition)),
0120 tag = cms.string(str(config["alignment"]["conditions"][condition]["tag"]))
0121 )
0122 )
0123 )
0124 )
0125
0126 setattr(process, "prefer_conditionsIn{}".format(condition), cms.ESPrefer("PoolDBESSource", "conditionsIn{}".format(condition)))
0127
0128
0129
0130
0131 from Alignment.OfflineValidation.diMuonValidation_cfi.py import diMuonValidation as _diMuonValidation
0132 process.DiMuonMassValidation = _diMuonValidation.clone(
0133 TkTag = 'TrackRefitter',
0134
0135 Pair_mass_min = 80.,
0136 Pair_mass_max = 120.,
0137 Pair_mass_nbins = 80,
0138 Pair_etaminpos = -1,
0139 Pair_etamaxpos = 1,
0140 Pair_etaminneg = -1,
0141 Pair_etamaxneg = 1,
0142
0143 Variable_CosThetaCS_xmin = -1.,
0144 Variable_CosThetaCS_xmax = 1.,
0145 Variable_CosThetaCS_nbins = 20,
0146
0147 Variable_DeltaEta_xmin = -4.8,
0148 Variable_DeltaEta_xmax = 4.8,
0149 Variable_DeltaEta_nbins = 20,
0150
0151 Variable_EtaMinus_xmin = -2.4,
0152 Variable_EtaMinus_xmax = 2.4,
0153 Variable_EtaMinus_nbins = 12,
0154
0155 Variable_EtaPlus_xmin = -2.4,
0156 Variable_EtaPlus_xmax = 2.4,
0157 Variable_EtaPlus_nbins = 12,
0158
0159 Variable_PhiCS_xmin = -math.pi/2.,
0160 Variable_PhiCS_xmax = math.pi/2.,
0161 Variable_PhiCS_nbins = 20,
0162
0163 Variable_PhiMinus_xmin = -math.pi,
0164 Variable_PhiMinus_xmax = math.pi,
0165 Variable_PhiMinus_nbins = 16,
0166
0167 Variable_PhiPlus_xmin = -math.pi,
0168 Variable_PhiPlus_xmax = math.pi,
0169 Variable_PhiPlus_nbins = 16,
0170
0171 Variable_PairPt_xmin = 0.,
0172 Variable_PairPt_xmax = 100.,
0173 Variable_PairPt_nbins = 100)
0174
0175
0176
0177
0178 if valiMode == "StandAlone":
0179
0180 process.TFileService = cms.Service("TFileService",
0181 fileName = cms.string("{}/Zmumu.root".format(config["output"])),
0182 closeFileFast = cms.untracked.bool(True),
0183 )
0184
0185 process.p = cms.Path(process.offlineBeamSpot*process.TrackRefitter*process.DiMuonMassValidation)