CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/CalibMuon/DTCalibration/python/Workflow/DTTTrigValid.py

Go to the documentation of this file.
00001 from tools import loadCmsProcess,loadCrabCfg,loadCrabDefault,addCrabInputFile,writeCfg,prependPaths
00002 from addPoolDBESSource import addPoolDBESSource
00003 from CrabTask import *
00004 import os
00005 
00006 class DTTTrigValid:
00007     def __init__(self, run, dir, input_db, config):
00008         self.pset_name = 'dtCalibValidation_cfg.py'
00009         #self.outputfile = 'residuals.root,DQM.root'
00010         self.outputfile = 'DQM.root'
00011         self.config = config
00012         self.dir = dir
00013         self.inputdb = input_db
00014 
00015         self.pset_template = 'CalibMuon.DTCalibration.dtCalibValidation_cfg'
00016         if hasattr(self.config,'runOnCosmics') and self.config.runOnCosmics:
00017             self.pset_template = 'CalibMuon.DTCalibration.dtCalibValidation_cosmics_cfg'
00018 
00019         self.process = None  
00020         self.crab_cfg = None
00021         self.initProcess()
00022         self.initCrab()
00023         self.task = CrabTask(self.dir,self.crab_cfg)
00024 
00025     def initProcess(self):
00026         self.process = loadCmsProcess(self.pset_template)
00027         self.process.GlobalTag.globaltag = self.config.globaltag
00028         #self.process.dtCalibValidation.OutputMEsInRootFile = True
00029 
00030         if hasattr(self.config,'inputDBTag') and self.config.inputDBTag:
00031             tag = self.config.inputDBTag
00032             record = self.config.inputDBRcd
00033             connect = self.config.connectStrDBTag
00034             moduleName = 'customDB%s' % record 
00035             addPoolDBESSource(process = self.process,
00036                               moduleName = moduleName,record = record,tag = tag,
00037                               connect = connect)
00038 
00039         if hasattr(self.config,'inputVDriftDB') and self.config.inputVDriftDB:
00040             addPoolDBESSource(process = self.process,
00041                               moduleName = 'vDriftDB',record = 'DTMtimeRcd',tag = 'vDrift',
00042                               connect = 'sqlite_file:%s' % os.path.basename(self.config.inputVDriftDB))
00043 
00044         if(self.inputdb):
00045             label = ''
00046             if hasattr(self.config,'runOnCosmics') and self.config.runOnCosmics: label = 'cosmics'
00047             addPoolDBESSource(process = self.process,
00048                               moduleName = 'calibDB',record = 'DTTtrigRcd',tag = 'ttrig',label=label,
00049                               connect = 'sqlite_file:%s' % os.path.basename(self.inputdb))
00050 
00051         if hasattr(self.config,'runOnRAW') and self.config.runOnRAW:
00052             if hasattr(self.config,'runOnMC') and self.config.runOnMC:
00053                 getattr(self.process,self.config.digilabel).inputLabel = 'rawDataCollector' 
00054             prependPaths(self.process,self.config.digilabel)
00055  
00056         if hasattr(self.config,'preselection') and self.config.preselection:
00057             pathsequence = self.config.preselection.split(':')[0]
00058             seqname = self.config.preselection.split(':')[1]
00059             self.process.load(pathsequence)
00060             prependPaths(self.process,seqname)
00061 
00062     def initCrab(self):
00063         crab_cfg_parser = loadCrabCfg()
00064         loadCrabDefault(crab_cfg_parser,self.config)
00065         crab_cfg_parser.set('CMSSW','pset',self.pset_name)
00066         crab_cfg_parser.set('CMSSW','output_file',self.outputfile)
00067         crab_cfg_parser.remove_option('USER','additional_input_files')
00068         if self.inputdb:
00069             addCrabInputFile(crab_cfg_parser,self.inputdb)
00070 
00071         if hasattr(self.config,'inputVDriftDB') and self.config.inputVDriftDB:
00072             addCrabInputFile(crab_cfg_parser,self.config.inputVDriftDB)
00073 
00074         self.crab_cfg = crab_cfg_parser
00075 
00076     def writeCfg(self):
00077         writeCfg(self.process,self.dir,self.pset_name)
00078         #writeCfgPkl(self.process,self.dir,self.pset_name)
00079 
00080     def run(self):
00081         self.project = self.task.run()
00082         return self.project