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 133 134 135 136 137 138
# -----------------------------------------------------------------------------
# o2o-template_cfg.py : cmsRun configuration file for o2o DCS extraction
#
# Author  : Jo Cole
# Changes : Marco DeMattia
#           Dave Schudel
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# Import configuration information & define our process
# -----------------------------------------------------------------------------
import FWCore.ParameterSet.Config as cms
import os

process = cms.Process("DCSO2O")

# -----------------------------------------------------------------------------
# Load our message logger
# -----------------------------------------------------------------------------
# process.load("CalibTracker.SiStripDCS.MessLogger_cfi")
process.MessageLogger = cms.Service( "MessageLogger",
                                     debugModules = cms.untracked.vstring( "*" ),
                                     cout = cms.untracked.PSet( threshold = cms.untracked.string( "DEBUG" ) ),
                                     destinations = cms.untracked.vstring( "cout" )
                                     )

# -----------------------------------------------------------------------------
# These lines are needed to run an EDAnalyzer without events.  We need to
#   specify an "EmptySource" so it doesn't try to load analysis data when it
#   starts up.  The maxEvents is set to 1 here - this tells the program how
#   many times to call the analyze() method in the EDAnalyzer.
# -----------------------------------------------------------------------------
process.maxEvents = cms.untracked.PSet(
    input = cms.untracked.int32(1)
)
process.source = cms.Source("EmptySource",
    numberEventsInRun = cms.untracked.uint32(1),
    firstRun = cms.untracked.uint32(1)
)

# -----------------------------------------------------------------------------
# Define our ModuleHVBuilder process.  
#
# Parameters:
#   onlineDB            : the connection string for the database
#   authPath            : set to be $HOME
#   Tmin                : start date & time to extract data
#   Tmax                : end date & time to extract data
#   TSetMin             : <unknown>
#   queryType           : not needed any more - used to specify LASTVALUE or
#                           STATUSCHANGE query.  We use STATUSCHANGE now.
#   lastValueFile       : not needed
#   lastValueFromFile   : 
#   debugModeOn         : sets debug flag
# -----------------------------------------------------------------------------

process.SiStripDetVOffBuilder = cms.Service(
    "SiStripDetVOffBuilder",
    onlineDB = cms.string('oracle://cms_omds_lb/CMS_TRK_R'),
    authPath = cms.string(os.environ["HOME"]),

    #The Tmin and Tmax indicated here drive the ManualO2O.py script setting the overall interval
    #By default this is broken into 1 hour O2O jobs (1 cmsRun cfg per hour interval)
    # Format for date/time vector:  year, month, day, hour, minute, second, nanosecond      
    Tmin = cms.vint32(_TMIN_),
    Tmax = cms.vint32(_TMAX_),
    
    # Do NOT change this unless you know what you are doing!
    TSetMin = cms.vint32(2007, 11, 26, 0, 0, 0, 0),
    
    # queryType can be either STATUSCHANGE or LASTVALUE                                
    queryType = cms.string('STATUSCHANGE'),
    
    #Length in seconds of minimum deltaT for 2 consecutive IOVs in the original data to be considered separately and not be merged by the IOV reduction
    DeltaTmin = cms.uint32(2),

    #Length in seconds of the maximum time an IOV sequence can be (i.e. one can be compressing sequences up to 120 seconds long, after that a new IOV would be made)
    MaxIOVlength = cms.uint32(90),

    # if reading lastValue from file put insert file name here                              
    lastValueFile = cms.string(''),
    
    # flag to show if you are reading from file for lastValue or not                              
    lastValueFromFile = cms.bool(False),
    
    # flag to toggle debug output
    debugModeOn = cms.bool(False),

    
    # DetIdFile
    #Remember to change this to a Pixel list if you are testing the O2O code with Pixels before
    #the proper migration is done...
    DetIdListFile = cms.string('CalibTracker/SiStripCommon/data/SiStripDetInfo.dat'),

    # Threshold to consider an HV channel on
    HighVoltageOnThreshold = cms.double(0.97),

    # Leave empty if you want to use the db
    PsuDetIdMapFile = cms.string("CalibTracker/SiStripDCS/data/StripPSUDetIDMap_FromFeb2016.dat"),

    #This excluded detids file is not currently used (it was needed when there were unmapped detids.
    ExcludedDetIdListFile = cms.string('')
)

# -----------------------------------------------------------------------------
# Service to write our data to the sqlite db.  This service is 
#   called from the endJob() method of the PopConAnalyzer class (which we have 
#   as SiStripPopConModuleHV) - that's why you won't find a call to it in the
#   DCS code.
#
# Parameters: (need to document..)
#   messageLevel
#   authenticationPath
#   timetype
#   connect
#   toPut
#     record
#     tag
#   logconnect
# -----------------------------------------------------------------------------

process.load("CondCore.CondDB.CondDB_cfi")
process.siStripPopConDetVOff = cms.EDAnalyzer( "SiStripO2ODetVOff",
                                     process.CondDB,
                                     # Get the last IOV from conditionDatabase.
#                                     conditionDatabase = cms.string("oracle://cms_orcon_prod/CMS_CONDITIONS"),
                                     # Leave empty for manual restart (will then get the last IOV from sqlite condDbFile). 
                                     conditionDatabase = cms.string(""),
                                     condDbFile = cms.string("sqlite:%s" % "_DBFILE_"),
                                     targetTag = cms.string("_TAG_"),
                                     # max length (in hours) before a new IOV is started for the same payload (use -1 to disable this)
                                     maxTimeBeforeNewIOV = cms.untracked.int32(168)
                                     )

# -----------------------------------------------------------------------------
# Specify the processes to be run.  Here, we only run one.
# -----------------------------------------------------------------------------
process.p = cms.Path(process.siStripPopConDetVOff)