5 print "Error: please, specify the configuration file" 8 configFile = sys.argv[1]
10 if os.path.isfile(configFile):
11 print "Using configuration file:", configFile
13 print "Error: configuration file", configFile,
"not found" 17 import HDQMDatabaseProducerConfiguration
21 import DiscoverDQMFiles
32 if len(config.RecoTypes) == 0:
33 fullList = discoverDQMFiles.filesList(config.SourceDir)
37 keys[file.split(
"__")[2]] = 1
38 print "Found the following reco types:", keys.keys()
39 config.RecoTypes = keys.keys()
42 recoTypesFile = open(
'recoTypesFile.txt',
'w')
47 for recoType
in config.RecoTypes:
49 fullList = discoverDQMFiles.filesList(config.SourceDir, recoType)
50 for subDetAndTag
in config.SubDetsAndTags:
51 FullTagName = config.TagName+
"_"+subDetAndTag.SubDet+
"_"+subDetAndTag.Tag
53 import DiscoverProcessedRuns
56 discoverProcessedRuns.Database = config.Database
57 discoverProcessedRuns.AuthenticationPath = config.AuthenticationPath
58 discoverProcessedRuns.CMSSW_Version = config.CMSSW_Version
59 discoverProcessedRuns.TagName = FullTagName
61 processedRuns = discoverProcessedRuns.runsList()
64 filteredList =
list(fullList)
65 for run
in processedRuns:
67 if( file.find(run) != -1 ):
70 filteredList.remove(file)
72 print "Error, trying to remove file:", file,
"twice!" 76 filteredList = sorted(filteredList, key=
lambda run: run.split(
"R0")[1].
split(
"__")[0])
77 runsToSkip =
int(config.RunsToSkip)
79 for lastRun
in range(runsToSkip):
83 tempDir = config.BaseDir+
"/"+subDetAndTag.SubDet+
"_"+config.RunType+
"/" 84 if not os.path.isdir(tempDir):
87 for file
in filteredList:
88 runNumber =
int(file.split(
"R0")[1].
split(
"__")[0])
90 populateDB.RunNumber =
str(runNumber)
91 populateDB.AuthenticationPath = config.AuthenticationPath
92 populateDB.Database = config.Database
93 populateDB.TagName = FullTagName
94 populateDB.FileName = file
95 populateDB.TemplatesDir = config.TemplatesDir
96 populateDB.DetName = subDetAndTag.SubDet
97 populateDB.Dir = config.BaseDir+
"/"+subDetAndTag.SubDet+
"_"+config.RunType+
"/" 98 populateDB.CMSSW_Version = config.CMSSW_Version
103 if len(filteredList) == 0:
104 print "Creating plots" 106 producePlots.Dir = config.BaseDir+
"/" 107 producePlots.TagName = FullTagName
108 producePlots.DetName = subDetAndTag.SubDet
109 producePlots.StorageDir = config.StorageDir
110 producePlots.BaseDir = config.BaseDir
111 producePlots.FirstRun =
str(config.FirstRun)
112 producePlots.CMSSW_Version = config.CMSSW_Version
113 producePlots.Database = config.Database
114 producePlots.Password = PASSWORD
115 producePlots.RunType = config.RunType
116 producePlots.Group = config.Group
117 producePlots.QualityFlag = subDetAndTag.QualityFlag
119 producePlots.makePlots()
122 recoTypesFile.write(recoType+
"\n")
124 recoTypesFile.close()
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run