I. General info/Usage:
I/1. cmsDriver.py guides/twikis:
SWGuideCmsDriver
SWGuideFastSimulationExamples
SWGuideGlobalHLT
I/2. Options overview
Common
--process NAME
--filein file:input.root
--fileout file:output.root
--python_filename test/TimingStudy_InputData_CMSSWX_cfg.py
--dasquery=file dataset=/*/*/* run=
--no_exec
-n 10
Data
--data
For Run I add:
--conditions auto:run1_data
For Run II add:
--conditions auto:run2_data
For Cosmics add:
--scenario cosmics
--customise Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2
1) RAW --> FEVT/RECO/AOD
--step RAW2DIGI,RECO
--datatier RECO
--eventcontent RECO
2) FEVT/RECO/AOD --> MINIAOD
--step PAT
--eventcontent MINIAOD
--runUnscheduled
--conditions PHYS14_25_V2
MC
--mc
For Run I add:
--conditions auto:run1_mc
For Run II add:
--conditions auto:run2_mc
--magField 38T_PostLS1
--beamspot NominalCollision2015
--customise SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1,Configuration/DataProcessing/Utils.addMonitoring
--fast
--step GEN,FASTSIM
--datatier RECOSIM or AODSIM
--eventcontent RECOSIM or AODSIM
1) GEN-SIM
cmsDriver.py MinBias_13TeV_cfi.py or Configuration/GenProduction/python/FSQ-RunIIWinter15GS-00004-fragment.py
--step GEN,SIM
--datatier GEN-SIM
--eventcontent FEVTDEBUG or RAWSIM
2) GEN-SIM --> GEN-SIM-RAW
--step DIGI,L1,DIGI2RAW,HLT
--datatier GEN-SIM-RAW
--eventcontent RAWSIM
--pileup NoPileUp or Flat_0_50_25ns or AVE_20_BX_25ns
3) GEN-SIM-RAW --> RECOSIM/AODSIM
--step RAW2DIGI,L1Reco,RECO
--datatier RECOSIM AODSIM
--eventcontent RECOSIM or AODSIM
4) RECOSIM/AODSIM --> MINIAODSIM
--step PAT
--eventcontent MINIAODSIM
--runUnscheduled
--conditions PHYS14_25_V1
I/3. Advice on steps
- The best is to use a recent working config file before you want to make your first script using the cmsDriver
- Steps to do this:
- find a dataset of your choice, eg:
https://cmsweb.cern.ch/das/request?view=list&limit=100&instance=prod%2Fglobal&input=dataset%3D%2FMinBias*%2F*%2FGEN-SIM+|+sort+dataset.creation_time
- Go click on "Request" on the top of the page
- In the "Output dataset" field: type your chosen dataset
- In the "Actions column" click on "Get test command"
3) Find cmsDriver.py line, run it, modify script accordint to your likes, also use the CMSSW version there preferably
eg:
cmsDriver.py Configuration/GenProduction/python/FSQ-RunIIWinter15GS-00004-fragment.py --fileout file:FSQ-RunIIWinter15GS-00004.root --mc --eventcontent RAWSIM --customise SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1,Configuration/DataProcessing/Utils.addMonitoring --datatier GEN-SIM --conditions MCRUN2_71_V1::All --beamspot NominalCollision2015 --step GEN,SIM --magField 38T_PostLS1 --python_filename FSQ-RunIIWinter15GS-00004_1_cfg.py --no_exec -n 183
II. Examples:
II/1. Generate MinBias GEN-SIM MC
cmsDriver.py MinBias_13TeV_cfi.py -s GEN,SIM --mc --conditions auto:run2_mc --beamspot NominalCollision2015 --magField 38T_PostLS1 -n 10
II/2. Generate MinBias GEN-SIM MC + HLT Step
- L1 and HLT should agree - L1 menu is specified in he
GlobalTag
cmsDriver ... -s GEN,...,HLT:7E33v4 --conditions auto:startup_7E33v4
- Working recpe:
cmsDriver.py MinBias_13TeV_cfi.py -s GEN,SIM,DIGI,L1,DIGI2RAW,HLT --mc --conditions auto:run2_mc --pileup=NoPileUp --beamspot NominalCollision2015 --magField 38T_PostLS1 --customise SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1 -n 10
II/3. ReReco Cosmics RAW data (53X) - Add Refitter and TimingStudy
- Make a config file with cmsDriver.py:
cmsDriver.py step1 --conditions GR_R_53_V21A::All -s
RAW2DIGI ,RECO --scenario cosmics --process
RawToDigiToReco --data --dasquery=file dataset=/Cosmics/Commissioning12-26Mar2013-v1/RECO run=186160 --eventcontent RECO --fileout
file:Cosmics.root
--no_exec --python_filename=test/TimingStudy_Cosmics_RawData_CMSSW53X_cfg.py
process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
process.Refitter = process.TrackRefitterP5.clone()
process.Refitter.src = 'ctfWithMaterialTracksP5'
process.Refitter.TrajectoryInEvent = True
- Add TimingStudy module: process.TimingStudy = cms.EdAnalyzer("TimingStudy", ...
- Overwrite schedule:
process.TimingStudy_step = cms.Path(process.Refitter*process.TimingStudy)
process.schedule = cms.Schedule(process.raw2digi_step, process.reconstruction_step, process.TimingStudy_step)
II/4. ReReco Cosmics RAW data (73X) - Add Refitter and TimingStudy
- Make a config file with cmsDriver.py:
cmsDriver.py step1 -s
RAW2DIGI ,RECO --scenario cosmics --conditions GR_P_V49 --process
RawToDigiToReco --data --eventcontent RECO --customise Configuration/DataProcessing/RecoTLR.customiseCosmicDataRun2 --dasquery='file dataset=/Cosmics/Commissioning2015-v1/RAW run=233238' -n 100 --python_filename=test/TimingStudy_Cosmics_RawData_CMSSW73X_cfg.py --no_exec
process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
process.Refitter = process.TrackRefitterP5.clone()
process.Refitter.src = 'ctfWithMaterialTracksP5'
process.Refitter.TrajectoryInEvent = True
- Add TimingStudy module: process.TimingStudy = cms.EdAnalyzer("TimingStudy", ...
- Overwrite schedule:
process.TimingStudy_step = cms.Path(process.Refitter*process.TimingStudy)
process.schedule = cms.Schedule(process.raw2digi_step, process.reconstruction_step, process.TimingStudy_step)
II/5. Do full reco on GEN-SIM MC - Add Flat Pileup [0,50] Mixing, Refitter and TimingStudy
- Make a config file with cmsDriver.py:
cmsDriver.py -s DIGI,DIGI2RAW,RAW2DIGI,RECO --mc --conditions auto:run2_mc --pileup=NoPileUp --beamspot NominalCollision2015 --magField 38T_PostLS1 --customise SLHCUpgradeSimulations/Configuration/postLS1Customs.customisePostLS1 --process GenSimToReco --filein=file:/data/store/user/hazia/minbias_13tev/ahazi/MinBias_13TeV_GEN_SIM_7_1_0/MinBias_13TeV_GEN_SIM_7_1_0/9cb32faabd78efe327c9c841fa706583/MinBias_13TeV_GENSIM_100_1_bOe.root -n 200 --no_exec --python_filename=test/TimingStudy_GenSimData_CMSSW7X_cfg.py
- Overwrite Mixing Module process with 0-50 flat pileup
from DPGAnalysis.PixelTimingStudy.PoolSource_13Tev_Andras import *
PileupInput = FileNames
PileupHistoInput = cms.untracked.string('file:PileupHistogram_201278_flatpileupMC.root') # Flat Pileup
PileupHistoName=cms.untracked.string('mc_input')
process.mix.input = cms.SecSource("PoolSource",
type = cms.string('histo'),
nbPileupEvents = cms.PSet(
fileName = PileupHistoInput,
histoName = PileupHistoName,
),
sequential = cms.untracked.bool(False),
manage_OOT = cms.untracked.bool(True),
OOT_type = cms.untracked.string('Poisson'),
fileNames = PileupInput
)
process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
process.Refitter = process.TrackRefitterP5.clone()
process.Refitter.src = 'generalTracks'
process.Refitter.TrajectoryInEvent = True
- Add TimingStudy module: process.TimingStudy = cms.EdAnalyzer("TimingStudy", ...
- overwrite schedule:
process.schedule = cms.Schedule(process.digitisation_step, process.digi2raw_step, process.raw2digi_step, process.reconstruction_step, process.TimingStudy_step)
II/6. Generate Neutrino, Mix Pile-up events (Flat [0-50]), read DynIneff from DB, do Full RECO + run TimingStudy
- Make a config file with cmsDriver.py:
cmsDriver.py -s GEN,SIM,DIGI,L1,DIGI2RAW,RAW2DIGI,RECO --mc --evt_type SingleNuE10_cfi --era Run2_25ns \
--conditions auto:run2_mc --beamspot NominalCollision2015 --magField 38T_PostLS1 --pileup=Flat_0_50_25ns \
--filein=/store/mc/RunIISummer15GS/MinBias_TuneCUETP8M1_13TeV-pythia8/GEN-SIM/MCRUN2_71_V1-v2/10000/004CC894-4877-E511-A11E-0025905C3DF8.root \
--pileup_input=/store/mc/RunIISummer15GS/MinBias_TuneCUETP8M1_13TeV-pythia8/GEN-SIM/MCRUN2_71_V1-v2/10002/082C3FE4-7479-E511-BCC5-0025904C8254.root \
--fileout file:GENSIMRECO.root --python_filename=test/TimingStudy_GenNu_DynIneffDB_cfg.py -n 10 --no_exec
#--------------- Added for TimingStudy ---------------
#---------------------------
# MessageLogger
#---------------------------
process.MessageLogger.cerr.FwkReport.reportEvery = 1
#---------------------------
# Pile-up (RunIISummer15GS)
#---------------------------
runOnGrid = False
if runOnGrid:
from DPGAnalysis.PixelTimingStudy.PoolSource_13TeV_RunIISummer15GS import *
process.mix.input.fileNames = pileupFileNames
else:
process.mix.input.fileNames = cms.untracked.vstring(
'file:/data/store/mc/RunIISummer15GS_/MinBias_TuneCUETP8M1_13TeV-pythia8/GEN-SIM/MCRUN2_71_V1-v2/10002/082C3FE4-7479-E511-BCC5-0025904C8254.root',
)
#---------------------------
# DynIneff from DB
#---------------------------
useSqlite = False
if useSqlite:
from CondCore.DBCommon.CondDBSetup_cfi import *
process.DynIneffDBSource = cms.ESSource("PoolDBESSource",
CondDBSetup,
connect = cms.string('sqlite_file:siPixelDynamicInefficiency.db'),
toGet = cms.VPSet(cms.PSet(
record = cms.string('SiPixelDynamicInefficiencyRcd'),
tag = cms.string('SiPixelDynamicInefficiency_v1')
))
)
process.es_prefer_DynIneffDBSource = cms.ESPrefer("PoolDBESSource","DynIneffDBSource")
#---------------------------
# Track Refitter
#---------------------------
process.load("RecoTracker.TrackProducer.TrackRefitters_cff")
process.TrackRefitterP5.src = 'generalTracks'
process.TrackRefitterP5.TrajectoryInEvent = True
#---------------------------
# TimingStudy
#---------------------------
process.TimingStudy = cms.EDAnalyzer("TimingStudy",
trajectoryInput = cms.string('TrackRefitterP5'),
fileName = cms.string("Ntuple.root"),
extrapolateFrom = cms.int32(2),
extrapolateTo = cms.int32(1),
keepOriginalMissingHit = cms.bool(False),
usePixelCPE= cms.bool(True),
minNStripHits = cms.int32(0),
triggerNames=cms.vstring(
"HLT_ZeroBias",
"HLT_Physics",
"HLT_Random",
"HLT_PixelTracks_Multiplicity100",
"HLT_PixelTracks_Multiplicity80",
"HLT_PixelTracks_Multiplicity125",
"HLT_PixelTracks_Multiplicity110",
"HLT_PixelTracks_Multiplicity85",
"HLT_PixelTracks_Multiplicity70",
"HLT_PixelTracks_Multiplicity40",
"HLT_L1Tech_BSC_HighMultiplicity",
"HLT_JetE30_NoBPTX",
"HLT_JetE30_NoBPTX_NoHalo",
"HLT_JetE30_NoBPTX3BX_NoHalo",
"HLT_JetE50_NoBPTX3BX_NoHalo",
"HLT_60Jet10",
"HLT_70Jet10",
"HLT_70Jet13",
"HLT_L1Tech_BSC_minBias",
"HLT_MinBias"),
#dataPileupFile = cms.string("PileupHistogram_201278_flatpileupMC.root"),
#mcPileupFile = cms.string("PileupHistogram_201278_flatpileupMC.root"),
#dataPileupHistoName = cms.string("pileup"),
#mcPileupHistoName = cms.string("mcpileup"),
mcLumiScale = cms.double(0.37935), # 2012 (1368b): 0.222, 2015 (2232b): 0.3136, 2016 (2700b) pred: 0.37935
instlumiTextFile = cms.untracked.string("run_ls_instlumi_pileup_2015.txt"),
)
#---------------------------
# Path/Schedule
#---------------------------
process.TimingStudy_step = cms.Path(process.TrackRefitterP5*process.TimingStudy)
process.schedule.remove(process.RECOSIMoutput_step)
process.schedule.remove(process.endjob_step)
process.schedule.remove(process.genfiltersummary_step)
process.schedule.append(process.TimingStudy_step)