Skip to content

Commit 4ee2bf4

Browse files
committed
new harvester and worker python config
1 parent 27d6a1f commit 4ee2bf4

4 files changed

Lines changed: 563 additions & 107 deletions

File tree

Analyzer/DiamondTimingAnalyzer/python/harvester.py

Lines changed: 111 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import FWCore.ParameterSet.Config as cms
22
from FWCore.ParameterSet.VarParsing import VarParsing
33
from RecoPPS.Local.ctppsDiamondLocalReconstruction_cff import *
4+
from Geometry.VeryForwardGeometry.geometryRPFromDB_cfi import *
5+
46

57
process = cms.Process("TIMINGSTUDY")
68
options = VarParsing ('analysis')
@@ -10,6 +12,8 @@
1012

1113
# minimum of logs
1214
process.load("FWCore.MessageService.MessageLogger_cfi")
15+
# process.MessageLogger.cerr.threshold = "INFO"
16+
# process.MessageLogger.cerr.INFO.limit = -1
1317
process.MessageLogger.cerr.FwkReport.reportEvery = 1000
1418

1519
options.register ('rootFiles',
@@ -18,6 +22,12 @@
1822
VarParsing.varType.string,
1923
"root files produced by DQMWorker")
2024

25+
options.register ('outputDirectoryRoot',
26+
'OutputHarvester',
27+
VarParsing.multiplicity.singleton, #TODO: it was designed to be a list revert change before merging
28+
VarParsing.varType.string,
29+
"root output dircetory")
30+
2131
# options.register ('calibInput',
2232
# '',
2333
# VarParsing.multiplicity.singleton,
@@ -36,12 +46,6 @@
3646
VarParsing.varType.string,
3747
"Input file")
3848

39-
options.register ('geometryFile',
40-
'Geometry.VeryForwardGeometry.geometryRPFromDD_2022_cfi',
41-
VarParsing.multiplicity.singleton,
42-
VarParsing.varType.string,
43-
"Geometry input file")
44-
4549
options.register ('calibFiles',
4650
[],
4751
VarParsing.multiplicity.list,
@@ -65,6 +69,21 @@
6569
VarParsing.multiplicity.singleton,
6670
VarParsing.varType.float,
6771
"max rms of t distribution")
72+
73+
options.register('sqlFileName',
74+
'',
75+
VarParsing.multiplicity.singleton,
76+
VarParsing.varType.string,
77+
'sqlFileNameForCalib'
78+
)
79+
80+
options.register('useDB',
81+
'',
82+
VarParsing.multiplicity.singleton,
83+
VarParsing.varType.string,
84+
'use data base for calibraiton'
85+
)
86+
6887

6988
options.parseArguments()
7089

@@ -84,33 +103,104 @@
84103
from Configuration.AlCa.GlobalTag import GlobalTag
85104
process.GlobalTag = GlobalTag(process.GlobalTag, '124X_dataRun3_v9', '')
86105

