Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-25 02:29:11

0001 import FWCore.ParameterSet.Config as cms
0002 from FWCore.ParameterSet.VarParsing import VarParsing
0003 
0004 ###################################################################
0005 # Setup 'standard' options
0006 ###################################################################
0007 options = VarParsing()
0008 
0009 options.register('conditionGT',
0010                  "auto:run2_data",
0011                  VarParsing.multiplicity.singleton,
0012                  VarParsing.varType.string,
0013                  "condition global tag for the job (\"auto:run2_data\" is default)")
0014 
0015 options.register('conditionOverwrite',
0016                  "",
0017                  VarParsing.multiplicity.singleton,
0018                  VarParsing.varType.string,
0019                  "configuration to overwrite the condition into the GT (\"\" is default)")
0020 
0021 options.register('inputCollection',
0022                  "ALCARECOSiStripCalMinBias",
0023                  VarParsing.multiplicity.singleton,
0024                  VarParsing.varType.string,
0025                  "collections to be used for input (\"ALCARECOSiStripCalMinBias\" is default, use 'generalTracks' for prompt reco and 'ctfWithMaterialTracksP5' for cosmic reco)")
0026 
0027 options.register('outputFile',
0028                  "calibTreeTest.root",
0029                  VarParsing.multiplicity.singleton,
0030                  VarParsing.varType.string,
0031                  "name for the output root file (\"calibTreeTest.root\" is default)")
0032 
0033 options.register('inputFiles',
0034                  '/store/data/Run2018D/Cosmics/ALCARECO/SiStripCalCosmics-UL18-v1/40000/0346DCE4-0C70-1344-A7EB-D488B627208C.root',
0035                  VarParsing.multiplicity.list,
0036                  VarParsing.varType.string,
0037                  "file to process")
0038 
0039 options.register('maxEvents',
0040                  -1,
0041                  VarParsing.multiplicity.singleton,
0042                  VarParsing.varType.int,
0043                  "number of events to process (\"-1\" for all)")
0044 
0045 options.register('runNumber',
0046                  -1,
0047                  VarParsing.multiplicity.singleton,
0048                  VarParsing.varType.int,
0049                  "run number to process (\"-1\" for all)")
0050 
0051 options.register('cosmicTriggers', '',
0052                  VarParsing.multiplicity.list,
0053                  VarParsing.varType.string,
0054                  'cosmic triggers')
0055 
0056 options.parseArguments()
0057 ###################################################################
0058 # To use the prompt reco dataset please use 'generalTracks' as inputCollection
0059 # To use the cosmic reco dataset please use 'ctfWithMaterialTracksP5' as inputCollection
0060 
0061 
0062 process = cms.Process('CALIB')
0063 process.load('Configuration/StandardSequences/MagneticField_cff')
0064 process.load('Configuration.Geometry.GeometryRecoDB_cff')
0065 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0066 
0067 from Configuration.AlCa.GlobalTag import GlobalTag
0068 process.GlobalTag = GlobalTag(process.GlobalTag, options.conditionGT, options.conditionOverwrite)
0069 
0070 process.load('FWCore.MessageService.MessageLogger_cfi')
0071 process.load('Configuration.StandardSequences.Services_cff')
0072 
0073 process.maxEvents = cms.untracked.PSet(input=cms.untracked.int32(options.maxEvents))
0074 
0075 process.source = cms.Source("PoolSource", fileNames=cms.untracked.vstring(options.inputFiles))
0076 if options.runNumber != -1:
0077    if 'Cosmics' not in options.inputCollection:
0078       print("Restricting to the following events :")
0079       print('%s:1-%s:MAX'%(options.runNumber,options.runNumber))
0080       process.source.eventsToProcess = cms.untracked.VEventRange('%s:1-%s:MAX'%(options.runNumber,options.runNumber))
0081    else:
0082       print("Restricting to the following lumis for Cosmic runs only:")
0083       print('%s:1-%s:MAX'%(options.runNumber,options.runNumber))
0084       process.source.lumisToProcess = cms.untracked.VLuminosityBlockRange('%s:1-%s:MAX'%(options.runNumber,options.runNumber))
0085 
0086 process.options = cms.untracked.PSet(
0087         wantSummary = cms.untracked.bool(True)
0088         )
0089 process.MessageLogger.cerr.FwkReport.reportEvery = 10000
0090 
0091 inTracks = cms.InputTag(options.inputCollection)
0092 
0093 process.load('CalibTracker.SiStripCommon.prescaleEvent_cfi')
0094 process.load('CalibTracker.Configuration.Filter_Refit_cff')
0095 ## use CalibrationTracks (for clusters) and CalibrationTracksRefit (for tracks)
0096 process.CalibrationTracks.src = inTracks
0097 tracksForCalib = cms.InputTag("CalibrationTracksRefit")
0098 
0099 process.prescaleEvent.prescale = 1
0100 process.load("CalibTracker.SiStripCommon.SiStripBFieldFilter_cfi")
0101 
0102 from HLTrigger.HLTfilters.triggerResultsFilter_cfi import triggerResultsFilter
0103 
0104 process.IsolatedMuonFilter = triggerResultsFilter.clone(
0105         triggerConditions = cms.vstring("HLT_IsoMu20_*"),
0106         hltResults = cms.InputTag("TriggerResults", "", "HLT"),
0107         l1tResults = cms.InputTag(""),
0108         throw = cms.bool(False)
0109         )
0110 if len(options.cosmicTriggers) > 0:
0111     print("Cosmic triggers: {0}".format(", ".join(options.cosmicTriggers)))
0112     process.IsolatedMuonFilter.triggerConditions = cms.vstring(options.cosmicTriggers)
0113 else:
0114     print("Cosmic triggers: {0} (default)".format(", ".join(process.IsolatedMuonFilter.triggerConditions)))
0115     print("Argument passed: {0}".format(options.cosmicTriggers))
0116 
0117 process.TkCalSeq = cms.Sequence(
0118         process.prescaleEvent*
0119         process.IsolatedMuonFilter*
0120         process.siStripBFieldOnFilter*
0121         process.CalibrationTracks,
0122         cms.Task(process.MeasurementTrackerEvent),
0123         cms.Task(process.offlineBeamSpot),
0124         cms.Task(process.CalibrationTracksRefit)
0125         )
0126 
0127 process.load("PhysicsTools.NanoAOD.nano_cff")
0128 process.load("PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff")
0129 
0130 ## as a test: it should be possible to add tracks fully at configuration level (+ declaring the plugin)
0131 from PhysicsTools.NanoAOD.common_cff import *
0132 ## this is equivalent to ShallowTrackProducer as configured for the gain calibration
0133 process.tracksTable = cms.EDProducer("SimpleTrackFlatTableProducer",
0134         src=tracksForCalib,
0135         cut=cms.string(""),
0136         name=cms.string("track"),
0137         doc=cms.string("SiStripCalMinBias ALCARECO tracks"),
0138         singleton=cms.bool(False),
0139         extension=cms.bool(False),
0140         variables=cms.PSet(
0141             chi2ndof=Var("chi2()/ndof", float),
0142             pt=Var("pt()", float),
0143             hitsvalid=Var("numberOfValidHits()", int), ## unsigned?
0144             phi=Var("phi()", float),
0145             eta=Var("eta()", float),
0146             )
0147         )
0148 process.load("CalibTracker.SiStripCommon.siStripPositionCorrectionsTable_cfi")
0149 process.siStripPositionCorrectionsTable.Tracks = tracksForCalib
0150 process.load("CalibTracker.SiStripCommon.siStripLorentzAngleRunInfoTable_cfi")
0151 
0152 siStripCalCosmicsNanoTables = cms.Task(
0153         process.nanoMetadata,
0154         process.tracksTable,
0155         process.siStripPositionCorrectionsTable,
0156         process.siStripLorentzAngleRunInfoTable
0157         )
0158 
0159 process.nanoCTPath = cms.Path(process.TkCalSeq, siStripCalCosmicsNanoTables)
0160 
0161 process.out = cms.OutputModule("NanoAODOutputModule",
0162         fileName=cms.untracked.string(options.outputFile),
0163         outputCommands=process.NANOAODEventContent.outputCommands+[
0164             "drop edmTriggerResults_*_*_*"
0165             ],
0166         SelectEvents=cms.untracked.PSet(
0167             SelectEvents=cms.vstring("nanoCTPath")
0168             )
0169         )
0170 process.end = cms.EndPath(process.out)
0171 
0172 process.schedule = cms.Schedule(process.nanoCTPath, process.end)