Skip to content

Commit

Permalink
Merge pull request #44044 from CTPPS/CMSSW_14_1_X_feature_hltGtStage2…
Browse files Browse the repository at this point in the history
…Digis_in_ALCARECO

[PPS] Added gtStage2DigisAlCaRecoProducer  to ALCARECOPRODUCER
  • Loading branch information
cmsbuild authored Mar 4, 2024
2 parents 38abdb6 + 6e62922 commit 927f3ed
Show file tree
Hide file tree
Showing 10 changed files with 130 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
'keep recoForwardProtons_ctppsProtonsAlCaRecoProducer_*_*',

# HLT info
'keep *_hltGtStage2ObjectMap_*_*',
'keep *_gtStage2DigisAlCaRecoProducer_*_*',
'keep edmTriggerResults_*_*_*',
'keep triggerTriggerEvent_*_*_*'
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,18 @@
from EventFilter.CTPPSRawToDigi.ctppsRawToDigi_cff import ctppsDiamondRawToDigi as _ctppsDiamondRawToDigi
from EventFilter.CTPPSRawToDigi.ctppsRawToDigi_cff import totemTimingRawToDigi as _totemTimingRawToDigi
from EventFilter.CTPPSRawToDigi.ctppsRawToDigi_cff import ctppsPixelDigis as _ctppsPixelDigis
from EventFilter.L1TRawToDigi.gtStage2Digis_cfi import gtStage2Digis as _gtStage2Digis

ctppsDiamondRawToDigiAlCaRecoProducer = _ctppsDiamondRawToDigi.clone(rawDataTag = 'hltPPSCalibrationRaw')
totemTimingRawToDigiAlCaRecoProducer = _totemTimingRawToDigi.clone(rawDataTag = 'hltPPSCalibrationRaw')
ctppsPixelDigisAlCaRecoProducer = _ctppsPixelDigis.clone(inputLabel = 'hltPPSCalibrationRaw')
gtStage2DigisAlCaRecoProducer = _gtStage2Digis.clone(InputLabel="hltFEDSelectorL1")

ctppsRawToDigiTaskAlCaRecoProducer = cms.Task(
ctppsDiamondRawToDigiAlCaRecoProducer,
totemTimingRawToDigiAlCaRecoProducer,
ctppsPixelDigisAlCaRecoProducer
ctppsPixelDigisAlCaRecoProducer,
gtStage2DigisAlCaRecoProducer
)

ALCARECOPPSCalMaxTracksRaw2Digi = cms.Sequence(ctppsRawToDigiTaskAlCaRecoProducer)
Expand Down
26 changes: 26 additions & 0 deletions Calibration/PPSAlCaRecoProducer/test/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Running tests on lxplus


## Using scram

To be able to run tests locally enable re-director used internally by `cmsbuild`:

```
CMS_PATH="/cvmfs/cms-ib.cern.ch" SITECONFIG_PATH="/cvmfs/cms-ib.cern.ch/SITECONF/local" scram b runtests
```

## Manually (to inspect test output files)

To run the tests in this directory (`Calibration/PPSAlCaRecoProducer/test/`) type:

```
CMS_PATH="/cvmfs/cms-ib.cern.ch" SITECONFIG_PATH="/cvmfs/cms-ib.cern.ch/SITECONF/local" ./test_express_AlCaRecoProducer.sh
```

and

```
SCRAM_TEST_PATH=. ./test_express_PPSAlCaReco_output.sh
```

The same can be done for prompt tests
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
#!/bin/bash
function die { echo $1: status $2; exit $2; }

customise_commands="process.GlobalTag.toGet = cms.VPSet()\
\nprocess.GlobalTag.toGet.append(cms.PSet(record = cms.string(\"AlCaRecoTriggerBitsRcd\"),tag = cms.string(\"AlCaRecoHLTpaths_PPS2022_express_v1\"), connect = cms.string(\"frontier://FrontierProd/CMS_CONDITIONS\")))\
\nprocess.GlobalTag.toGet.append(cms.PSet(record = cms.string(\"PPSTimingCalibrationLUTRcd\"),tag = cms.string(\"PPSDiamondTimingCalibrationLUT_test\"), connect = cms.string(\"frontier://FrontierProd/CMS_CONDITIONS\")))\
\nprocess.ALCARECOPPSCalMaxTracksFilter.TriggerResultsTag = cms.InputTag(\"TriggerResults\",\"\",\"HLTX\")"
# customisation command needed for all tests cases
COMMON_CUSTOM="process.ALCARECOPPSCalMaxTracksFilter.TriggerResultsTag = cms.InputTag(\"TriggerResults\",\"\",\"HLTX\")"

