CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/Configuration/DataProcessing/python/Impl/HeavyIons.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 """
00003 _HeavyIons_
00004 
00005 Scenario supporting heavy-ion collisions
00006 
00007 """
00008 
00009 import os
00010 import sys
00011 
00012 from Configuration.DataProcessing.Scenario import Scenario
00013 from Configuration.DataProcessing.Utils import stepALCAPRODUCER
00014 import FWCore.ParameterSet.Config as cms
00015 from Configuration.PyReleaseValidation.ConfigBuilder import ConfigBuilder
00016 from Configuration.PyReleaseValidation.ConfigBuilder import Options
00017 from Configuration.PyReleaseValidation.ConfigBuilder import defaultOptions
00018 from Configuration.PyReleaseValidation.ConfigBuilder import installFilteredStream
00019 from Configuration.PyReleaseValidation.ConfigBuilder import addOutputModule
00020 from Configuration.DataProcessing.RecoTLR import customisePromptHI,customiseExpressHI
00021 
00022 class HeavyIons(Scenario):
00023     """
00024     _HeavyIons_
00025 
00026     Implement configuration building for data processing for 
00027     heavy-ion collision data taking
00028 
00029     """
00030 
00031 
00032     def promptReco(self, globalTag, writeTiers = ['RECO'], **args):
00033         """
00034         _promptReco_
00035 
00036         Heavy-ion collision data taking prompt reco
00037 
00038         """
00039 
00040         skims = ['SiStripCalZeroBias',
00041                  'SiStripCalMinBias',
00042                  'TkAlMinBiasHI',
00043                  'HcalCalMinBias']
00044         step = stepALCAPRODUCER(skims)
00045         options = Options()
00046         options.__dict__.update(defaultOptions.__dict__)
00047         options.scenario = "HeavyIons"
00048         options.step = 'RAW2DIGI,L1Reco,RECO'+step+',L1HwVal,DQM,ENDJOB'
00049         options.isMC = False
00050         options.isData = True
00051         options.beamspot = None
00052         options.eventcontent = None
00053         options.magField = 'AutoFromDBCurrent'
00054         options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag
00055         options.relval = False
00056         
00057         process = cms.Process('RECO')
00058         cb = ConfigBuilder(options, process = process)
00059 
00060         # Input source
00061         process.source = cms.Source("PoolSource",
00062             fileNames = cms.untracked.vstring()
00063         )
00064         cb.prepare()
00065 
00066         for tier in writeTiers: 
00067           addOutputModule(process, tier, tier)
00068           
00069         #add the former top level patches here
00070         customisePromptHI(process)
00071         
00072         return process
00073 
00074 
00075     def expressProcessing(self, globalTag, writeTiers = [], **args):
00076         """
00077         _expressProcessing_
00078 
00079         Heavy-ion collision data taking express processing
00080 
00081         """
00082 
00083         skims = ['SiStripCalZeroBias',
00084                  'TkAlMinBiasHI']
00085         step = stepALCAPRODUCER(skims)
00086         options = Options()
00087         options.__dict__.update(defaultOptions.__dict__)
00088         options.scenario = "HeavyIons"
00089         options.step = 'RAW2DIGI,L1Reco,RECO'+step+',L1HwVal,DQM,ENDJOB'
00090         options.isMC = False
00091         options.isData = True
00092         options.beamspot = None
00093         options.eventcontent = None
00094         options.magField = 'AutoFromDBCurrent'
00095         options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag
00096         options.relval = False
00097         
00098         process = cms.Process('RECO')
00099         cb = ConfigBuilder(options, process = process)
00100 
00101         # Input source
00102         process.source = cms.Source("NewEventStreamFileReader",
00103             fileNames = cms.untracked.vstring()
00104         )
00105         cb.prepare() 
00106 
00107         for tier in writeTiers: 
00108           addOutputModule(process, tier, tier)
00109           
00110         #add the former top level patches here
00111         customiseExpressHI(process)
00112         
00113         return process
00114 
00115 
00116     def alcaSkim(self, skims, **args):
00117         """
00118         _alcaSkim_
00119 
00120         AlcaReco processing & skims for heavy-ion collisions
00121 
00122         """
00123 
00124         globalTag = None
00125         if 'globaltag' in args:
00126             globalTag = args['globaltag']
00127 
00128         step = ""
00129         if 'PromptCalibProd' in skims:
00130             step = "ALCA:PromptCalibProd" 
00131             skims.remove('PromptCalibProd')
00132         
00133         if len( skims ) > 0:
00134             if step != "":
00135                 step += ","
00136             step += "ALCAOUTPUT:"
00137                 
00138         for skim in skims:
00139           step += (skim+"+")
00140         options = Options()
00141         options.__dict__.update(defaultOptions.__dict__)
00142         options.scenario = "HeavyIons"
00143         options.step = step.rstrip('+')
00144         options.isMC = False
00145         options.isData = True
00146         options.beamspot = None
00147         options.eventcontent = None
00148         options.relval = None
00149         if globalTag != None :
00150             options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag
00151         options.triggerResultsProcess = 'RECO'
00152         
00153         process = cms.Process('ALCA')
00154         cb = ConfigBuilder(options, process = process)
00155 
00156         # Input source
00157         process.source = cms.Source(
00158            "PoolSource",
00159            fileNames = cms.untracked.vstring()
00160         )
00161 
00162         cb.prepare() 
00163 
00164         # FIXME: dirty hack..any way around this?
00165         # Tier0 needs the dataset used for ALCAHARVEST step to be a different data-tier
00166         if 'PromptCalibProd' in step:
00167             process.ALCARECOStreamPromptCalibProd.dataset.dataTier = cms.untracked.string('ALCAPROMPT')
00168 
00169         return process
00170 
00171 
00172     def dqmHarvesting(self, datasetName, runNumber, globalTag, **args):
00173         """
00174         _dqmHarvesting_
00175 
00176         Heavy-ion collisions data taking DQM Harvesting
00177 
00178         """
00179         options = defaultOptions
00180         options.scenario = "HeavyIons"
00181         options.step = "HARVESTING:dqmHarvesting"
00182         options.isMC = False
00183         options.isData = True
00184         options.beamspot = None
00185         options.eventcontent = None
00186         options.name = "EDMtoMEConvert"
00187         options.conditions = "FrontierConditions_GlobalTag,%s" % globalTag
00188         options.arguments = ""
00189         options.evt_type = ""
00190         options.filein = []
00191  
00192         process = cms.Process("HARVESTING")
00193         process.source = cms.Source("PoolSource")
00194         configBuilder = ConfigBuilder(options, process = process)
00195         configBuilder.prepare()
00196 
00197         #
00198         # customise process for particular job
00199         #
00200         process.source.processingMode = cms.untracked.string('RunsAndLumis')
00201         process.source.fileNames = cms.untracked(cms.vstring())
00202         process.maxEvents.input = -1
00203         process.dqmSaver.workflow = datasetName
00204         process.dqmSaver.saveByLumiSection = 1
00205         if args.has_key('referenceFile') and args.get('referenceFile', ''):
00206             process.DQMStore.referenceFileName = \
00207                                 cms.untracked.string(args['referenceFile'])
00208 
00209         return process
00210 
00211 
00212     def alcaHarvesting(self, globalTag, **args):
00213         """
00214         _alcaHarvesting_
00215 
00216         Heavy-ion collisions data taking AlCa Harvesting
00217 
00218         """
00219         options = defaultOptions
00220         options.scenario = "HeavyIons"
00221         options.step = "ALCAHARVEST:BeamSpotByRun+BeamSpotByLumi+SiStripQuality"
00222         options.isMC = False
00223         options.isData = True
00224         options.beamspot = None
00225         options.eventcontent = None
00226         options.name = "ALCAHARVEST"
00227         options.conditions = globalTag
00228         options.arguments = ""
00229         options.evt_type = ""
00230         options.filein = []
00231  
00232         process = cms.Process("ALCAHARVEST")
00233         process.source = cms.Source("PoolSource")
00234         configBuilder = ConfigBuilder(options, process = process)
00235         configBuilder.prepare()
00236 
00237         #
00238         # customise process for particular job
00239         #
00240         process.source.processingMode = cms.untracked.string('RunsAndLumis')
00241         process.source.fileNames = cms.untracked(cms.vstring())
00242         process.maxEvents.input = -1
00243         process.dqmSaver.workflow = datasetName
00244         
00245         return process
00246