Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMS Framework “Software bus” model –One executable, “cmsRun, with many plug-in modules Controlled by a configuration file –Controls which data to use,

Similar presentations


Presentation on theme: "CMS Framework “Software bus” model –One executable, “cmsRun, with many plug-in modules Controlled by a configuration file –Controls which data to use,"— Presentation transcript:

1 CMS Framework “Software bus” model –One executable, “cmsRun, with many plug-in modules Controlled by a configuration file –Controls which data to use, which modules to run, in which order, and which parameters to use for each module –All parameters are recorded the output provenance Configuration originally in a custom language –Parsed with flex/bison

2 Transition From Custom Language Made a Python parser to translate configurations into Python structures –Implemented with pyparsing, plus 2000 lines of new code –Used first by production system to edit configs in python, then dump them back to old language Interfaced to C++ using boost::python Translated all ~6000 config files in the release –Scripts automatically parse, translate, commit, and tag –Couldn’t preserve statement order –Made second-pass script to translate comments over. –Scripts detected when users modified old configs without fixing python configs

3 Modules and Parameters Some modules operate on Event data –EDProducer, EDFilter, EDAnalyzer Some modules do time-dependent conditions –ESProducer, ESSource Many types of parameters –int32, uint32, int64, double, bool, string, InputTag, EventID, FileInPath, … –plus vectors of all of the above, e.g, vint32 –Can be stored hierarchically in PSet, VPSet

4 Sequences Modules can be grouped into Sequences. Executions Paths can be made of modules and Sequences, and can be stopped by EDFilters Operators can define relationship of modules and sequences in a path –Inverting (“~”) or ignoring (“-”) a filter –Defining whether or not an element depends on the previous element (“+” or “*”)

5 New Python Config import FWCore.ParameterSet.Config as cms process = cms.Process(“foo”) process.jetAnalyzer = cms.EDAnalyzer(“MyJetAnalyzer”) from Jets.Reco.JetFilter_cfi import jetFilter process.jet50Filter = jetFilter.clone() process.jet50Filter.minPt = 50. process.jet100Filter = jetFilter.clone() process.jet100Filter.minPt = 100. process.jet50to100Filter = cms.Sequence(process.jet50Filter + ~process.jet100Filter) process.jet50to100 = cms.Path(process.jet50to100Filter * process.jetAnalyzer)

6 Old Custom Language process foo = { module jetAnalyzer = MyJetAnalyzer {} module jet50Filter = jetFilter from “Jets/Reco/data/JetFilter.cfi” replace jet50Filter.minPt = 50. module jet100Filter = jetFilter from “Jets/Reco/data/JetFilter.cfi” replace jet100Filter.minPt = 100. sequence jet50to100Filter = {jetFilter50&!jetFilter100} path jet50to100 = {jet50to100Filter, jetAnalyzer} }


Download ppt "CMS Framework “Software bus” model –One executable, “cmsRun, with many plug-in modules Controlled by a configuration file –Controls which data to use,"

Similar presentations


Ads by Google