ECALELF  d6718b6cc30d69f18fde9018c5ae12f9d80bd7a5
Package Calibration/EcalAlCaRecoProducers

Description

This module contains all the plugins and classes used to produce ECAL alcarecos.

AlCaRecoStream list

AlCaESAlign

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:

cmsDriver.py testES -s ALCA:EcalESAlign --conditions=MCRUN2_74_V1 --filein=root://eoscms//eos/cms/store/relval/CMSSW_7_4_0_pre6/RelValZEE_13/GEN-SIM-RECO/PU25ns_MCRUN2_74_V1-v3/00000/04445CDB-7AAB-E411-8E6E-0025905A605E.root -n 100

AlCaESAlign

(THE PACKAGE ADMINISTATOR SHOULD REPLACE THIS SENTENCE WITH HAND-WRITTEN DOCUMENTATION SAYING WHAT THE PACKAGE DOES.)

EcalCalElectron and EcalUncalElectron test instructions

RAW to RECO production

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/

EcalUncalWElectron production from RAW and RECO files

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))"   

EcalUncalZElectron production from RAW and RECO files

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))"   

EcalCalWElectron production from RAW and RECO files

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))"   

EcalCalZElectron production from RAW and RECO files

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))"   

ECALELF rereco: EcalRecalElectron production from EcalUncalElectron files

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

ntuple production and calibration

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

Running on the grid

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

Public interface

Plugins

Modules

Unit tests and examples

Unknown

Status and planned development

Unknown


Last updated: @ Author: computer-generated.