INPUTFILE="/store/group/alca_global/pps_alcareco_producer_tests/outputALCAPPS_single.root"
COMMMAND=`xrdfs cms-xrd-global.cern.ch locate $INPUTFILE`
STATUS=$?
echo "xrdfs command status = "$STATUS
if [ $STATUS -eq 0 ]; then
echo "Using file ${INPUTFILE}. Running in ${SCRAM_TEST_PATH}."
# test on 2022 data
INPUTFILE_355207="/store/data/Run2022B/AlCaPPS/RAW/v1/000/355/207/00000/c23440f4-49c0-44aa-b8f6-f40598fb4705.root"

# new test on generated data, with same structure as data expected in 2024
INPUTFILE_367104="/store/group/alca_global/pps_alcareco_producer_tests/outputALCAPPSExpress.root"

# all input files and customisation commands to loop through
INPUTFILES=($INPUTFILE_355207 $INPUTFILE_367104)

# test case loop
for TEST_RUN_NO in {0..1}; do
INPUTFILE=${INPUTFILES[$TEST_RUN_NO]}
echo "Using file: ${INPUTFILE} , Running in: ${SCRAM_TEST_PATH} ."
(cmsDriver.py testExpressPPSAlCaRecoProducer -s ALCAPRODUCER:PPSCalMaxTracks,ENDJOB \
--process ALCARECO \
--scenario pp \
--era ctpps_2018 \
--conditions auto:run3_data_express \
--data \
--datatier ALCARECO \
--eventcontent ALCARECO \
--nThreads 8 \
--number 100 --filein ${INPUTFILE} \
--fileout file:outputALCAPPS_RECO_express.root \
--customise_commands="$customise_commands") || die 'failed running test_express_AlCaRecoProducer' $?
else
die "SKIPPING test, file ${INPUTFILE} not found" 0
fi
--process ALCARECO \
--scenario pp \
--era run3_common \
--conditions auto:run3_data_express \
--data \
--datatier ALCARECO \
--eventcontent ALCARECO \
--nThreads 8 \
--number 100 --filein ${INPUTFILE} \
--fileout file:outputALCAPPS_RECO_express_test${TEST_RUN_NO}.root \
--customise_commands="$COMMON_CUSTOM") || die 'failed running test_express_AlCaRecoProducer' $?
done
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
import FWCore.ParameterSet.Config as cms

# load era modifier to run on 2018 data
from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
# load era modifier to run on 2022 data
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022

process = cms.Process( 'TEST',ctpps_2018)
process = cms.Process( 'TEST',ctpps_2022)

# command line options
import FWCore.ParameterSet.VarParsing as VarParsing
options = VarParsing.VarParsing('analysis')
options.register('runNo',
1,
VarParsing.VarParsing.multiplicity.singleton,
VarParsing.VarParsing.varType.int,
"Run number")
options.parseArguments()

run_no = options.runNo

# LHCInfo plotter
process.load('Validation.CTPPS.ctppsLHCInfoPlotter_cfi')
process.ctppsLHCInfoPlotter.outputFile = "alcareco_lhc_info_express.root"
process.ctppsLHCInfoPlotter.outputFile = f"alcareco_lhc_info_express_{run_no}.root"

# Load geometry from DB
process.load("Geometry.VeryForwardGeometry.geometryRPFromDB_cfi")
Expand All @@ -21,7 +33,7 @@
rpId_56_N = cms.uint32(103),
rpId_56_F = cms.uint32(123),

outputFile = cms.string("alcareco_tracks_express.root")
outputFile = cms.string(f"alcareco_tracks_express_{run_no}.root")
)

# reconstruction plotter
Expand All @@ -35,7 +47,7 @@
rpId_56_N = cms.uint32(103),
rpId_56_F = cms.uint32(123),

outputFile = cms.string("alcareco_protons_express.root")
outputFile = cms.string(f"alcareco_protons_express_{run_no}.root")
)