87-
if options.calibInput == '':
88-
process.GlobalTag.toGet = cms.VPSet(
89-
cms.PSet(record = cms.string('PPSTimingCalibrationRcd'),
90-
tag = cms.string('PPSDiamondTimingCalibration_Run3_v1_hlt'),
91-
connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
106+
### SET TIME SHIFT SOURCE BEGIN
107+
if options.useDB=='True':
108+
use_db=True
109+
elif options.useDB=='False':
110+
use_db=False
111+
elif options.useDB!='':
112+
assert 'UseDB paramter is not valid. It should be True or False (case sensitive)'
113+
else:
114+
use_db=False
115+
116+
117+
# if((options.sqlFileName != '') ^ (options.calibInput != '') ^ (options.useDB !='')):
118+
# assert 'Please specify exactly one source of time shift paramiters. One from set {calib.json, SQLLite File or globalDB}'
119+
120+
use_sqlite_file = options.sqlFileName != ''
121+
if (use_sqlite_file):
122+
print('Using SQL file')
123+
process.load('CondCore.CondDB.CondDB_cfi')
124+
process.CondDB.connect = options.sqlFileName # SQLite input TODO: migrate to using tag
125+
process.PoolDBESSource = cms.ESSource('PoolDBESSource',
126+
process.CondDB,
127+
DumpStats = cms.untracked.bool(True),
128+
toGet = cms.VPSet(
129+
cms.PSet(
130+
record = cms.string('PPSTimingCalibrationRcd'),
131+
tag = cms.string('DiamondTimingCalibration'),
132+
label = cms.untracked.string('PPSTestCalibration'),
133+
)
92134
)
135+
)
136+
elif options.calibInput != '':
137+
print('Using CalibInput file ')
138+
process.ppsTimingCalibrationESSource = cms.ESSource('PPSTimingCalibrationESSource',
139+
calibrationFile = cms.string(options.calibInput),
140+
subDetector = cms.uint32(2),
141+
appendToDataLabel = cms.string('')
142+
)
143+
else: #default use db
144+
print('Using db')
145+
process.GlobalTag.toGet = cms.VPSet()
146+
process.GlobalTag.toGet.append(
147+
cms.PSet(record = cms.string("PPSTimingCalibrationRcd"),
148+
tag = cms.string("PPSDiamondTimingCalibration_Run3_recovered_v1"),
149+
label = cms.untracked.string('PPSTestCalibration'),
150+
connect = cms.string("frontier://FrontierPrep/CMS_CONDITIONS")
151+
)
93152
)
94-
else:
95-
process.ppsTimingCalibrationESSource = cms.ESSource('PPSTimingCalibrationESSource',
96-
calibrationFile = cms.string(options.calibInput),
97-
subDetector = cms.uint32(2),
98-
appendToDataLabel = cms.string('')
99-
)
153+
#TODO: uncomment below when delete sqlite file dependency
154+
# process.GlobalTag.toGet = cms.VPSet(
155+
# cms.PSet(record = cms.string('PPSTimingCalibrationRcd'),
156+
# tag = cms.string('PPSDiamondTimingCalibration_Run3_v1_hlt'), # working tag: PPSDiamondTimingCalibration_Run3_v1_hlt
157+
# #TODO: old tag PPSDiamondTimingCalibration_v1 - to delete
158+
# connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
159+
# )
160+
# )
161+
### SET TIME SHIFT SOURCE END
100162

101163
# rechits production
102164
process.load("DQM.Integration.config.environment_cfi")
103165
process.load("DQMServices.Components.DQMEnvironment_cfi")
104-
process.load(options.geometryFile)
105-
106-
process.diamondTimingHarvester = DQMEDHarvester("DiamondTimingHarvester",
166+
process.load('Geometry.VeryForwardGeometry.geometryRPFromDB_cfi') #TODO: use geometry form DB not from file
167+
168+
# PROCESS HARVESTER:
169+
if(options.calibInput != ''):
170+
process.diamondTimingHarvester = DQMEDHarvester("DiamondTimingHarvester",
171+
# timingCalibrationTag=cms.string("PoolDBESSource:PPSTestCalibration"),
172+
# timingCalibrationTag=cms.string("PPSTimingCalibrationESSource:PPSTiming"),
173+
# timingCalibrationTag=cms.string("PoolDBESSource:PPSTestCalibration"),
174+
timingCalibrationTag=cms.string(":"),
175+
calib_json_output = cms.string(options.calibOutput),
176+
calibFiles = cms.vstring(options.calibFiles),
177+
loopIndex = cms.int32(options.loopIndex),
178+
meanMax = cms.double(options.meanMax),
179+
rmsMax = cms.double(options.rmsMax)
180+
)
181+
elif (use_sqlite_file):
182+
process.diamondTimingHarvester = DQMEDHarvester("DiamondTimingHarvester",
183+
timingCalibrationTag=cms.string("PoolDBESSource:PPSTestCalibration"),
107184
calib_json_output = cms.string(options.calibOutput),
108-
calibInput = cms.string(options.calibInput),
109185
calibFiles = cms.vstring(options.calibFiles),
110186
loopIndex = cms.int32(options.loopIndex),
111187
meanMax = cms.double(options.meanMax),
112188
rmsMax = cms.double(options.rmsMax)
113189
)
190+
else: # defualt use db
191+
process.diamondTimingHarvester = DQMEDHarvester("DiamondTimingHarvester",
192+
timingCalibrationTag=cms.string("GlobalTag:PPSTestCalibration"),
193+
calib_json_output = cms.string(options.calibOutput),
194+
calibFiles = cms.vstring(options.calibFiles),
195+
loopIndex = cms.int32(options.loopIndex),
196+
meanMax = cms.double(options.meanMax),
197+
rmsMax = cms.double(options.rmsMax)
198+
)
199+
# else:
200+
# assert "need to provide timing calibration tag from json, slq file or db"
201+
202+
# process.diamondTimingHarvester.timingCalibrationTag=cms.string("PoolDBESSource:PPSTestCalibration")
203+
114204

115205
#CONFIGURE DQM Saver
116206
process.dqmEnv.subSystemFolder = "CalibPPS"
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
#start with the https://github.com/cms-sw/cmssw/blob/master/RecoPPS/Local/test/diamonds_reco_cfg.py
2+
# 1. start with AOD file
3+
# 2. apply SQL lite
4+
# 3. new AOD with shift?? -> check produce DQM files
5+
6+
7+
import FWCore.ParameterSet.Config as cms
8+
from FWCore.ParameterSet.VarParsing import VarParsing
9+
10+
process = cms.Process('PPSTestCalibration')
11+
12+
options = VarParsing ('analysis')
13+
options.register('sqlFileName',
14+
'sqlite_file:/afs/cern.ch/user/m/mobrzut/public/timing_sqlcalib/ppsDiamondTiming_calibration357440.sqlite',
15+
VarParsing.multiplicity.singleton,
16+
VarParsing.varType.string,
17+
'sqlFileNameForCalib'
18+
)
19+
20+
options.register('maxEventsToProcess',
21+
10000,
22+
VarParsing.multiplicity.singleton,
23+
VarParsing.varType.int,
24+
'maxEvents to process'
25+
)
26+
27+
28+
29+
options.parseArguments()
30+
31+
32+
33+
# import of standard configurations
34+
process.load('Configuration.StandardSequences.Services_cff')
35+
process.load('FWCore.MessageService.MessageLogger_cfi')
36+
process.load('Configuration.EventContent.EventContent_cff')
37+
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
38+
39+
40+
#load GT:
41+
from Configuration.AlCa.GlobalTag import GlobalTag
42+
# 2022 prompt: to be updated
43+
process.GlobalTag = GlobalTag(process.GlobalTag, "124X_dataRun3_v9")
44+
45+
#load condDB
46+
process.load('CondCore.CondDB.CondDB_cfi')
47+
process.CondDB.connect = options.sqlFileName
48+
process.PoolDBESSource = cms.ESSource('PoolDBESSource',
49+
process.CondDB,
50+
DumpStats = cms.untracked.bool(True),
51+
toGet = cms.VPSet(
52+
cms.PSet(
53+
record = cms.string('PPSTimingCalibrationRcd'),
54+
tag = cms.string('DiamondTimingCalibration'),
55+
label = cms.untracked.string('PPSTestCalibration'), # todo added by Chrys
56+
57+
)
58+
)
59+
)
60+
61+
process.source = cms.Source ("PoolSource",
62+
fileNames = cms.untracked.vstring(
63+
# RUN 440 - "357440": [[1,354]],
64+
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/53746080-d21b-4fdf-9d19-67c6dae347ac.root",
65+
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/b8d3f012-0b59-43b4-adbc-811bcb59c9c4.root",
66+
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/cfa9f82a-5296-49cf-8353-11f8761b675c.root",
67+
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/db3c6c33-9ad0-4d61-9a64-a1aa9578550e.root"
68+
),
69+
)
70+
71+
process.maxEvents = cms.untracked.PSet(
72+
input = cms.untracked.int32(options.maxEventsToProcess)
73+
)
74+
75+
process.MessageLogger.cerr.FwkReport.reportEvery = cms.untracked.int32( 1000 )
76+
77+
78+
79+
# local RP reconstruction chain with standard settings
80+
process.load("RecoPPS.Configuration.recoCTPPS_cff")
81+
82+
# rechits production
83+
from Geometry.VeryForwardGeometry.geometryRPFromDB_cfi import * # TODO it looks like it can be deleted
84+
process.load('Geometry.VeryForwardGeometry.geometryRPFromDB_cfi') #TODO: use geometry form DB not from file
85+
86+
process.load('RecoPPS.Local.ctppsDiamondRecHits_cfi')
87+
88+
# local tracks fitter
89+
process.load('RecoPPS.Local.ctppsDiamondLocalTracks_cfi')
90+
91+
92+
process.ctppsDiamondLocalTracks.recHitsTag = cms.InputTag("ctppsDiamondRecHits","","Shift")
93+
process.ctppsLocalTrackLiteProducer.tagDiamondTrack = cms.InputTag("ctppsDiamondLocalTracks","","Shift")
94+
process.ctppsProtons.tagLocalTrackLite = cms.InputTag("ctppsLocalTrackLiteProducer","","Shift")
95+
process.ctppsLocalTrackLiteProducer.includeDiamonds = cms.bool(True)
96+
process.ctppsLocalTrackLiteProducer.tagPixelTrack = cms.InputTag("ctppsPixelLocalTracksAlCaRecoProducer")
97+
process.ctppsLocalTrackLiteProducer.includePixels = cms.bool(True)
98+
process.ctppsDiamondRecHits.timingCalibrationTag=cms.string("PoolDBESSource:PPSTestCalibration")
99+
process.ctppsDiamondRecHits.digiTag= cms.InputTag("ctppsDiamondRawToDigiAlCaRecoProducer:TimingDiamond")
100+
101+
102+
# process.output = cms.OutputModule("PoolOutputModule",
103+
# fileName = cms.untracked.string("file:AOD.root"),
104+
# outputCommands = cms.untracked.vstring(
105+
# 'drop *',
106+
# 'keep *_ctpps*_*_*',
107+
# ),
108+
# )
109+
110+
# DQM DQM DQM DQM
111+
process.load("DQM.Integration.config.environment_cfi")
112+
process.dqmEnv.subSystemFolder = "Analyzer"
113+
process.dqmEnv.eventInfoFolder = "EventInfo"
114+
process.dqmSaver.path = ""
115+
process.dqmSaver.tag = "CTPPS"
116+
# process.dqmEnv.subSystemFolder = "Analyzer"
117+
# process.dqmSaver.workflow = "/Analyzer/DiamondTimingAnalyzer/worker"
118+
process.load("DQMServices.Components.DQMEnvironment_cfi")
119+
# process.dqmEnv.subSystemFolder = "CalibPPS"
120+
process.dqmSaver.workflow = "/Analyzer/DiamondTimingAnalyzer/PPSTestCalibration"
121+
122+
123+
# process.load("DQM.Integration.config.environment_cfi")
124+
# process.dqmEnv.eventInfoFolder = "EventInfo"
125+
# process.dqmSaver.path = ""
126+
# process.dqmSaver.tag = "CTPPS"
127+
# # process.load("DQMServices.Core.DQMStore_cfi")
128+
# process.load("DQMServices.Components.DQMEnvironment_cfi")
129+
# process.dqmEnv.subSystemFolder = "CalibPPS"
130+
# process.dqmSaver.convention = 'Offline'
131+
# process.dqmSaver.workflow = "/CalibPPS/TimingCalibration/CMSSW_12_0_0_pre2"
132+
# # process.dqmSaver.workflow =""
133+
134+
# # process.dqmSaver.saveByRun = -1
135+
# process.dqmSaver.saveAtJobEnd = True
136+
137+
138+
process.dqmOutput = cms.OutputModule("DQMRootOutputModule",
139+
fileName = cms.untracked.string('AOD_DQM.root')
140+
)
141+
142+
process.load("DQMServices.Components.EDMtoMEConverter_cff")
143+
process.end_path = cms.EndPath( process.dqmEnv + process.dqmSaver )
144+
145+
# execution configuration
146+
process.p = cms.Path(
147+
# process.ctppsDiamondRecHits *
148+
# process.ctppsDiamondLocalTracks
149+
process.ctppsDiamondLocalReconstruction
150+
151+
)
152+
153+
# process.outpath = cms.EndPath(process.output)
154+
155+
process.schedule = cms.Schedule(process.p, process.end_path)

0 commit comments

Comments
 (0)