-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Update SingleLongTrackProducer: changes to run on ALCARECO and setC…
…omments in fillDescriptions - ShortenedTrackResolution: improve histogram titles - implement unit tests
- Loading branch information
Showing
6 changed files
with
301 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
<test name="testTrackingDATAMC" command="testTrackingDATAMC.sh"/> | ||
<test name="testTrackingResolution" command="testTrackingResolution.sh"/> |
91 changes: 91 additions & 0 deletions
91
DQM/TrackingMonitorSource/test/testTrackResolutionHarvesting_cfg.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
import FWCore.ParameterSet.Config as cms | ||
import FWCore.ParameterSet.VarParsing as VarParsing | ||
|
||
options = VarParsing.VarParsing() | ||
options.register('maxEvents', | ||
-1, | ||
VarParsing.VarParsing.multiplicity.singleton, | ||
VarParsing.VarParsing.varType.int, | ||
"maximum events") | ||
options.register('globalTag', | ||
'125X_mcRun3_2022_design_v6', | ||
VarParsing.VarParsing.multiplicity.singleton, | ||
VarParsing.VarParsing.varType.string, | ||
"conditions") | ||
options.register('inputFile', | ||
'step1_DQM_LayerRot_9p43e-6_fromRECO.root', | ||
VarParsing.VarParsing.multiplicity.singleton, | ||
VarParsing.VarParsing.varType.string, | ||
"input file") | ||
options.parseArguments() | ||
|
||
from Configuration.Eras.Era_Run3_cff import Run3 | ||
process = cms.Process('HARVESTING',Run3) | ||
|
||
# import of standard configurations | ||
process.load('Configuration.StandardSequences.Services_cff') | ||
process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') | ||
process.load('FWCore.MessageService.MessageLogger_cfi') | ||
process.load('Configuration.EventContent.EventContent_cff') | ||
process.load('SimGeneral.MixingModule.mixNoPU_cfi') | ||
process.load('Configuration.StandardSequences.GeometryRecoDB_cff') | ||
process.load('Configuration.StandardSequences.MagneticField_cff') | ||
process.load('Configuration.StandardSequences.DQMSaverAtRunEnd_cff') | ||
process.load('Configuration.StandardSequences.Harvesting_cff') | ||
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') | ||
|
||
process.maxEvents = cms.untracked.PSet( | ||
input = cms.untracked.int32(options.maxEvents), | ||
output = cms.optional.untracked.allowed(cms.int32,cms.PSet) | ||
) | ||
|
||
# Input source | ||
process.source = cms.Source("DQMRootSource", | ||
fileNames = cms.untracked.vstring('file:'+options.inputFile) | ||
) | ||
|
||
process.options = cms.untracked.PSet( | ||
IgnoreCompletely = cms.untracked.vstring(), | ||
Rethrow = cms.untracked.vstring('ProductNotFound'), | ||
accelerators = cms.untracked.vstring('*'), | ||
allowUnscheduled = cms.obsolete.untracked.bool, | ||
canDeleteEarly = cms.untracked.vstring(), | ||
deleteNonConsumedUnscheduledModules = cms.untracked.bool(True), | ||
dumpOptions = cms.untracked.bool(False), | ||
emptyRunLumiMode = cms.obsolete.untracked.string, | ||
eventSetup = cms.untracked.PSet( | ||
forceNumberOfConcurrentIOVs = cms.untracked.PSet( | ||
allowAnyLabel_=cms.required.untracked.uint32 | ||
), | ||
numberOfConcurrentIOVs = cms.untracked.uint32(0) | ||
), | ||
fileMode = cms.untracked.string('FULLMERGE'), | ||
forceEventSetupCacheClearOnNewRun = cms.untracked.bool(False), | ||
makeTriggerResults = cms.obsolete.untracked.bool, | ||
numberOfConcurrentLuminosityBlocks = cms.untracked.uint32(0), | ||
numberOfConcurrentRuns = cms.untracked.uint32(1), | ||
numberOfStreams = cms.untracked.uint32(0), | ||
numberOfThreads = cms.untracked.uint32(1), | ||
printDependencies = cms.untracked.bool(False), | ||
sizeOfStackForThreadsInKB = cms.optional.untracked.uint32, | ||
throwIfIllegalParameter = cms.untracked.bool(True), | ||
wantSummary = cms.untracked.bool(False) | ||
) | ||
|
||
# Other statements | ||
from Configuration.AlCa.GlobalTag import GlobalTag | ||
process.GlobalTag = GlobalTag(process.GlobalTag, options.globalTag, '') | ||
|
||
process.dqmsave_step = cms.Path(process.DQMSaver) | ||
|
||
# Schedule definition | ||
process.schedule = cms.Schedule(process.alcaHarvesting,process.dqmsave_step) | ||
from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask | ||
associatePatAlgosToolsTask(process) | ||
|
||
# Customisation from command line | ||
|
||
# Add early deletion of temporary data products to reduce peak memory need | ||
from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete | ||
process = customiseEarlyDelete(process) | ||
# End adding early deletion |
157 changes: 157 additions & 0 deletions
157
DQM/TrackingMonitorSource/test/testTrackResolution_cfg.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
import FWCore.ParameterSet.Config as cms | ||
import FWCore.Utilities.FileUtils as FileUtils | ||
from FWCore.ParameterSet.VarParsing import VarParsing | ||
|
||
options = VarParsing('analysis') | ||
options.register('inputTag', | ||
'LayerRot_9p43e-6', | ||
VarParsing.multiplicity.singleton, | ||
VarParsing.varType.string, | ||
"input tag") | ||
options.register('inputFile', | ||
'/store/relval/CMSSW_14_0_0_pre1/RelValZMM_14/GEN-SIM-RECO/133X_mcRun3_2023_realistic_v3-v1/2590000/586487a4-71be-4b23-b5a4-5662fab803c9.root', | ||
VarParsing.multiplicity.singleton, | ||
VarParsing.varType.string, | ||
"input file") | ||
options.register('isAlCaReco', | ||
False, | ||
VarParsing.multiplicity.singleton, | ||
VarParsing.varType.bool, | ||
"is alcareco input file?") | ||
options.register('isUnitTest', | ||
False, | ||
VarParsing.multiplicity.singleton, | ||
VarParsing.varType.bool, | ||
"is this configuration run in unit test?") | ||
options.parseArguments() | ||
|
||
from Configuration.Eras.Era_Run3_cff import Run3 | ||
process = cms.Process("TrackingResolution", Run3) | ||
|
||
##################################################################### | ||
# import of standard configurations | ||
##################################################################### | ||
process.load('Configuration.StandardSequences.Services_cff') | ||
process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') | ||
process.load('FWCore.MessageService.MessageLogger_cfi') | ||
process.MessageLogger.cerr.FwkReport.reportEvery = (100 if options.isUnitTest else 100000) | ||
process.load('Configuration.EventContent.EventContent_cff') | ||
process.load('Configuration.StandardSequences.GeometryRecoDB_cff') | ||
process.load('Configuration.StandardSequences.MagneticField_cff') | ||
process.load('DQMOffline.Configuration.DQMOffline_cff') | ||
process.load('Configuration.StandardSequences.EndOfProcess_cff') | ||
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') | ||
|
||
##################################################################### | ||
## BeamSpot from database (i.e. GlobalTag), needed for Refitter | ||
##################################################################### | ||
process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi") | ||
|
||
##################################################################### | ||
# Load and Configure Measurement Tracker Event | ||
##################################################################### | ||
process.load("RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi") | ||
if(options.isAlCaReco): | ||
# customize MeasurementTrackerEvent for ALCARECO | ||
process.MeasurementTrackerEvent.pixelClusterProducer = "ALCARECOTkAlDiMuon" | ||
process.MeasurementTrackerEvent.stripClusterProducer = "ALCARECOTkAlDiMuon" | ||
process.MeasurementTrackerEvent.inactivePixelDetectorLabels = cms.VInputTag() | ||
process.MeasurementTrackerEvent.inactiveStripDetectorLabels = cms.VInputTag() | ||
|
||
process.maxEvents = cms.untracked.PSet( | ||
input = cms.untracked.int32(10 if options.isUnitTest else -1) | ||
) | ||
|
||
##################################################################### | ||
# Input source | ||
##################################################################### | ||
#filelist = FileUtils.loadListFromFile("listOfFiles_idealMC_GEN-SIM-RECO.txt") | ||
#filelist = FileUtils.loadListFromFile("listOfFiles_idealMC_TkAlDiMuonAndVertex.txt") | ||
#readFiles = cms.untracked.vstring( *filelist) | ||
|
||
readFiles = cms.untracked.vstring(options.inputFile) | ||
process.source = cms.Source("PoolSource",fileNames = readFiles) | ||
|
||
process.options = cms.untracked.PSet() | ||
|
||
##################################################################### | ||
# Output | ||
##################################################################### | ||
process.DQMoutput = cms.OutputModule("DQMRootOutputModule", | ||
dataset = cms.untracked.PSet( | ||
dataTier = cms.untracked.string('DQMIO'), | ||
filterName = cms.untracked.string('') | ||
), | ||
fileName = cms.untracked.string('file:step1_DQM_'+options.inputTag+'_'+('fromALCA' if options.isAlCaReco else 'fromRECO' )+'.root'), | ||
outputCommands = process.DQMEventContent.outputCommands, | ||
splitLevel = cms.untracked.int32(0) | ||
) | ||
|
||
##################################################################### | ||
# Other statements | ||
##################################################################### | ||
from Configuration.AlCa.GlobalTag import GlobalTag | ||
#process.GlobalTag = GlobalTag(process.GlobalTag,"133X_mcRun3_2023_realistic_v3", '') | ||
process.GlobalTag = GlobalTag(process.GlobalTag, "125X_mcRun3_2022_design_v6", '') | ||
process.GlobalTag.toGet = cms.VPSet(cms.PSet(connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS"), | ||
record = cms.string('TrackerAlignmentRcd'), | ||
tag = cms.string(options.inputTag))) | ||
|
||
##################################################################### | ||
# The DQM analysis sequence | ||
##################################################################### | ||
process.load("DQM.TrackingMonitorSource.shortTrackResolution_cff") | ||
process.load("RecoTracker.TrackProducer.TrackRefitters_cff") | ||
import RecoTracker.TrackProducer.TrackRefitters_cff | ||
process.LongTracksRefit = process.TrackRefitter.clone( | ||
src = 'SingleLongTrackProducer', | ||
TrajectoryInEvent = True, | ||
TTRHBuilder = "WithAngleAndTemplate", | ||
NavigationSchool = '' | ||
) | ||
|
||
process.ShortTrackCandidates3.src = cms.InputTag("LongTracksRefit") | ||
process.ShortTrackCandidates4.src = cms.InputTag("LongTracksRefit") | ||
process.ShortTrackCandidates5.src = cms.InputTag("LongTracksRefit") | ||
process.ShortTrackCandidates6.src = cms.InputTag("LongTracksRefit") | ||
process.ShortTrackCandidates7.src = cms.InputTag("LongTracksRefit") | ||
process.ShortTrackCandidates8.src = cms.InputTag("LongTracksRefit") | ||
|
||
process.SingleLongTrackProducer.matchMuons = cms.InputTag("muons") | ||
if(options.isAlCaReco): | ||
process.SingleLongTrackProducer.requiredDr = cms.double(-9999.) # do not require any matchings | ||
process.SingleLongTrackProducer.allTracks = cms.InputTag("ALCARECOTkAlDiMuon") | ||
|
||
##################################################################### | ||
# Path | ||
##################################################################### | ||
process.analysis_step = cms.Path(process.offlineBeamSpot * | ||
process.MeasurementTrackerEvent * | ||
process.SingleLongTrackProducer * | ||
process.LongTracksRefit * | ||
process.ShortTrackCandidates3 * | ||
process.ShortTrackCandidates4 * | ||
process.ShortTrackCandidates5 * | ||
process.ShortTrackCandidates6 * | ||
process.ShortTrackCandidates7 * | ||
process.ShortTrackCandidates8 * | ||
process.RefittedShortTracks3 * | ||
process.RefittedShortTracks4 * | ||
process.RefittedShortTracks5 * | ||
process.RefittedShortTracks6 * | ||
process.RefittedShortTracks7 * | ||
process.RefittedShortTracks8 * | ||
process.trackingResolution) | ||
|
||
##################################################################### | ||
# Path and EndPath definitions | ||
##################################################################### | ||
process.endjob_step = cms.EndPath(process.endOfProcess) | ||
process.DQMoutput_step = cms.EndPath(process.DQMoutput) | ||
|
||
process.schedule = cms.Schedule(process.analysis_step, process.endjob_step, process.DQMoutput_step) | ||
|
||
################################################################### | ||
# Set the process to run multi-threaded | ||
################################################################### | ||
process.options.numberOfThreads = 8 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
#!/bin/sh | ||
|
||
function die { echo $1: status $2 ; exit $2; } | ||
|
||
echo -e "TESTING step1 with RECO inputs ...\n\n" | ||
cmsRun ${SCRAM_TEST_PATH}/testTrackResolution_cfg.py isUnitTest=True || die "Failure running testTrackResolution_cfg.py isUnitTest=True" $? | ||
|
||
echo -e "TESTING step1 with ALCARECO inputs ...\n\n" | ||
cmsRun ${SCRAM_TEST_PATH}/testTrackResolution_cfg.py isUnitTest=True isAlCaReco=True inputFile=/store/mc/Run3Winter23Reco/DYJetsToMuMu_M-50_TuneCP5_13p6TeV-madgraphMLM-pythia8/ALCARECO/TkAlDiMuonAndVertex-TRKDesignNoPU_AlcaRecoTRKMu_designGaussSigmaZ4cm_125X_mcRun3_2022_design_v6-v1/60000/93401af5-0da6-40ce-82e4-d5571c93dd97.root || die "Failure running testTrackResolution_cfg.py isUnitTest=True isAlCaReco=True" $? | ||
|
||
echo -e "TESTING harvesting with RECO inputs ...\n\n" | ||
cmsRun ${SCRAM_TEST_PATH}/testTrackResolutionHarvesting_cfg.py || die "Failure running testTrackResolutionHarvesting_cfg.py" $? | ||
|
||
echo -e "TESTING harvesting with ALCARECO inputs ...\n\n" | ||
cmsRun ${SCRAM_TEST_PATH}/testTrackResolutionHarvesting_cfg.py inputFile=step1_DQM_LayerRot_9p43e-6_fromALCA.root || die "Failure running testTrackResolutionHarvesting_cfg.py inputFile=step1_DQM_LayerRot_9p43e-6_fromALCA.root" $? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters