File indexing completed on 2024-10-07 04:59:03
0001 import json
0002 import yaml
0003 import os
0004 import FWCore.ParameterSet.Config as cms
0005 import FWCore.PythonUtilities.LumiList as LumiList
0006 from Alignment.OfflineValidation.TkAlAllInOneTool.defaultInputFiles_cff import filesDefaultData_Cosmics_string
0007 from FWCore.ParameterSet.VarParsing import VarParsing
0008 from Alignment.OfflineValidation.TkAlAllInOneTool.utils import _byteify
0009 import pdb
0010
0011
0012
0013
0014 process = cms.Process("splitter")
0015
0016
0017
0018
0019 options = VarParsing()
0020 options.register("config", "", VarParsing.multiplicity.singleton, VarParsing.varType.string , "AllInOne config")
0021 options.parseArguments()
0022
0023
0024
0025
0026 if options.config == "":
0027 config = {"validation": {},
0028 "alignment": {}}
0029 else:
0030 with open(options.config, "r") as configFile:
0031 if options.config.endswith(".json"):
0032 config = json.load(configFile)
0033 elif options.config.endswith(".yaml"):
0034 config = yaml.safe_load(configFile)
0035
0036
0037
0038
0039 readFiles = []
0040
0041 if "dataset" in config["validation"]:
0042 with open(config["validation"]["dataset"], "r") as datafiles:
0043 for fileName in datafiles.readlines():
0044 readFiles.append(fileName.replace("\n", ""))
0045
0046 process.source = cms.Source("PoolSource",
0047 fileNames = cms.untracked.vstring(readFiles),
0048 skipEvents = cms.untracked.uint32(0)
0049 )
0050 else:
0051 print(">>>>>>>>>> MTS_cfg.py: msg%-i: dataset not specified! Loading default file -> filesDefaultData_Cosmics_string!")
0052 process.source = cms.Source("PoolSource",
0053 fileNames = cms.untracked.vstring(filesDefaultData_Cosmics_string),
0054 skipEvents = cms.untracked.uint32(0)
0055 )
0056
0057
0058
0059
0060 if "goodlumi" in config["validation"]:
0061 if os.path.isfile(config["validation"]["goodlumi"]):
0062 goodLumiSecs = cms.untracked.VLuminosityBlockRange(LumiList.LumiList(filename = config["validation"]["goodlumi"]).getCMSSWString().split(','))
0063 else:
0064 print("Does not exist: {}. Continue without good lumi section file.")
0065 goodLumiSecs = cms.untracked.VLuminosityBlockRange()
0066
0067 else:
0068 goodLumiSecs = cms.untracked.VLuminosityBlockRange()
0069 process.source.lumisToProcess = goodLumiSecs
0070
0071
0072
0073
0074 runboundary = config["validation"].get("runboundary", 1)
0075 isMultipleRuns=False
0076 if(isinstance(runboundary, (list, tuple))):
0077 isMultipleRuns=True
0078 print("Multiple Runs are selected")
0079 if(isMultipleRuns):
0080 process.source.firstRun = cms.untracked.uint32(runboundary[0])
0081 else:
0082 process.source.firstRun = cms.untracked.uint32(runboundary)
0083
0084
0085
0086
0087 process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(config["validation"].get("maxevents", 1)))
0088
0089
0090
0091
0092 process.options = cms.untracked.PSet(
0093 wantSummary = cms.untracked.bool(False),
0094 Rethrow = cms.untracked.vstring("ProductNotFound"),
0095 fileMode = cms.untracked.string('NOMERGE'),
0096 )
0097
0098
0099
0100
0101 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0102 process.MessageLogger.cerr.FwkReport.reportEvery = 1000
0103 process.MessageLogger.cout.enableStatistics = cms.untracked.bool(True)
0104
0105
0106
0107
0108 process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
0109 process.load("Configuration.Geometry.GeometryDB_cff")
0110 process.load('Configuration.StandardSequences.Services_cff')
0111 process.load("Configuration.StandardSequences.MagneticField_cff")
0112
0113
0114
0115
0116 import Alignment.CommonAlignment.tools.trackselectionRefitting as trackselRefit
0117 process.seqTrackselRefit = trackselRefit.getSequence(
0118 process,
0119 config["validation"].get("trackcollection", "ALCARECOTkAlCosmicsCTF0T"),
0120 isPVValidation = False,
0121 TTRHBuilder = config["validation"].get("tthrbuilder", "WithAngleAndTemplate"),
0122 usePixelQualityFlag=config["validation"].get("usePixelQualityFlag", True),
0123 openMassWindow = False,
0124 cosmicsDecoMode = True,
0125 cosmicsZeroTesla=config["validation"].get("cosmicsZeroTesla", False),
0126 momentumConstraint = None,
0127 cosmicTrackSplitting = True,
0128 use_d0cut = False
0129 )
0130
0131
0132
0133
0134 process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff")
0135 from Configuration.AlCa.GlobalTag import GlobalTag
0136 process.GlobalTag = GlobalTag(process.GlobalTag, config["alignment"].get("globaltag", "124X_dataRun3_Prompt_v10"))
0137
0138
0139
0140
0141 if "conditions" in config["alignment"]:
0142 from CalibTracker.Configuration.Common.PoolDBESSource_cfi import poolDBESSource
0143
0144 for condition in config["alignment"]["conditions"]:
0145 setattr(
0146 process,
0147 "conditionsIn{}".format(condition),
0148 poolDBESSource.clone(
0149 connect = cms.string(str(config["alignment"]["conditions"][condition]["connect"])),
0150 toGet = cms.VPSet(
0151 cms.PSet(
0152 record = cms.string(str(condition)),
0153 tag = cms.string(str(config["alignment"]["conditions"][condition]["tag"]))
0154 )
0155 )
0156 )
0157 )
0158
0159 setattr(
0160 process,
0161 "prefer_conditionsIn{}".format(condition),
0162 cms.ESPrefer("PoolDBESSource", "conditionsIn{}".format(condition))
0163 )
0164
0165
0166
0167
0168
0169 process.FittingSmootherRKP5.EstimateCut = -1
0170 process.AlignmentTrackSelector.minHitsPerSubDet.inPIXEL = 2
0171
0172
0173
0174
0175
0176
0177 compressionSettings = 207
0178 process.cosmicValidation = cms.EDAnalyzer(
0179 "CosmicSplitterValidation",
0180 compressionSettings = cms.untracked.int32(compressionSettings),
0181 ifSplitMuons = cms.bool(False),
0182 checkIfGolden = cms.bool(False),
0183 splitTracks = cms.InputTag("FinalTrackRefitter","","splitter"),
0184 splitGlobalMuons = cms.InputTag("muons","","splitter"),
0185 originalTracks = cms.InputTag("FirstTrackRefitter","","splitter"),
0186 originalGlobalMuons = cms.InputTag("muons","","Rec")
0187 )
0188
0189
0190
0191
0192 process.TFileService = cms.Service("TFileService",
0193 fileName = cms.string("{}/MTSValidation_{}_{}.root".format(config.get("output", os.getcwd()), config["alignment"].get("name", ""), config["validation"].get("IOV", 1.))),
0194 closeFileFast = cms.untracked.bool(True),
0195 )
0196
0197
0198
0199
0200 process.p = cms.Path(process.seqTrackselRefit*process.cosmicValidation)
0201
0202 print("Done")