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 120 121 122 123 124 125 126 127 128 129 130 131 132
import FWCore.ParameterSet.Config as cms
process = cms.Process("CALIB")

####################################################
def getFileInPath(rfile):
####################################################
   import os
   for dir in os.environ['CMSSW_SEARCH_PATH'].split(":"):
     if os.path.exists(os.path.join(dir,rfile)): return os.path.join(dir,rfile)
   return None

process.MessageLogger = cms.Service("MessageLogger",
    cerr = cms.untracked.PSet(
        enable = cms.untracked.bool(False)
    ),
    cout = cms.untracked.PSet(
        enable = cms.untracked.bool(True),
        threshold = cms.untracked.string('INFO')
    ),
    debugModules = cms.untracked.vstring('')
)

process.source = cms.Source("EmptyIOVSource",
    timetype = cms.string('runnumber'),
    firstValue = cms.uint64(1), # Specify the first run number for which the masking should be done
    lastValue = cms.uint64(1),  # Specify the first run number for which the masking should be done
    interval = cms.uint64(1)
)

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


### Example of APVs to be masked
#DetId369141286_APV0
#DetId369141286_APV1
#DetId369141862_APV0
#DetId369141862_APV1
#DetId369157180_APV0
#DetId369157180_APV1
#DetId436244845_APV0
#DetId436244845_APV1
#DetId436245994_APV0
#DetId436245994_APV1
#DetId436248977_APV0

detIDsFileName = getFileInPath('CalibTracker/SiStripCommon/data/SiStripDetInfo.dat')
detDict = {}
with open(detIDsFileName,"r") as detIDs:  # create dictionary online -> rawid
    for entry in detIDs:
        fields = entry.strip().split()
        detDict[fields[0]]=fields[1]

#print(detDict)

APVsToKill = []
for det,napv in detDict.items():
    APVsToKill.append(
        cms.PSet(
            DetId = cms.uint32(int(det)),        	 
            APVs = cms.vuint32( 0,1 if int(napv)<6 else 2,3,4,5  ),       
            )
        )

#Populate ES
process.load("CalibTracker.SiStripESProducers.fake.SiStripBadModuleConfigurableFakeESSource_cfi")
from CalibTracker.SiStripESProducers.fake.SiStripBadModuleConfigurableFakeESSource_cfi import siStripBadModuleConfigurableFakeESSource
siStripBadModuleConfigurableFakeESSource.doByAPVs = cms.untracked.bool(True)  
siStripBadModuleConfigurableFakeESSource.BadComponentList = cms.untracked.VPSet()
siStripBadModuleConfigurableFakeESSource.BadAPVList = cms.untracked.VPSet(*APVsToKill)
    # cms.PSet(
    #     DetId = cms.uint32(369141286),        	 
    #     APVs = cms.vuint32(0,1),       
    #     ),
    # cms.PSet(
    #     DetId = cms.uint32(369141862),        	 
    #     APVs = cms.vuint32(0,1),       
    #     ),
    # cms.PSet(
    #     DetId = cms.uint32(369157180),        	 
    #     APVs = cms.vuint32(0,1),       
    #     ),
    # cms.PSet(
    #     DetId = cms.uint32(436244845),        	 
    #     APVs = cms.vuint32(0,1),       
    #     )
    #)

#Write on DB
process.load("CalibTracker.SiStripESProducers.DBWriter.SiStripBadModuleDummyDBWriter_cfi")
process.siStripBadModuleDummyDBWriter.OpenIovAt = cms.untracked.string("currentTime")

process.PoolDBOutputService = cms.Service("PoolDBOutputService",
    BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
    DBParameters = cms.PSet(
        messageLevel = cms.untracked.int32(2),
        authenticationPath = cms.untracked.string('/afs/cern.ch/cms/DB/conddb')
    ),
    timetype = cms.untracked.string('runnumber'),
    connect = cms.string('sqlite_file:SiStripBadComponentsToMask.db'),
    toPut = cms.VPSet(cms.PSet(
        record = cms.string('SiStripBadStrip'),
        tag = cms.string('SiStripBadComponentsToMask')
        ))
)


###### Quality ESProducer                                                                       
process.load("CalibTracker.SiStripESProducers.SiStripQualityESProducer_cfi")
process.siStripQualityESProducer.ListOfRecordToMerge = cms.VPSet(
     cms.PSet( record = cms.string("SiStripBadModuleRcd"),  tag    = cms.string("") )
     )

#### Add these lines to produce a tracker map
# load TrackerTopology (needed for TkDetMap and TkHistoMap)
process.load("Configuration.Geometry.GeometryExtended2017_cff")
process.load("Geometry.TrackerGeometryBuilder.trackerParameters_cfi")
process.TrackerTopologyEP = cms.ESProducer("TrackerTopologyEP")
process.load("DQM.SiStripCommon.TkHistoMap_cff")
####

from CalibTracker.SiStripQuality.siStripQualityStatistics_cfi import siStripQualityStatistics
process.reader = siStripQualityStatistics.clone(
        TkMapFileName = cms.untracked.string("TkMapBadComponents_byHand.png")
        )


process.siStripBadModuleDummyDBWriter.record=process.PoolDBOutputService.toPut[0].record
process.p = cms.Path(process.reader*process.siStripBadModuleDummyDBWriter)