CMS 3D CMS Logo

Scenario.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 """
3 _Scenario_
4 
5 Standard cmsRun Process building interface used for data processing
6 for a particular data scenario.
7 A scenario is a macro-data-taking setting such as cosmic running,
8 beam halo running, or particular validation tests.
9 
10 This class defines the interfaces used by the Tier 0 and Tier 1
11 processing to wrap calls to ConfigBuilder in order to retrieve all the
12 configurations for the various types of job
13 
14 """
15 
16 import FWCore.ParameterSet.Config as cms
17 from Configuration.DataProcessing.Merge import mergeProcess
18 from Configuration.DataProcessing.Repack import repackProcess
19 
20 #central import, will be used by all daughter classes anyways
21 from Configuration.Applications.ConfigBuilder import ConfigBuilder,Options,defaultOptions
22 
23 
25  """
26  _Scenario_
27 
28  """
29  def __init__(self):
30  self.eras=cms.Modifier()
31 
32 
33  def promptReco(self, globalTag, **options):
34  """
35  _installPromptReco_
36 
37  given a skeleton process object and references
38  to the output modules for the products it produces,
39  install the standard reco sequences and event content for this
40  scenario
41 
42  """
43  msg = "Scenario Implementation %s\n" % self.__class__.__name__
44  msg += "Does not contain an implementation for promptReco"
45  raise NotImplementedError(msg)
46 
47 
48  def expressProcessing(self, globalTag, **options):
49  """
50  _expressProcessing_
51 
52  Build an express processing configuration for this scenario.
53 
54  Express processing runs conversion, reco and alca reco on each
55  streamer file in the express stream and writes out RAW, RECO and
56  a combined ALCA file that gets mergepacked in a later step
57 
58  writeTiers is list of tiers to write out, not including ALCA
59 
60  datasets is the list of datasets to split into for each tier
61  written out. Should always be one dataset
62 
63  alcaDataset - if set, this means the combined Alca file is written
64  out with no dataset splitting, it gets assigned straight to the datase
65  provided
66 
67  """
68  msg = "Scenario Implementation %s\n" % self.__class__.__name__
69  msg += "Does not contain an implementation for expressProcessing"
70  raise NotImplementedError(msg)
71 
72 
73 
74  def visualizationProcessing(self, globalTag, **options):
75  """
76  _expressProcessing_
77 
78  Build a configuration for the visualization processing for this scenario.
79 
80  Visualization processing runs unpacking, and reco on
81  streamer files and it is equipped to run on the online cluster
82  and writes RECO or FEVT files,
83 
84  writeTiers is list of tiers to write out.
85 
86 
87  """
88  msg = "Scenario Implementation %s\n" % self.__class__.__name__
89  msg += "Does not contain an implementation for visualizationProcessing"
90  raise NotImplementedError(msg)
91 
92 
93 
94 
95  def alcaSkim(self, skims, **options):
96  """
97  _alcaSkim_
98 
99  Given a skeleton process install the skim splitting for given skims
100 
101  """
102  msg = "Scenario Implementation %s\n" % self.__class__.__name__
103  msg += "Does not contain an implementation for alcaSkim"
104  raise NotImplementedError(msg)
105 
106 
107  def alcaReco(self, *skims, **options):
108  """
109  _alcaSkim_
110 
111  Given a skeleton process install the skim production for given skims
112 
113  """
114  msg = "Scenario Implementation %s\n" % self.__class__.__name__
115  msg += "Does not contain an implementation for alcaReco"
116  raise NotImplementedError(msg)
117 
118 
119  def dqmHarvesting(self, datasetName, runNumber, globalTag, **options):
120  """
121  _dqmHarvesting_
122 
123  build a DQM Harvesting configuration
124 
125  Arguments:
126 
127  datasetName - aka workflow name for DQMServer, this is the name of the
128  dataset containing the harvested run
129  runNumber - The run being harvested
130  globalTag - The global tag being used
131  inputFiles - The list of LFNs being harvested
132 
133  """
134  msg = "Scenario Implementation %s\n" % self.__class__.__name__
135  msg += "Does not contain an implementation for dqmHarvesting"
136  raise NotImplementedError(msg)
137 
138 
139  def alcaHarvesting(self, globalTag, datasetName, **options):
140  """
141  _alcaHarvesting_
142 
143  build an AlCa Harvesting configuration
144 
145  Arguments:
146 
147  globalTag - The global tag being used
148  inputFiles - The list of LFNs being harvested
149 
150  """
151  msg = "Scenario Implementation %s\n" % self.__class__.__name__
152  msg += "Does not contain an implementation for alcaHarvesting"
153  raise NotImplementedError(msg)
154 
155 
156  def skimming(self, skims, globalTag, **options):
157  """
158  _skimming_
159 
160  Given a process install the sequences for Tier 1 skimming
161  and the appropriate output modules
162 
163  """
164  msg = "Scenario Implementation %s\n" % self.__class__.__name__
165  msg += "Does not contain an implementation for skimming"
166  raise NotImplementedError(msg)
167 
168 
169  def merge(self, *inputFiles, **options):
170  """
171  _merge_
172 
173  builds a merge configuration
174 
175  """
176  msg = "Scenario Implementation %s\n" % self.__class__.__name__
177  return mergeProcess(*inputFiles, **options)
178 
179 
180  def repack(self, **options):
181  """
182  _repack_
183 
184  builds a repack configuration
185 
186  """
187  msg = "Scenario Implementation %s\n" % self.__class__.__name__
188  return repackProcess(**options)
189 
190 
191  #
192  # helper methods
193  #
194 
195  def dropOutputModule(self, processRef, moduleName):
196  """
197  _dropOutputModule_
198 
199  Util to prune an unwanted output module
200 
201  """
202  del process._Process__outputmodules[moduleName]
203  return
def alcaReco(self, skims, options)
Definition: Scenario.py:107
def alcaSkim(self, skims, options)
Definition: Scenario.py:95
def skimming(self, skims, globalTag, options)
Definition: Scenario.py:156
def __init__(self)
Definition: Scenario.py:29
def dqmHarvesting(self, datasetName, runNumber, globalTag, options)
Definition: Scenario.py:119
def repack(self, options)
Definition: Scenario.py:180
def mergeProcess(inputFiles, options)
Definition: Merge.py:17
def merge(self, inputFiles, options)
Definition: Scenario.py:169
def promptReco(self, globalTag, options)
Definition: Scenario.py:33
def alcaHarvesting(self, globalTag, datasetName, options)
Definition: Scenario.py:139
def visualizationProcessing(self, globalTag, options)
Definition: Scenario.py:74
def dropOutputModule(self, processRef, moduleName)
Definition: Scenario.py:195
def repackProcess(args)
Definition: Repack.py:12
def expressProcessing(self, globalTag, options)
Definition: Scenario.py:48