process.p = cms.Path(
Expand All @@ -55,7 +67,7 @@

process.source = cms.Source( 'PoolSource',
fileNames = cms.untracked.vstring(
'file:outputALCAPPS_RECO_express.root',
options.inputFiles,
),
inputCommands = cms.untracked.vstring(
'keep *'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash
function die { echo $1: status $2; exit $2; }

(cmsRun ${SCRAM_TEST_PATH}/test_express_PPSAlCaReco_output.py) || die 'failed running test_express_PPSAlCaReco_output.py' $?
cmsRun ${SCRAM_TEST_PATH}/test_express_PPSAlCaReco_output.py inputFiles=file:outputALCAPPS_RECO_express_test0.root runNo=355207 || die 'failed running test_express_PPSAlCaReco_output.py' $?
cmsRun ${SCRAM_TEST_PATH}/test_express_PPSAlCaReco_output.py inputFiles=file:outputALCAPPS_RECO_express_test1.root runNo=367104 || die 'failed running test_express_PPSAlCaReco_output.py' $?
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
#!/bin/bash
function die { echo $1: status $2; exit $2; }

customise_commands="process.GlobalTag.toGet = cms.VPSet()\
\nprocess.GlobalTag.toGet.append(cms.PSet(record = cms.string(\"AlCaRecoTriggerBitsRcd\"),tag = cms.string(\"AlCaRecoHLTpaths_PPS2022_prompt_v1\"), connect = cms.string(\"frontier://FrontierProd/CMS_CONDITIONS\")))\
\nprocess.GlobalTag.toGet.append(cms.PSet(record = cms.string(\"PPSTimingCalibrationLUTRcd\"),tag = cms.string(\"PPSDiamondTimingCalibrationLUT_test\"), connect = cms.string(\"frontier://FrontierProd/CMS_CONDITIONS\")))\
\nprocess.ALCARECOPPSCalMaxTracksFilter.TriggerResultsTag = cms.InputTag(\"TriggerResults\",\"\",\"HLTX\")"
# customisation command needed for all tests cases
COMMON_CUSTOM="process.ALCARECOPPSCalMaxTracksFilter.TriggerResultsTag = cms.InputTag(\"TriggerResults\",\"\",\"HLTX\")"

INPUTFILE="/store/group/alca_global/pps_alcareco_producer_tests/outputALCAPPS_single.root"
COMMMAND=`xrdfs cms-xrd-global.cern.ch locate $INPUTFILE`
STATUS=$?
echo "xrdfs command status = "$STATUS
if [ $STATUS -eq 0 ]; then
echo "Using file ${INPUTFILE}. Running in ${SCRAM_TEST_PATH}."
# note we currently use `auto:run3_data_express` GT
# the correct GT (auto:run3_data_prompt) doesn't have LHCInfo record for run 322022 which corresponds to our face ALCARAW file
(cmsDriver.py testPromptPPSAlCaRecoProducer -s ALCAPRODUCER:PPSCalMaxTracks,ENDJOB \
--process ALCARECO \
--scenario pp \
--era ctpps_2018 \
--conditions auto:run3_data_express \
--data \
--datatier ALCARECO \
--eventcontent ALCARECO \
--nThreads 8 \
--number 100 --filein ${INPUTFILE} \
--fileout file:outputALCAPPS_RECO_prompt.root \
--customise_commands="$customise_commands") || die 'failed running test_prompt_AlCaRecoProducer' $?
else
die "SKIPPING test, file ${INPUTFILE} not found" 0
fi
# test on 2022 data
INPUTFILE_355207="/store/data/Run2022B/AlCaPPS/RAW/v1/000/355/207/00000/c23440f4-49c0-44aa-b8f6-f40598fb4705.root"

# new test on generated data, with same structure as data expected in 2024
INPUTFILE_367104="/store/group/alca_global/pps_alcareco_producer_tests/outputALCAPPSPrompt.root"

# all input files and customisation commands to loop through
INPUTFILES=($INPUTFILE_355207 $INPUTFILE_367104)

# test case loop
for TEST_RUN_NO in {0..1}; do
INPUTFILE=${INPUTFILES[$TEST_RUN_NO]}
echo "Using file: ${INPUTFILE} , Running in: ${SCRAM_TEST_PATH} ."
(cmsDriver.py testpromptPPSAlCaRecoProducer -s ALCAPRODUCER:PPSCalMaxTracks,ENDJOB \
--process ALCARECO \
--scenario pp \
--era run3_common \
--conditions auto:run3_data_prompt \
--data \
--datatier ALCARECO \
--eventcontent ALCARECO \
--nThreads 8 \
--number 100 --filein ${INPUTFILE} \
--fileout file:outputALCAPPS_RECO_prompt_test${TEST_RUN_NO}.root \
--customise_commands="$COMMON_CUSTOM") || die 'failed running test_prompt_AlCaRecoProducer' $?
done
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
import FWCore.ParameterSet.Config as cms

# load era modifier to run on 2018 data
from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
# load era modifier to run on 2022 data
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022

process = cms.Process( 'TEST',ctpps_2018)
process = cms.Process( 'TEST',ctpps_2022)

# command line options
import FWCore.ParameterSet.VarParsing as VarParsing
options = VarParsing.VarParsing('analysis')
options.register('runNo',
1,
VarParsing.VarParsing.multiplicity.singleton,
VarParsing.VarParsing.varType.int,
"Run number")
options.parseArguments()

run_no = options.runNo

# LHCInfo plotter
process.load('Validation.CTPPS.ctppsLHCInfoPlotter_cfi')
process.ctppsLHCInfoPlotter.outputFile = "alcareco_lhc_info_prompt.root"
process.ctppsLHCInfoPlotter.outputFile = f"alcareco_lhc_info_prompt_{run_no}.root"

# Load geometry from DB
process.load("Geometry.VeryForwardGeometry.geometryRPFromDB_cfi")
Expand All @@ -21,7 +33,7 @@
rpId_56_N = cms.uint32(103),
rpId_56_F = cms.uint32(123),

outputFile = cms.string("alcareco_tracks_prompt.root")
outputFile = cms.string(f"alcareco_tracks_prompt_{run_no}.root")
)

# reconstruction plotter
Expand All @@ -35,7 +47,7 @@
rpId_56_N = cms.uint32(103),
rpId_56_F = cms.uint32(123),

outputFile = cms.string("alcareco_protons_prompt.root")
outputFile = cms.string(f"alcareco_protons_prompt_{run_no}.root")
)

process.p = cms.Path(
Expand All @@ -51,12 +63,11 @@
# load GT
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
from Configuration.AlCa.GlobalTag import GlobalTag
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run3_data_express')
# process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run3_data_prompt') # --> No LHCInfo, temporarily using the express GT
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run3_data_prompt')

process.source = cms.Source( 'PoolSource',
fileNames = cms.untracked.vstring(
'file:outputALCAPPS_RECO_prompt.root',
options.inputFiles,
),
inputCommands = cms.untracked.vstring(
'keep *'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/bash
function die { echo $1: status $2; exit $2; }

(cmsRun ${SCRAM_TEST_PATH}/test_prompt_PPSAlCaReco_output.py) || die 'failed running test_prompt_PPSAlCaReco_output.py' $?
cmsRun ${SCRAM_TEST_PATH}/test_prompt_PPSAlCaReco_output.py inputFiles=file:outputALCAPPS_RECO_prompt_test0.root runNo=355207 || die 'failed running test_prompt_PPSAlCaReco_output.py' $?
cmsRun ${SCRAM_TEST_PATH}/test_prompt_PPSAlCaReco_output.py inputFiles=file:outputALCAPPS_RECO_prompt_test1.root runNo=367104 || die 'failed running test_prompt_PPSAlCaReco_output.py' $?
1 change: 1 addition & 0 deletions Configuration/PyReleaseValidation/python/relval_steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -2424,6 +2424,7 @@ def lhegensim2018ml(fragment,howMuch):
'--data': '',
'--datatier':'ALCARECO',
'--eventcontent':'ALCARECO',
'--customise_commands':'"process.ctppsRawToDigiTaskAlCaRecoProducer = cms.Task(process.ctppsDiamondRawToDigiAlCaRecoProducer, process.totemTimingRawToDigiAlCaRecoProducer, process.ctppsPixelDigisAlCaRecoProducer)"' # disable gtStage2DigisAlCaRecoProducer as 2022 data used in this workflow doesn't have necessary products
}

steps['TIER0EXPPPSCALALIG']={'-s':'RAW2DIGI,L1Reco,ALCAPRODUCER:PPSCalTrackBasedSel,ENDJOB',
Expand Down

0 comments on commit 927f3ed

Please sign in to comment.