Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
import FWCore.ParameterSet.Config as cms
import FWCore.ParameterSet.VarParsing as VarParsing
import os

options = VarParsing.VarParsing()

options.register('dbformat',
                 'Legacy', #default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.string,
                 "DB format to use: 'Legacy' or 'DTRecoConditions'")

options.register('type',
                 'TTrigDB', #default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.string,
                 "Database to read: 'TZeroDB', 'TTrigDB',  'VDriftDB',  or 'UncertDB'")

options.register('inputfile',
                 '', #default value
                 VarParsing.VarParsing.multiplicity.singleton,
                 VarParsing.VarParsing.varType.string,
                 "Input text file to be converted")


options.parseArguments()

DBFORMAT  = options.dbformat
TYPE      = options.type
INPUTFILE = options.inputfile

#Input sanification

if DBFORMAT not in ['Legacy', 'DTRecoConditions'] :
    print('\nERROR: invalid value for dbformat: ',  DBFORMAT,'\n')
    exit()
    
if TYPE not in ['TZeroDB', 'TTrigDB',  'VDriftDB', 'UncertDB'] :
    print('\nERROR: invalid value for type: ',  TYPE,'\n')
    exit()

if INPUTFILE == '' :
    print('\nERROR: must specify inputfile\n')
    exit()
    


process = cms.Process("DumpFileToDB")
process.load("CondCore.DBCommon.CondDBSetup_cfi")


process.source = cms.Source("EmptySource",
    numberEventsInRun = cms.untracked.uint32(1),
    firstRun = cms.untracked.uint32(1)
)

process.maxEvents = cms.untracked.PSet(
    input = cms.untracked.int32(1)
)



OUTPUTFILE = INPUTFILE.replace('.txt','')+"_"+DBFORMAT+".db"


RECORD=""
GRANULARITY = "bySL"

if TYPE=="TZeroDB" :
    RECORD = "DTT0Rcd"
    GRANULARITY = "byWire"
if DBFORMAT=="Legacy" :
    if TYPE=="TTrigDB" : RECORD = "DTTtrigRcd"
    if TYPE=="VDriftDB" : RECORD = "DTMtimeRcd"
    if TYPE=="UncertDB" :
        RECORD = ""
        print('\nERROR, Legacy RecoUncertDB is no longer supported')
elif DBFORMAT=="DTRecoConditions" :
    if TYPE=="TTrigDB" : RECORD = "DTRecoConditionsTtrigRcd"
    if TYPE=="VDriftDB" : RECORD = "DTRecoConditionsVdriftRcd"
    if TYPE=="UncertDB" :
        RECORD = "DTRecoConditionsUncertRcd"
        TYPE='RecoUncertDB'
try:
    os.remove(OUTPUTFILE)
except OSError:
    pass


print('\n Reading ', TYPE, ' from ', INPUTFILE)
print('      Record : ', RECORD)
print('writing db file : ', OUTPUTFILE, '\n')


process.PoolDBOutputService = cms.Service("PoolDBOutputService",
                                          process.CondDBSetup,
                                          connect = cms.string("sqlite_file:"+OUTPUTFILE),
                                          toPut = cms.VPSet(cms.PSet(record = cms.string(RECORD),
                                                                     tag = cms.string(TYPE)))
                                          )



#Module to convert calibration table into a DB file
process.dumpToDB = cms.EDAnalyzer("DumpFileToDB",
                                  calibFileConfig = cms.untracked.PSet(
                                      calibConstFileName = cms.untracked.string(INPUTFILE),
                                      calibConstGranularity = cms.untracked.string(GRANULARITY),
                                      ),
                                  dbFormat = cms.untracked.string(DBFORMAT),
                                  dbToDump = cms.untracked.string(TYPE),
                                )




process.p = cms.Path(process.dumpToDB)