File indexing completed on 2024-04-06 12:32:19
0001
0002
0003
0004
0005 from __future__ import print_function
0006 import FWCore.ParameterSet.Config as cms
0007 from FWCore.ParameterSet.VarParsing import VarParsing
0008 import sys, re
0009
0010 from FWCore.PythonFramework.CmsRun import CmsRun
0011
0012 process = cms.Process("PROD")
0013
0014 process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
0015
0016 """
0017
0018 The default geometry is Extended2017Plan1. If a different geometry
0019 is needed, the appropriate flag has to be passed at command line,
0020 e.g.: cmsRun runP_Tracker_cfg.py geom="XYZ"
0021
0022 The default component to be monitored is the Tracker. If other
0023 components need to be studied, they must be supplied, one at a time,
0024 at the command line, e.g.: python3 runP_Tracker.py
0025 label="XYZ"
0026
0027 """
0028
0029 from Validation.Geometry.plot_utils import _LABELS2COMPS
0030
0031 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0032
0033 _ALLOWED_LABELS = _LABELS2COMPS.keys()
0034
0035 options = VarParsing('analysis')
0036 options.register('geom',
0037 'Extended2017Plan1',
0038 VarParsing.multiplicity.singleton,
0039 VarParsing.varType.string,
0040 "Select the geometry to be studied"
0041 )
0042
0043 options.register('label',
0044 'Tracker',
0045 VarParsing.multiplicity.singleton,
0046 VarParsing.varType.string,
0047 "Select the label to be used to create output files. Default to tracker. If multiple components are selected, it defaults to the join of all components, with '_' as separator."
0048 )
0049
0050 options.setDefault('inputFiles', ['file:single_neutrino_random.root'])
0051
0052 options.parseArguments()
0053
0054
0055 process.MessageLogger = cms.Service(
0056 "MessageLogger",
0057 destinations = cms.untracked.vstring('info'),
0058 categories = cms.untracked.vstring(['logMsg','MaterialBudget']),
0059 info = cms.untracked.PSet(
0060 threshold = cms.untracked.string('INFO'),
0061 filename = cms.untracked.string('Log_%s_%s' % (options.label,options.geom)),
0062 logMsg = cms.untracked.PSet(limit = cms.untracked.int32(-1))
0063 )
0064 )
0065
0066 if options.label not in _ALLOWED_LABELS:
0067 print("\n*** Error, '%s' not registered as a valid components to monitor." % options.label)
0068 print("Allowed components:", _ALLOWED_LABELS)
0069 raise RuntimeError("Unknown label")
0070
0071 _components = _LABELS2COMPS[options.label]
0072
0073
0074
0075
0076 def _adaptToRun2(det):
0077 if det == 'PixelForwardZminus':
0078 det = det.replace('minus', 'Minus')
0079 elif det == 'PixelForwardZplus':
0080 det = det.replace('plus', 'Plus')
0081 return det
0082
0083
0084 process.load("Configuration.Geometry.Geometry%sReco_cff" % options.geom)
0085
0086
0087 if re.match('.*2016.*', options.geom):
0088 if isinstance(_components, list):
0089 for i in range(len(_components)):
0090 _components[i] = _adaptToRun2(_components[i])
0091 else:
0092 _components = _adaptToRun2(_components)
0093
0094
0095
0096
0097 process.load("Configuration.StandardSequences.MagneticField_38T_cff")
0098
0099
0100
0101
0102
0103
0104
0105 process.load("SimG4Core.Application.g4SimHits_cfi")
0106
0107 process.load("IOMC.RandomEngine.IOMC_cff")
0108 process.RandomNumberGeneratorService.g4SimHits.initialSeed = 9876
0109
0110 process.source = cms.Source("PoolSource",
0111 fileNames = cms.untracked.vstring(options.inputFiles)
0112 )
0113
0114 process.maxEvents = cms.untracked.PSet(
0115 input = cms.untracked.int32(-1)
0116 )
0117
0118 process.p1 = cms.Path(process.g4SimHits)
0119 process.g4SimHits.StackingAction.TrackNeutrino = cms.bool(True)
0120 process.g4SimHits.UseMagneticField = False
0121 process.g4SimHits.Physics.type = 'SimG4Core/Physics/DummyPhysics'
0122 process.g4SimHits.Physics.DummyEMPhysics = True
0123 process.g4SimHits.Physics.CutsPerRegion = False
0124 process.g4SimHits.Watchers = cms.VPSet(cms.PSet(
0125 type = cms.string('MaterialBudgetAction'),
0126 MaterialBudgetAction = cms.PSet(
0127 HistosFile = cms.string('matbdg_%s_%s.root' % (options.label,
0128 options.geom)),
0129 AllStepsToTree = cms.bool(True),
0130 HistogramList = cms.string('Tracker'),
0131 SelectedVolumes = cms.vstring(_components),
0132 TreeFile = cms.string('matbdg_tree_%s_%s.root' % (options.label,
0133 options.geom)),
0134 StopAfterProcess = cms.string('None'),
0135 TextFile = cms.string('matbdg_%s_%s.txt' % (options.label,
0136 options.geom))
0137 )
0138 ))
0139
0140 cmsRun = CmsRun(process)
0141 cmsRun.run()