ECALELF
d6718b6cc30d69f18fde9018c5ae12f9d80bd7a5
|
This module contains all the plugins and classes used to produce ECAL alcarecos.
The aim of this alcareco is to have a reduced dataset with all the information used for ES Alignment.
The event content is defined in ALCARECOEcalESAlign_Output_cff.py
The generalTrack collection (and trackExtras) are reduced by the EcalESAlignTrackReducer plugin in order to save tracks in the ES acceptance
In order to test this alcareco:
(THE PACKAGE ADMINISTATOR SHOULD REPLACE THIS SENTENCE WITH HAND-WRITTEN DOCUMENTATION SAYING WHAT THE PACKAGE DOES.)
mkdir {Single,Double}Electron-Run2012D/ SingleElectronRAWFile=/store/data/Run2012D/SingleElectron/RAW/v1/000/208/307/0085A34B-BD3A-E211-B6E9-003048D2BC4C.root DoubleElectronRAWFile=/store/data/Run2012D/DoubleElectron/RAW/v1/000/208/686/4A4E42F9-3F3F-E211-A942-003048F118AA.root cmsDriver.py reco -s RAW2DIGI,RECO -n 100 --filein=${SingleElectronRAWFile} --data --conditions=auto:run2_data --nThreads=4 --dirout=SingleElectron-Run2012D/ cmsDriver.py reco -s RAW2DIGI,RECO -n 100 --filein=${DoubleElectronRAWFile} --data --conditions=auto:run2_data --nThreads=4 --dirout=DoubleElectron-Run2012D/
SingleElectronRECOFile=files://$PWD/SingleElectron-Run2012D/reco_RAW2DIGI_RECO.root cmsDriver.py reco -s ALCA:EcalUncalWElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${SingleElectronRECOFile} --secondfilein=${SingleElectronRAWFile} --dirout=SingleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))"
DoubleElectronRECOFile=files://$PWD/DoubleElectron-Run2012D/reco_RAW2DIGI_RECO.root cmsDriver.py reco -s ALCA:EcalUncalZElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${DoubleElectronRECOFile} --secondfilein=${DoubleElectronRAWFile} --dirout=DoubleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))"
SingleElectronRECOFile=files://$PWD/SingleElectron-Run2012D/reco_RAW2DIGI_RECO.root cmsDriver.py reco -s ALCA:EcalCalWElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${SingleElectronRECOFile} --secondfilein=${SingleElectronRAWFile} --dirout=SingleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))"
DoubleElectronRECOFile=files://$PWD/DoubleElectron-Run2012D/reco_RAW2DIGI_RECO.root cmsDriver.py reco -s ALCA:EcalCalZElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${DoubleElectronRECOFile} --secondfilein=${DoubleElectronRAWFile} --dirout=DoubleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))"
To make this work, go to cmssw/Configuration/StandardSequences/python/AlCaRecoStreams_cff.py, and uncomment lines matching Recal Also replace ecalLocalSequence by * https://github.com/shervin86/cmssw/blob/toBeChecked/Calibration/EcalAlCaRecoProducers/python/ALCARECOEcalRecalIsolElectron_cff.py#L7
EcalUncalWElectronFile=files://$PWD/SingleElectron-Run2012D/EcalUncalWElectron.root cmsDriver.py reco -s ALCA:EcalRecalElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${EcalUncalWElectronFile} --dirout=SingleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))" --process=RERECO --customise Calibration/EcalAlCaRecoProducers/customRereco.EcalRecal EcalUncalZElectronFile=files://$PWD/DoubleElectron-Run2012D/EcalUncalZElectron.root cmsDriver.py reco -s ALCA:EcalRecalElectron -n 100 --data --conditions=auto:run2_data --nThreads=4 --filein=${EcalUncalZElectronFile} --dirout=DoubleElectron-Run2012D/ --customise_commands="process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))" --process=RERECO --customise Calibration/EcalAlCaRecoProducers/customRereco.EcalRecal
Zntuples:
cmsRun EcalAlCaRecoProducers/python/alcaSkimming.py isCrab=0 skim=ZSkim maxEvents=100 type=ALCARECO files=${DoubleElectronRECOFile} doTree=3 tagFile=EcalAlCaRecoProducers/config/reRecoTags/test75x.py
Wntuples:
cmsRun EcalAlCaRecoProducers/python/alcaSkimming.py isCrab=0 skim=WSkim maxEvents=100 type=ALCARECO files=${SingleElectronRECOFile} doTree=3 tagFile=EcalAlCaRecoProducers/config/reRecoTags/test75x.py
To produce ntuples from EcalCal (AlCaReco), you need to add the option –doTreeOnly=1 for example:
EcalCalZElectronFile=files://$PWD/DoubleElectron-Run2012D/EcalCalZElectron.root cmsRun EcalAlCaRecoProducers/python/alcaSkimming.py isCrab=0 skim=ZSkim maxEvents=100 type=ALCARECO files=${EcalCalZElectronFile} doTree=3 tagFile=EcalAlCaRecoProducers/config/reRecoTags/test75x.py doTreeOnly=1
To produce ntuples from EcalRecal (AlCaRereco), you need to add the option –doTreeOnly=1 and also change the type to ALCARERECO
EcalRecalElectronFile=files://$PWD/DoubleElectron-Run2012D/EcalRecalElectron.root cmsRun EcalAlCaRecoProducers/python/alcaSkimming.py isCrab=0 skim=ZSkim maxEvents=100 type=ALCARERECO files=${EcalCalZElectronFile} doTree=3 tagFile=EcalAlCaRecoProducers/config/reRecoTags/test75x.py doTreeOnly=1
Calibration with E / p:
ZFitter.exe -f data/validation/EoverPcalibration.dat --EOverPCalib --outputPath output/ --doEB --splitStat 0 --nLoops 15 ZFitter.exe -f data/validation/EoverPcalibration.dat --EOverPCalib --outputPath output/ --doEE --splitStat 0 --nLoops 15
This is initial documentation on how to automatically generate and submit ALCARECO and ALCARAW jobs on the grid using CRAB3. A special bash script has been adapted to do this: scripts/prodAlcareco.sh
Before you begin, you must do:
source initCmsEnv.sh
This will set up the CRAB3 environment and generate a grid proxy. Then, you can actually use the script. Usage is as follows:
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep "query"` --option1 --option2 ...
alcareco_datasets.dat
contains information about the datasets which are available to run on. Select the required dataset using grep. parseDarasetFile.sh
extracts the required information from the alcareco_datasets.dat
entry.
An example, for a subsection of runA DoubleElectron, to be processed with ALCA:EcalCalZElectron, ie ALCARECO: The alcareco_datasets.dat
file has a line like this:
190645-193621 /DoubleElectron/Run2012A-15Apr2014-v2/AOD DoubleElectron-ZHLTSkimPath-RUN2012A-15Apr-v2 caf group/alca_ecalcalib/ecalelf/alcareco VALID RUN2012A,RUN2012AB,RUN2012ABC,RUN2012ABCD
Select it in the command using parseDatasetFile.sh alcareco_datasets.dat | grep A
Create jobs using:
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep A` --json testJSON.txt --jobname Test --skim ZSkim -type ALCARECO --createOnly
testJSON.txt contains only one run number from runA: {"190645": [[1, 200]]}
And inspect the CMSSWConfig reco_ALCA.py and CRAB3 config tmp/alcareco_cfg.py to make sure everything seems sensible. You can run a local test by specifiying a test sample in the reco_ALCA.py file and doing cmsRun reco_ALCA.py, which by default runs over 10 events.
Submit the jobs using:
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep A` --json testJSON.txt --jobname Test --skim ZSkim -type ALCARECO --submitOnly
CRAB3 should give information about submission success etc.
Subsequently, you can check the jobs using:
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep A` --json testJSON.txt --jobname Test --skim ZSkim -type ALCARECO --check
This will query the status of the jobs using the CRAB3 interface.
Other examples: Produce EcalCalZElectron.root (ALCARECO) from AODSIM (Monte Carlo) files. Make sure you have a line like this in alcareco_datasets.dat:
allRange /DYToEE_M-50_Tune4C_13TeV-pythia8/Phys14DR-PU40bx25_tsg_castor_PHYS14_25_V1-v2/AODSIM DYToEE_M-50-pythia8-Phys14-ZSkim-19May2015 caf group/alca_ecalcalib/ecalelf/alcareco VALID - -
Then run:
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep 19May` --skim ZSkim --type ALCARECO --isMC --jobname name
Produce EcalUncalZElectron.root (ALCARAW) from Double Electron AOD (with appropriate line in alcareco_datasets.dat).
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep xxx` --skim ZSkim --type ALCARAW --jobname name
Produce EcalUncalWElectron.root (ALCARAW) from Single Electron AOD (with appropriate line in alcareco_datasets.dat).
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep xxx` --skim WSkim --type ALCARAW --jobname name
Produce EcalCalZElectron.root (ALCARECO) from Single Electron RAW (with appropriate line in alcareco_datasets.dat).
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep xxx` --skim ZSkim --type ALCARECO --fromRAW --jobname name
Produce EcalUncalZElectron.root (ALCARAW) from Single Electron RAW (with appropriate line in alcareco_datasets.dat).
./scripts/prodAlcareco.sh `parseDatasetFile.sh alcareco_datasets.dat | grep xxx` --skim ZSkim --type ALCARAW --fromRAW --jobname name
Unknown
Unknown
Last updated: @ Author: computer-generated.