diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..66a7f330d9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.root +*.pyc +__init__.py +crab/prescaleInformation +crab/crab* diff --git a/README.md b/README.md index a83c3aa43d6..18471d33d66 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,151 @@ # EgammaAnalysis-TnPTreeProducer -TnP package for EGM -For regular users -1. install +Package of the EGamma group to produce Tag-and-Probe trees -git clone https://github.com/cms-analysis/EgammaAnalysis-TnPTreeProducer EgammaAnalysis/TnPTreeProducer -b +## Overview of branches +| Branch | release | tnpEleIDs | tnpPhoIDs | tnpEleTrig | tnpEleReco | purpose | +| ------------------------------------------ | ------------------ |:------------------:|:------------------:|:------------------:|:------------------:|:--------------------------------------:| +| | | *miniAOD* | *miniAOD* | *miniAOD* | *AOD* | | +| [RunIIfinal](../../tree/RunIIfinal) | CMSSW\_10\_2 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Run II analysis | +| [RunIIfinal](../../tree/RunIIfinal) | CMSSW\_10\_6 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Run II analysis using ultra-legacy | +| [CMSSW\_11\_X\_Y](../../tree/CMSSW_11_X_Y) | CMSSW\_11 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :white_check_mark: | Development for Run III (experimental) | -For developpers -1. On github fork the package https://github.com/cms-analysis/EgammaAnalysis-TnPTreeProducer -2. Add the remote +Note: because of a dataformat CMSSW\_10\_6 can only be used for ultra-legacy samples, and CMSSW\_10\_2 should be used for the rereco samples. -git remote add username-push git@github.com:username/EgammaAnalysis-TnPTreeProducer.git +## Available tuples + +### ReReco 2016, 2017 and 2018 +If you do not need changes to the default code, you can simply use existing flat tag and probe trees, avalaible for both 2016, 2017 and 2018 (RunIIfinal branch): + +```bash +ls /eos/cms/store/group/phys_egamma/tnpTuples/tomc/2020-06-09/*/merged/ +``` + +These inlcude the tnpEleTrig, tnpEleIDs and tnpPhoIDs trees produced with the RunIIfinal branch. +*Main change with respect to the 2020-02-28 production is the inclusion of some additional branches, e.g. the leptonMva's* + +### ReReco 2016, 2017 and 2018 - L1 matched +In case you need L1 matching for the measurement of doubleEle HLT triggers, you can use the tnpEleTrig trees found in: + +```bash +ls /eos/cms/store/group/phys_egamma/tnpTuples/tomc/2020-03-03/*/merged/*L1matched.root +``` + +### UL2017 and UL2018 +For ultra-legacy we have tnpEleTrig, tnpEleIDs and tnpPhoIDs trees available at: +``` +ls /eos/cms/store/group/phys_egamma/tnpTuples/tomc/2020-05-20/UL2018/merged +ls /eos/cms/store/group/phys_egamma/tnpTuples/tomc/2020-05-20/UL2017/merged +ls /eos/cms/store/group/phys_egamma/tnpTuples/rasharma/2021-02-10/UL2016postVFP/merged +ls /eos/cms/store/group/phys_egamma/tnpTuples/rasharma/2021-02-10/UL2016preVFP/merged +``` + + +## To produce new tuples +### 1a. Install for rereco (CMSSW\_10\_2\_X with X=10 or higher, works for 2016, 2017 and 2018 data/MC) + +```bash +cmsrel CMSSW_10_2_22 +cd CMSSW_10_2_22/src +cmsenv +git clone -b RunIIfinal git@github.com:cms-egamma/EgammaAnalysis-TnPTreeProducer.git EgammaAnalysis/TnPTreeProducer +scram b -j8 +``` + +### 1b. Install for ultra-legacy (CMSSW\_10\_6\_X, works for UL2017 and UL2018 data/MC) + +```bash +cmsrel CMSSW_10_6_13 +cd CMSSW_10_6_13/src +cmsenv +git clone -b RunIIfinal git@github.com:cms-egamma/EgammaAnalysis-TnPTreeProducer.git EgammaAnalysis/TnPTreeProducer +scram b -j8 +``` + +### 2. Try-out +You can find the cmsRun executable in EgammaAnalysis/TnPTreeProducer/python: +```bash +cd EgammaAnalysis/TnPTreeProducer/python/ +cmsRun TnPTreeProducer_cfg.py isMC=True doTrigger=True era=UL2018 +``` +Check [TnPTreeProducer\_cfg.py](python/TnPTreeProducer_cfg.py) for all available options. Update the code if you need to implement custom-made recipes. + +Test files can be defined in [python/etc/tnpInputTestFiles\_cff.py](python/etc/tnpInputTestFiles_cff.py) +If you update the code, you can use the ./runTests.py script in the test directory to check for new differences in the 2016, 2017 and 2018 test files. + +### 3. Submit jobs +Check in EgammaAnalysis/TnPTreeProducer//crab the tnpCrabSubmit.py script to submit your jobs using crab + +```bash +source /cvmfs/cms.cern.ch/common/crab-setup.sh +``` +## To make a pull request to this repository +1. On github fork the package https://github.com/cms-analysis/EgammaAnalysis-TnPTreeProducer +2. Add the remote +```bash +git remote add username-push git@github.com:username/EgammaAnalysis-TnPTreeProducer.git +``` 3. push commits to fork and then standard pull request process -git push username-push branchname \ No newline at end of file +```bash +git push username-push branchname +``` + +## Adding new workingpoints +You can add new electron workingpoints in [python/egmElectronIDModules\_cff.py](python/egmElectronIDModules_cff.py) and new photon workingpoints +in [python/egmPhotonIDModules\_cff.py](python/egmPhotonIDModules_cff.py). Each new workingpoint added in these python config fragments will +add a new "passing" boolean in the electron and photon trees respectively. Of course, one can also choose to simply add a variable in +[python/egmTreesContent\_cff.py](python/egmTreesContent\_cff.py), which might be preferred for MVA variables when you want to have the +flexibility to explore different workingpoints: you can simply put a cut on these variable in the egm\_tnp\_analysis package. + +## Description of variables + +Description of some of variables in the output tree is given [here](VariablesInfo.md). + + + + + ## notes from Ruole Yi + The process of Tag&probe analysis + +1. Make tnptree https://github.com/sethcooper/EgammaAnalysis-TnPTreeProducer +* Dataset: https://twiki.cern.ch/twiki/bin/viewauth/CMS/PdmVRun2LegacyAnalysis NLO sample https://cms-pdmv.cern.ch/grasp/samples?dataset_query=*DYJetsToLL_LHEFilterPtZ*&campaign=RunIISummer20UL16*GEN,RunIISummer20UL16*GENAPV,RunIISummer20UL17*GEN,RunIISummer20UL18*GEN +* Setup tree structure: https://github.com/sethcooper/EgammaAnalysis-TnPTreeProducer/blob/legacyTriggerScaleFactorsLQ/python/TnPTreeProducer_cfg.py +* Use file to submit job to crab: https://github.com/sethcooper/EgammaAnalysis-TnPTreeProducer/blob/legacyTriggerScaleFactorsLQ/crab/tnpCrabSubmit.py +* Submit to crab: crab submit -c tnpCrabSubmit.py +* If wanna kill job: crab kill + path of output file +* Summit failed job: first check job status then `crab resubmit` +* Check output: login cmslpc check /eos/uscms/store/user/ryi/LQ/TnP/ +* Combine crab output:https://twiki.cern.ch/twiki/bin/view/CMSPublic/CRAB3AdvancedTopic#Merging_output_files or use hadd mergedfile.root out_file_*.root (先开启cmssw-cmsenv) +* Cmslpc-eos 的job可以转移到lxplus-afs 的cern box:/eos/user/r/ryi +scp /eos/uscms/store/user/ryi/LQ/TnP/2018UL-DY-LO-ext.root ryi@lxplus.cern.ch:/eos/user/r/ryi/TagandProbe/TnP2017/ + + +2. Analyse tnptree https://github.com/sethcooper/egm_tnp_analysis +* Cmsenv first +* python tnpEGM_fitter.py etc/config/settings_passTrigger.py +* python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --createBins +* python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --checkBins +* python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --createHists + +nominal fit +python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --doFit + +MC fit to constrain alternate signal parameters +python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --doFit --mcSig --altSig --addGaus + +Alternate signal fit +python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --doFit --altSig --addGaus + +Alternate background fit +python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --doFit --altBkg + +Check fits and redo failed ones +python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --doFit --iBin ib + +egm txt ouput file +* python tnpEGM_fitter.py etc/config/settings_passTrigger.py --flag passingTrigger --sumUp + + + diff --git a/crab.log b/crab.log new file mode 100644 index 00000000000..3ff490fffa0 --- /dev/null +++ b/crab.log @@ -0,0 +1,732 @@ +DEBUG 2022-07-28 10:46:48.745 UTC: CRAB Client version: v3.220323 +DEBUG 2022-07-28 10:46:48.745 UTC: Running on: Linux lxplus715.cern.ch 3.10.0-1160.66.1.el7.x86_64 #1 SMP Wed May 18 16:02:34 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-07-28 10:46:48.745 UTC: Executing command: 'status' +DEBUG 2022-07-28 10:46:48.745 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-07-28 10:46:48.746 UTC: Error: crab_2016B-pre-7-27-2022/crab_UL2016preVFP_Run2016B_ver2 is not a valid CRAB project directory. +ERROR 2022-07-28 10:46:48.746 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016B-pre-7-27-2022/crab_UL2016preVFP_Run2016B_ver2 is not a valid CRAB project directory. +INFO 2022-07-28 10:46:48.780 UTC: Log file is /afs/cern.ch/user/r/ryi/test/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-08-02 14:25:47.766 UTC: CRAB Client version: v3.220323 +DEBUG 2022-08-02 14:25:47.767 UTC: Running on: Linux lxplus722.cern.ch 3.10.0-1160.62.1.el7.x86_64 #1 SMP Tue Apr 5 16:57:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-08-02 14:25:47.767 UTC: Executing command: 'submit' +DEBUG 2022-08-02 14:25:47.787 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-08-02 14:25:47.828 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-08-02 14:25:47.828 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-08-02 14:25:47.878 UTC: Log file is /afs/cern.ch/user/r/ryi/test/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-08-18 08:24:34.266 UTC: CRAB Client version: v3.220323 +DEBUG 2022-08-18 08:24:34.266 UTC: Running on: Linux lxplus789.cern.ch 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-08-18 08:24:34.266 UTC: Executing command: 'submit' +DEBUG 2022-08-18 08:24:34.266 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-08-18 08:24:34.267 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-08-18 08:24:34.267 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-08-18 08:24:34.444 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-08-18 09:02:12.639 UTC: CRAB Client version: v3.220323 +DEBUG 2022-08-18 09:02:12.639 UTC: Running on: Linux lxplus742.cern.ch 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-08-18 09:02:12.639 UTC: Executing command: 'submit' +DEBUG 2022-08-18 09:02:12.640 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-08-18 09:02:12.645 UTC: CRAB configuration file creb/tnpCrabSubmit.py not found. +ERROR 2022-08-18 09:02:12.645 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220323.01/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file creb/tnpCrabSubmit.py not found. +INFO 2022-08-18 09:02:12.720 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:15.325 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:15.326 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:15.326 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:15.335 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:15.351 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_0-50 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:15.351 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_0-50 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:15.449 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:15.725 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:15.725 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:15.725 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:15.725 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:15.726 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_50-100 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:15.726 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_50-100 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:15.727 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:15.963 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:15.963 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:15.963 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:15.963 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:15.964 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_100-250 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:15.964 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_100-250 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:15.965 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:16.205 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:16.205 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:16.205 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:16.205 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:16.206 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_250-400 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:16.206 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_250-400 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:16.207 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:16.446 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:16.446 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:16.446 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:16.446 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:16.447 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_400-650 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:16.447 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_400-650 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:16.448 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:16.680 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:16.680 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:16.680 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:16.680 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:16.681 UTC: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_650-inf is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:16.681 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-post-NLO-ptbinned-8_22/crab_UL2016postVFP_DY_post_NLO_650-inf is not a valid CRAB project directory. +INFO 2022-09-08 22:04:16.683 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:16.909 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:16.910 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:16.910 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:16.910 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:16.910 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_0-50 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:16.910 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_0-50 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:16.912 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:17.128 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:17.129 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:17.129 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:17.129 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:17.129 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_50-100 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:17.129 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_50-100 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:17.131 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:17.354 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:17.354 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:17.354 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:17.354 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:17.355 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_100-250 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:17.355 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_100-250 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:17.356 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:17.577 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:17.578 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:17.578 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:17.578 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:17.578 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_250-400 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:17.579 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_250-400 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:17.580 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:17.801 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:17.801 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:17.801 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:17.801 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:17.802 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_400-650 is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:17.802 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_400-650 is not a valid CRAB project directory. +INFO 2022-09-08 22:04:17.803 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-09-08 22:04:19.894 UTC: CRAB Client version: v3.220823 +DEBUG 2022-09-08 22:04:19.894 UTC: Running on: Linux lxplus718.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-09-08 22:04:19.894 UTC: Executing command: 'status' +DEBUG 2022-09-08 22:04:19.894 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-09-08 22:04:19.894 UTC: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_650-inf is not a valid CRAB project directory. +ERROR 2022-09-08 22:04:19.895 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.220823.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016-pre-NLO-ptbinned-8_22/crab_UL2016preVFP_DY_pre_NLO_650-inf is not a valid CRAB project directory. +INFO 2022-09-08 22:04:19.896 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-11-15 03:57:30.336 UTC: CRAB Client version: v3.221018 +DEBUG 2022-11-15 03:57:30.336 UTC: Running on: Linux lxplus726.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-11-15 03:57:30.336 UTC: Executing command: 'submit' +DEBUG 2022-11-15 03:57:30.359 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-11-15 03:57:30.391 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-11-15 03:57:30.391 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-11-15 03:57:30.796 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-12 16:57:10.354 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-12 16:57:10.355 UTC: Running on: Linux lxplus710.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-12 16:57:10.355 UTC: Executing command: 'submit' +DEBUG 2022-12-12 16:57:10.368 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-12 16:57:10.439 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-12-12 16:57:10.439 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-12-12 16:57:10.548 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-12 17:34:16.168 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-12 17:34:16.168 UTC: Running on: Linux lxplus710.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-12 17:34:16.168 UTC: Executing command: 'status' +DEBUG 2022-12-12 17:34:16.169 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-12 17:34:16.170 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2022-12-12 17:34:16.170 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2022-12-12 17:34:16.176 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-21 18:08:54.753 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-21 18:08:54.753 UTC: Running on: Linux lxplus762.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-21 18:08:54.754 UTC: Executing command: 'submit' +DEBUG 2022-12-21 18:08:54.754 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-21 18:08:54.766 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-12-21 18:08:54.767 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-12-21 18:08:54.827 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-21 19:10:42.007 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-21 19:10:42.008 UTC: Running on: Linux lxplus731.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-21 19:10:42.008 UTC: Executing command: 'status' +DEBUG 2022-12-21 19:10:42.008 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-21 19:10:42.009 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2022-12-21 19:10:42.009 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2022-12-21 19:10:42.035 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-23 12:54:50.763 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-23 12:54:50.763 UTC: Running on: Linux lxplus731.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-23 12:54:50.763 UTC: Executing command: 'kill' +DEBUG 2022-12-23 12:54:50.764 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-23 12:54:50.783 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2022-12-23 12:54:50.784 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2022-12-23 12:54:50.822 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2022-12-23 16:58:00.087 UTC: CRAB Client version: v3.221018 +DEBUG 2022-12-23 16:58:00.087 UTC: Running on: Linux lxplus752.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2022-12-23 16:58:00.087 UTC: Executing command: 'submit' +DEBUG 2022-12-23 16:58:00.088 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2022-12-23 16:58:00.088 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2022-12-23 16:58:00.088 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2022-12-23 16:58:00.093 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-03 16:50:24.213 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-03 16:50:24.213 UTC: Running on: Linux lxplus779.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-03 16:50:24.213 UTC: Executing command: 'submit' +DEBUG 2023-01-03 16:50:24.213 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-01-03 16:50:24.214 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2023-01-03 16:50:24.214 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2023-01-03 16:50:24.274 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 09:19:41.985 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 09:19:41.986 UTC: Running on: Linux lxplus710.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 09:19:41.986 UTC: Executing command: 'status' +DEBUG 2023-01-06 09:19:41.986 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-01-06 09:19:41.988 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2023-01-06 09:19:41.988 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2023-01-06 09:19:42.019 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 09:19:51.720 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 09:19:51.721 UTC: Running on: Linux lxplus710.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 09:19:51.721 UTC: Executing command: 'kill' +DEBUG 2023-01-06 09:19:51.721 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-01-06 09:19:51.721 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2023-01-06 09:19:51.722 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2023-01-06 09:19:51.723 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 11:59:35.815 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 11:59:35.815 UTC: Running on: Linux lxplus710.cern.ch 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 11:59:35.815 UTC: Executing command: 'status' +DEBUG 2023-01-06 11:59:35.817 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-01-06 11:59:35.831 UTC: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +ERROR 2023-01-06 11:59:35.832 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016post-NLO-amc_withLHE_Vpt/crab_UL2016postVFP_DY_post_NLO is not a valid CRAB project directory. +INFO 2023-01-06 11:59:35.838 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 12:53:42.931 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 12:53:42.932 UTC: Running on: Linux lxplus730.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 12:53:42.932 UTC: Executing command: 'checkwrite' +DEBUG 2023-01-06 12:53:42.932 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +DEBUG 2023-01-06 12:53:42.934 UTC: Checking credentials +DEBUG 2023-01-06 12:53:42.934 UTC: Proxy file /tmp/x509up_u135567 not found +DEBUG 2023-01-06 12:53:42.934 UTC: Creating new proxy for 172:00 hours +DEBUG 2023-01-06 12:53:42.934 UTC: Executing command : + voms-proxy-init --rfc --cert ~/.globus/usercert.pem --key ~/.globus/userkey.pem --out /tmp/x509up_u135567 --valid 192:00 --voms cms:/cms +DEBUG 2023-01-06 12:53:49.618 UTC: output : + error: + retcode : 0 +DEBUG 2023-01-06 12:53:49.619 UTC: Executing command : + voms-proxy-info --actimeleft --timeleft --file /tmp/x509up_u135567 +DEBUG 2023-01-06 12:53:50.148 UTC: output : 499784 +691198 + + error: + retcode : 0 +DEBUG 2023-01-06 12:53:50.148 UTC: Proxy created. +DEBUG 2023-01-06 12:53:50.149 UTC: Command use: checkwrite +DEBUG 2023-01-06 12:53:50.149 UTC: Options use: ['--site=T3_US_FNALLPC'] +DEBUG 2023-01-06 12:53:50.149 UTC: Instance is None +DEBUG 2023-01-06 12:53:50.149 UTC: Server base url is None +DEBUG 2023-01-06 12:53:50.149 UTC: Retrieving username ... +DEBUG 2023-01-06 12:53:50.149 UTC: Retrieving username from CRIC... +DEBUG 2023-01-06 12:53:50.887 UTC: username is ryi +INFO 2023-01-06 12:53:50.887 UTC: Will check write permission in the default location /store/user/ +INFO 2023-01-06 12:53:50.888 UTC: Validating LFN /store/user/ryi... +INFO 2023-01-06 12:53:50.888 UTC: LFN /store/user/ryi is valid. +INFO 2023-01-06 12:53:50.910 UTC: Will use `gfal-copy`, `gfal-rm` commands for checking write permissions +INFO 2023-01-06 12:53:50.910 UTC: Will check write permission in /store/user/ryi on site T3_US_FNALLPC +INFO 2023-01-06 12:53:53.187 UTC: Will use PFN: davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/crab3checkwrite_20230106_135350.tmp +INFO 2023-01-06 12:53:53.187 UTC: +Attempting to create (dummy) directory crab3checkwrite_20230106_135350 and copy (dummy) file crab3checkwrite_20230106_135350.tmp to /store/user/ryi + +INFO 2023-01-06 12:53:53.191 UTC: Executing command: which scram >/dev/null 2>&1 && eval `scram unsetenv -sh`; gfal-copy -p -v -t 180 file:///afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab3checkwrite_20230106_135350.tmp 'davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/crab3checkwrite_20230106_135350.tmp' +INFO 2023-01-06 12:53:53.192 UTC: Please wait... +INFO 2023-01-06 12:53:56.193 UTC: +Successfully created directory crab3checkwrite_20230106_135350 and copied file crab3checkwrite_20230106_135350.tmp to /store/user/ryi +INFO 2023-01-06 12:53:56.193 UTC: +Attempting to delete file davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/crab3checkwrite_20230106_135350.tmp + +INFO 2023-01-06 12:53:56.193 UTC: Executing command: which scram >/dev/null 2>&1 && eval `scram unsetenv -sh`; gfal-rm -v -t 180 'davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/crab3checkwrite_20230106_135350.tmp' +INFO 2023-01-06 12:53:56.193 UTC: Please wait... +INFO 2023-01-06 12:53:57.727 UTC: +Successfully deleted file davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/crab3checkwrite_20230106_135350.tmp +INFO 2023-01-06 12:53:57.727 UTC: +Attempting to delete directory davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/ + +INFO 2023-01-06 12:53:57.727 UTC: Executing command: which scram >/dev/null 2>&1 && eval `scram unsetenv -sh`; gfal-rm -r -v -t 180 'davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/' +INFO 2023-01-06 12:53:57.727 UTC: Please wait... +INFO 2023-01-06 12:53:59.726 UTC: +Successfully deleted directory davs://cmseos.fnal.gov:9000/eos/uscms/store/user/ryi/crab3checkwrite_20230106_135350/ +INFO 2023-01-06 12:53:59.732 UTC: +Checkwrite Result: +INFO 2023-01-06 12:53:59.732 UTC: Success: Able to write in /store/user/ryi on site T3_US_FNALLPC +DEBUG 2023-01-06 12:55:20.240 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 12:55:20.241 UTC: Running on: Linux lxplus730.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 12:55:20.241 UTC: Executing command: 'submit' +DEBUG 2023-01-06 12:55:20.241 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +INFO 2023-01-06 12:55:20.241 UTC: Will use CRAB configuration file crabConfig.py +DEBUG 2023-01-06 12:55:20.241 UTC: Loading CRAB configuration file. +ERROR 2023-01-06 12:55:20.244 UTC: The 'maxJobRuntimeMin' parameter is not compatible with the 'Automatic' splitting mode (default). +The documentation about the CRAB configuration file can be found in https://twiki.cern.ch/twiki/bin/view/CMSPublic/CRAB3ConfigurationFile +ERROR 2023-01-06 12:55:20.245 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 94, in loadConfig + raise ConfigurationException(configmsg) +ConfigurationException: The 'maxJobRuntimeMin' parameter is not compatible with the 'Automatic' splitting mode (default). +The documentation about the CRAB configuration file can be found in https://twiki.cern.ch/twiki/bin/view/CMSPublic/CRAB3ConfigurationFile +INFO 2023-01-06 12:55:20.246 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 13:05:01.647 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 13:05:01.648 UTC: Running on: Linux lxplus730.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 13:05:01.648 UTC: Executing command: 'submit' +DEBUG 2023-01-06 13:05:01.648 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +INFO 2023-01-06 13:05:01.649 UTC: Will use CRAB configuration file crabConfig.py +DEBUG 2023-01-06 13:05:01.649 UTC: Loading CRAB configuration file. +DEBUG 2023-01-06 13:05:01.652 UTC: Will use CRAB Analysis plugin (i.e. will run an analysis job type). +ERROR 2023-01-06 13:05:01.653 UTC: Working area '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab_sumweight/crab_sumweight' already exists +Please change the requestName in the config file +ERROR 2023-01-06 13:05:01.654 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 320, in __init__ + getattr(self.configuration.General, 'requestName', None)) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/ClientUtilities.py", line 387, in createWorkArea + raise ConfigException("Working area '%s' already exists \nPlease change the requestName in the config file" % fullpath) +ConfigException: Working area '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab_sumweight/crab_sumweight' already exists +Please change the requestName in the config file +INFO 2023-01-06 13:05:01.663 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-06 13:15:40.460 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 13:15:40.460 UTC: Running on: Linux lxplus730.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 13:15:40.460 UTC: Executing command: 'submit' +DEBUG 2023-01-06 13:15:40.461 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +INFO 2023-01-06 13:15:40.463 UTC: Will use CRAB configuration file crabConfig.py +DEBUG 2023-01-06 13:15:40.463 UTC: Loading CRAB configuration file. +DEBUG 2023-01-06 13:15:40.465 UTC: Will use CRAB Analysis plugin (i.e. will run an analysis job type). +ERROR 2023-01-06 13:15:40.467 UTC: Working area '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab_sumweight/crab_sumweight' already exists +Please change the requestName in the config file +ERROR 2023-01-06 13:15:40.467 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 320, in __init__ + getattr(self.configuration.General, 'requestName', None)) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/ClientUtilities.py", line 387, in createWorkArea + raise ConfigException("Working area '%s' already exists \nPlease change the requestName in the config file" % fullpath) +ConfigException: Working area '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab_sumweight/crab_sumweight' already exists +Please change the requestName in the config file +INFO 2023-01-06 13:15:40.474 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-01-18 22:25:17.939 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-18 22:25:17.939 UTC: Running on: Linux lxplus765.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-18 22:25:17.939 UTC: Executing command: 'submit' +DEBUG 2023-01-18 22:25:17.939 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-01-18 22:25:17.940 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2023-01-18 22:25:17.940 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2023-01-18 22:25:18.127 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-02-12 19:43:54.165 UTC: CRAB Client version: v3.230124 +DEBUG 2023-02-12 19:43:54.165 UTC: Running on: Linux lxplus756.cern.ch 3.10.0-1160.81.1.el7.x86_64 #1 SMP Fri Dec 16 17:29:43 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-02-12 19:43:54.165 UTC: Executing command: 'submit' +DEBUG 2023-02-12 19:43:54.166 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-02-12 19:43:55.203 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2023-02-12 19:43:55.204 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +CRABClient.ClientExceptions.ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2023-02-12 19:43:55.284 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-02-28 21:46:46.198 UTC: CRAB Client version: v3.230124 +DEBUG 2023-02-28 21:46:46.199 UTC: Running on: Linux lxplus791.cern.ch 3.10.0-1160.83.1.el7.x86_64 #1 SMP Wed Jan 25 16:41:43 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-02-28 21:46:46.199 UTC: Executing command: 'submit' +DEBUG 2023-02-28 21:46:46.200 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-02-28 21:46:46.226 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2023-02-28 21:46:46.226 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2023-02-28 21:46:46.248 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-03-01 14:55:59.785 UTC: CRAB Client version: v3.230124 +DEBUG 2023-03-01 14:55:59.786 UTC: Running on: Linux lxplus785.cern.ch 3.10.0-1160.81.1.el7.x86_64 #1 SMP Fri Dec 16 17:29:43 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-03-01 14:55:59.786 UTC: Executing command: 'status' +DEBUG 2023-03-01 14:55:59.791 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-03-01 14:55:59.833 UTC: Error: crab_2016pre-NLO_ptbin_resubmit_corruptfile/crab_UL2016preVFP_DY_pre_NLO_50-100 is not a valid CRAB project directory. +ERROR 2023-03-01 14:55:59.833 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/status.py", line 48, in __init__ + SubCommand.__init__(self, logger, cmdargs) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 275, in __init__ + SubCommand.validateOptions(self) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 642, in validateOptions + raise ConfigurationException(msg) +ConfigurationException: Error: crab_2016pre-NLO_ptbin_resubmit_corruptfile/crab_UL2016preVFP_DY_pre_NLO_50-100 is not a valid CRAB project directory. +INFO 2023-03-01 14:55:59.951 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log +DEBUG 2023-03-06 14:10:20.232 UTC: CRAB Client version: v3.230124 +DEBUG 2023-03-06 14:10:20.233 UTC: Running on: Linux lxplus772.cern.ch 3.10.0-1160.81.1.el7.x86_64 #1 SMP Fri Dec 16 17:29:43 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-03-06 14:10:20.233 UTC: Executing command: 'submit' +DEBUG 2023-03-06 14:10:20.233 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +ERROR 2023-03-06 14:10:20.233 UTC: CRAB configuration file tnpCrabSubmit.py not found. +ERROR 2023-03-06 14:10:20.233 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/bin/crab.py", line 144, in __call__ + self.cmd = sub_cmd(self.logger, args[1:]) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/submit.py", line 36, in __init__ + SubCommand.__init__(self, logger, cmdargs, disable_interspersed_args=True) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 316, in __init__ + self.loadConfig(self.options.config, self.args) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.230124.00/lib/CRABClient/Commands/SubCommand.py", line 51, in loadConfig + raise ConfigurationException("CRAB configuration file %s not found." % (configname)) +ConfigurationException: CRAB configuration file tnpCrabSubmit.py not found. +INFO 2023-03-06 14:10:20.322 UTC: Log file is /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab.log diff --git a/crab/addweight.py b/crab/addweight.py new file mode 100644 index 00000000000..d5564a2b648 --- /dev/null +++ b/crab/addweight.py @@ -0,0 +1,7 @@ +import ROOT + +fileName = "DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8.root" +treeName = "tnpEleTrig/fitter_tree" +d = ROOT.RDataFrame(treeName, fileName) +df=d.Define("weight_new", "2") +df.Snapshot("tnpEleTrig/fitter_tree", "newfile.root") diff --git a/crab/filelist.txt b/crab/filelist.txt new file mode 100644 index 00000000000..48cf4a4513d --- /dev/null +++ b/crab/filelist.txt @@ -0,0 +1,822 @@ +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8487A9CD-DC20-A643-ABCF-AB90B0FC680F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E2A2891C-337E-8D4F-AEDA-B6A5141531DC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/21376420-4DC3-5448-BCAB-8B0AF33B4D95.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CAFA5AC2-F59E-3347-8556-3D52C5AA3C55.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9FD4E7C1-26D6-8342-9C12-2353EF67CC6A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/41130F81-1C68-8546-A38B-2EEE350297AA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/457F42D6-C555-E44D-8D89-288DB723946C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2EC71328-9E12-AC46-8AF0-C32E866B2A58.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D92457E9-8BA5-554F-9211-FD365F86BDB8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/457B61FA-7812-3144-B8D1-EB753DA3A53A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/04EE07AB-F937-7D49-9C8E-85AC4CD57567.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CC5013A1-5612-D94C-9F27-F7A321791D85.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BDB1ABAC-8C4D-EA4E-8D7C-6ABC281D2B1B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BB9506CD-790F-B543-BCD4-5DFC4CEF6981.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CED2E251-E4F8-1041-AD94-4BBDEAD9E5DE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/137871C7-7272-224A-9EE5-9BB60AD1603B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/97C2C9F2-E212-1642-A282-AE723E715669.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AF42AB7E-4835-8A4C-999A-1F873E10A5C2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/507E1D5E-D021-0948-A94F-4B40C9F90E50.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2E994781-CC3B-DC4B-9658-497ABCF708CF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3938D797-0E46-2E41-B5BB-364F684145C5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7225AC06-8352-6342-A01B-C293C9D75587.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8303EE00-8B99-0640-AF75-0E3E6A4D333D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/069D5263-2860-9148-8F27-9EDAD082C42F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/39E0AB7E-F148-CA42-8D35-2CF6A4F3F462.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/68904DFE-B9CE-D640-BD88-103B21F506A0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/493C18C4-DE99-6841-A6C9-2CBD6AB91D8B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/36B5EAC9-60E6-3046-BB09-C4BACE86ED1B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/35D0545E-D57F-E046-A2FF-6B04C4387F12.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C51199F6-25F5-6841-BB74-B68E7CFD6211.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/23FDA2B5-8DD3-2846-8F5A-BEE289FD9296.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7F6FF155-F377-0748-93BA-4C535AB9CDAC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C5D13384-0C02-B841-8642-889E53BC4B94.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B21E9233-30F9-A441-B148-3373D5745606.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F028E14C-0F79-AE40-A4D8-155EED6F0714.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C423BE99-3891-474B-975D-1C8120908BD8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/993F4DE0-9ABD-5644-B668-F7A04B7FDCEF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A0C3607B-134C-164A-8A4A-792A6470FC4A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA276770-06E3-464A-BAE8-16006DD961E3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EF64F0B4-752B-164E-928F-FD9C57AB57D1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C74524F4-9D96-9045-8F0F-DFA791217B89.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6EF16EEB-2B98-5249-9933-6487DB1D35F3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/99FE08A7-1B15-5F48-ACD5-A92099D09900.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8BC6B673-7B3F-2C45-94A3-0F817F1E2C25.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/316E51D5-7370-9C48-917E-5E35170DFE9D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/52FF0DB9-888B-FE4B-9BAA-9C02A39EA4A3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0471B1AD-497B-AE45-A46C-58AAD368011E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D5489ED5-A743-5741-B5E2-A120B77E8C59.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/998F4964-752A-8948-812A-1D80D86E4DB2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F64823E2-152E-4D45-B07F-0804C7987C49.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/076DE0DE-4463-BD4F-BE87-89699565C983.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/36789E51-3F74-F74B-A0E8-BE3B9AB6C047.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/82E6845F-FB1A-D948-9826-AF29611123EB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0669D649-83CD-E149-AEDF-2895866226A0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/90A664C2-85B1-3A40-A432-BA686DBF1AFB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/B52D2960-A4C7-774B-B6C1-80BFA1147A74.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/4AC6BFDD-BF53-B143-BCB7-D0EBE74F76A6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A4D66190-7D4F-4D41-A6C2-0FEE20E46647.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7EEE8678-46C5-3C4A-B72E-7DB1CCA28F36.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/396E9CA5-D883-3E46-87D8-7277583D9E6C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/26DA7641-0EF6-BC4B-B01C-EF2665C55AAC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5E33BF11-749D-2B4F-9EE2-A2BDF8256602.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E0C7FA85-CA20-594C-A3B0-176BEFDFF957.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F65B737B-23A5-3B41-A3D7-C86C818FB4A8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D1A6BD68-070A-3B48-A1CB-EB74D3F3D3C9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6655BFE9-86BF-814C-AC77-CBD02F0478F2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/705E1F40-9BE1-4948-9DA0-667FB51BA9D9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DA9F9535-53E0-2347-ACE8-91DC18E11EE2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EEE062D6-3798-A84B-859E-D71FABE5A23C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/49BADFD5-91A6-3142-9E0A-FA9E37EF7B8D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/34103420-F04D-0E46-AE92-A7495CBF59C4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/47ACA611-BC2C-F341-A0AC-7A09D76E3F47.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CF06ECE4-664A-0A42-B2DB-F77324AD04BD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7A9BE9B3-89EE-BA4B-8B39-E8C56093EA71.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/489A088B-830A-1542-B602-FEA5CE34E12E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/103C479C-64A8-5549-AAAE-8A5751ABF61D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4FA659F5-0BCA-DF4B-9295-5BE2194A7745.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5828578D-A618-754F-B3EC-8B01D960E656.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CE0F0783-498C-5E47-9541-8F8648832B23.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9A6D7EC8-05DC-DC47-945E-0A7567189F33.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2F0866E1-8A61-6F4A-9F94-C4CC8293B69A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/07DC2973-426C-0E41-8CB8-7202A3C8EF20.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7C39EDDC-152D-CB45-9CCD-FC696B50E884.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FB0B1676-968C-E341-BC5C-3D8B25D1D898.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A3DF6930-DC16-5A4C-ABB2-AF0D2DF2EDD6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5A5AC598-C24F-F542-9E6D-B2332B90197A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3B11CF1B-F709-424E-BF06-1304EEFF2B7F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3CB496D2-D032-FB4D-B415-D3577D8A9DE7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DC350997-40E7-6F4B-BE60-EEEF98462B70.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A9B3D665-4D4B-6C46-A58A-82015D5E71A7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9F4B44CF-C562-1449-AE1D-3C9DFD8B9D3C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C38DDED9-39C7-CD41-8D36-0BB05C6E27FA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BF2CF449-CF47-B247-9A0B-30DE21149750.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5AAE6207-3E16-764A-8C84-D6BE9C409808.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A519280F-3D67-CE43-8944-7D6BBF92BBA4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B24CD9EE-6369-6645-9D11-9A8D527C4D6F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1D7AD5E9-A9BD-2B42-B47E-120BA26508F7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CBB85F71-8DA5-F04B-BCFE-F70F360DCC56.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/178903CE-FD89-A541-9784-5A6BD26183AA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3B086219-D4A0-274E-8041-AF970F8871BA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A70E59CF-652B-7549-9EEA-0F0A80EF67B2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1B036B45-7752-7846-AA3E-50B04E18064C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E14363B0-8DD0-6346-913B-B4F448E09CA8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CF4FA984-7346-F549-8FB4-58130F764437.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5BBC9869-AFFC-D642-A36C-F5D65B36D38D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/F59EE5FB-298D-FA45-BF87-7F3A1F782B2E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/30623079-D038-7E4D-BE7D-1C204158F170.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/766D886A-9741-7147-ABC4-C2CE00B9ECC9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/82C78628-6E94-664F-8AC4-1CE4339A7CAF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/27BED9CE-624F-F941-A702-FF43B148F57D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/28EA8EFC-18D7-4A40-A23B-AF814EC1EEBB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0895E828-8DB1-3547-908C-4F5D1BE422EF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/028F8025-225B-214B-965D-21935EC63CEA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/31558D55-A679-D74E-A433-CD9B5A3A6F99.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5F843A28-DF35-A141-A49D-0E0106549347.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/413FC06F-4D0D-594A-A9DE-FBF06CC080D8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/161EBB89-F92A-B246-804E-4109375C1728.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A3608FB4-9243-D044-A0BE-0F048F322D1F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BD207A28-9CEE-7443-BB80-8C01DC4B3CBB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/49FC426F-8D6E-3B4C-BFED-F4425F753E9E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/10A2F745-A863-CC4B-B326-989CA1C41A58.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48AF3D07-8732-7A40-A273-9A4E82237D3C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/39F4859E-E26F-644D-9911-2703E45E7C18.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D6343BEA-CA0E-294C-B91A-2B9674625924.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DE5DA693-4B42-144C-BA24-75966AE3ABF5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48E055FF-B136-7149-8DF4-83D16FA18F83.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EF11B49E-DC6F-404E-A081-6545CD3A8E78.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2A84139E-E921-3E4A-9389-3BF2CBE42730.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DF29C289-AD5E-894D-82D6-BFA98B02BED0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1EC67F07-4CAB-5F41-ADBB-2E027B0FCFCE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EB00883A-A46D-7041-A97F-3560DFD811E4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C064C496-3B3B-EE44-9486-DF07D9CFE2CD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B5A1AA99-8951-EF40-AFA1-74962A19C8D9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/22E5F219-4189-CF40-8497-C7A09FCA1F44.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8CFFB825-077F-4D48-9A67-152035FA0187.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/93E81406-6BC4-014E-9DDA-1F6C7C4BB86A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA26A679-A822-2D47-8A1E-0939FE41B63E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2B2635DA-A385-CA44-99F6-FBEBDB12EE0C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E88E7B17-092F-5A44-9C3F-94952E29BDB0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CD91ECF4-984C-E74F-A3E9-9882778C3F0C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2618F83A-A9B7-7042-B820-D71FCA181AB9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0AFD6484-4F3E-704E-B9E1-995D9D14444D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B237F9A0-FCC4-2C4D-A5D2-D0A1644DE9FB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/06638952-156E-D740-B289-54464621FB8D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D369BB72-9873-6242-9ECF-E97D1E896E1E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F15D0917-622B-F24E-95E3-3C356CB2420C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4AAEF9C8-6C62-5146-8915-44261ED16EBF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A06689A3-AFB4-AC4E-8342-2CFA820C4DB6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/363110C6-934E-BE46-ACED-3D141BF93E80.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1289A7DD-F497-9E41-B1AA-065690C58027.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/333D57FF-2319-D749-8ADE-A5431D8ED58C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DC33F849-44A4-074F-AB4F-CC415BB0828D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5B5B429B-02EA-E94F-AF14-58062A3ECBCB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/70CF08A8-2B00-E848-A0DE-0C3CF6389CC8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B28A8D82-227A-C341-84A4-D1CC4A17DD3E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EF99D7B8-605D-E046-AA5B-08F4D45DC95B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/052B6D1B-D6EE-E549-B522-4638E8E61BFB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/781A18BF-B658-974B-8676-4765AD3313B3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1E6B077B-7DAD-C349-885D-CA427EA68842.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/415EA0A7-C5DB-2E4A-B087-76BA38F5CDF9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/56276DB0-5AFF-9347-B310-F8F3E7786E41.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/02B1711D-7915-674E-9D2B-210AD0C909B7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6418E1FE-D7DD-9745-AFF0-4460C361F42C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1078FD64-01FC-024C-8DE4-2E3A23A64324.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F0F25DED-1C99-F141-8B55-934AD82041D6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/64A4248C-678C-D641-8D8C-258E6031CDBA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E0451ECF-30CB-EA41-996C-8A49457EC6A4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C7064C36-F079-A344-8CD8-7224DE95F7F0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/11B0A604-C7C8-8747-86B3-2074CCC3A167.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AB0F770C-9A78-5647-ACA7-362EA12983DA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E5C5F493-73F3-D44C-A684-422461B2657F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/939801D5-29F0-D24D-82FC-F2C47CCA4EA0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/019528D8-6FA9-9E40-937F-65E130D998AA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F365C2F3-512D-DD41-B959-6B309215BA41.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/266FA64D-B38D-8749-9228-FEF874D4EC55.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1BAE3D5D-0379-7A4A-B9C6-EEFEEF614CEF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F23B7D71-B44C-A446-AE7F-EF4D3F877A05.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AB7BC03A-2D44-1A45-8A41-7D14058AABDC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C4CACD8B-2338-494C-969B-228A2C665312.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/441A0234-4980-7248-AE71-A0A4FD37C626.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/78CE44D3-D91D-DD49-909D-407D70107713.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F34EC959-6CB4-6540-AE01-70AFEA01D0F4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4C463EE2-73A7-4C45-A892-120CB9B18C69.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/966776EE-8EF2-2744-BEB6-E8F6306732EE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA0C5008-BBE7-A943-BEC7-AC1F8DE6855E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7A58333A-05D7-494F-984F-0DFF48811BC9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/37BFB5C2-E3B5-7E4D-97B7-DFA4380E7279.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6C496B42-CE7F-504F-8710-9DDC64554BB0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FF37A16C-3C52-9E43-ADAA-F27F0F2254DA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C432698B-7340-C047-A5DA-8CD80825ECF6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/63D1EC5E-B339-E142-8572-026DBEEFC90A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/78153B61-AEEC-2F47-B7C0-1838E7AB1F8F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EF936AA0-C204-E44E-A948-A865E75D36AC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A7D5A88A-EB87-5642-B75F-1EA7495D9FC5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/079E02A6-D34A-FC4A-A4DC-74356256AB46.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8E66A89B-BFB8-0343-89E5-556A34328625.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BCB81D85-DF27-094D-957A-076425BB9F0C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/29AAB163-0AB4-8D4D-8C21-8035B09D6385.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4B3545B3-48AA-744C-B973-5CAEE58DB141.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/468C7E14-0F72-754B-AE5B-BF0EAAC8AA85.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D6652810-C0CB-EF49-A46D-AFF60120BC55.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F4640685-7875-E84D-AF4D-8AC7BB7CBDC7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A3C495FE-80A0-8044-A7A2-F10B0BC935E0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6DCD92E6-1ABB-E640-ACF6-08CB9BE9CE16.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FE8163E4-DE45-0B4F-83DB-B1AFDD4CC50D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D1E8147E-AE64-864D-8FB9-3FD97DF4DA2E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EB486859-0DB0-DC4B-AE75-8048991555D3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4B0F04DC-5FD2-4B4B-927C-8C232EF74E0B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/73A2CD16-F191-584E-A2AA-02F3C0826DFB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F2FAD135-B172-5243-8BBC-8BD3EAEB2B39.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E1BBD903-0BA3-6D43-BBC6-130321F3A789.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E2B910F9-9808-9446-A96B-2A5F6EA9420C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E877DC57-23E1-FC40-A549-215EE16BEC44.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/068BB56E-648D-374E-A327-6049B427E15E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0AE802C2-721B-0440-A37C-AD093A12AE51.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8EB2F982-E10C-DE44-9389-D49E54F8D959.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/29245100-2B99-C847-B276-7724DA66BBEA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D9E6EFC3-6516-C44B-A7EA-36FC683E5979.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/920DFD1E-628A-584F-B0AA-BD8A2175C8B0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AC70280A-8839-4F4D-A88A-425E810AC9BE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/424EAC20-DC43-B844-959B-F6B10A0AE5B0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48441D90-BD1D-CB4C-941E-03F13099EDFE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F020471C-04BF-1543-8543-B75B84A7C419.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/440845D2-CF66-BE45-B714-40796B409819.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4D5999B5-6968-614B-BC6F-A2A754C76B4D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/41D113B7-2295-E740-9653-05C9FA7E7935.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C68A0B9D-A283-294F-9B94-02FB0F3E0E49.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/366AC3D0-9A52-DB4F-92AD-3240AF4C2CE4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/738167CE-D587-C748-9027-B7A52A44985E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/068FF6DE-614C-0B4F-A850-D3CDDD1D4CD3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CDFECF37-035F-1042-B565-69FEB889E187.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8ED3C2DC-C886-3E4C-9420-9B96F6EBB46F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D53B7B09-AEA7-EE4F-ADB7-77D1FA641385.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/569C8E71-21B2-4F46-AD5A-0D7FE8A872B1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3D471B72-F2CB-9041-8468-EEAC3547B7AE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7D9C9F68-D229-DB4D-9173-DAD90FA83926.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/859AB770-1366-C04D-BF44-EECBF535A4DA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/81F0F99F-4D74-6E4B-9DFD-9C453F32F3A9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4110DF4B-B210-0C42-92E1-C09DB8DE7247.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9E7989B2-FF89-1C44-B1C7-A9F37EB759A3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EBF47A79-C98F-1C4F-94D3-B783890BF5E2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/43914A38-036F-D94B-B3CD-C80E6D1DD70C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/91128957-F183-964B-958E-67C6F24999AA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D41E5060-84CF-2946-9161-63AAE741C3ED.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E34FC17-9D8B-F64D-BC0D-5B27177C03D9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/55CA9D25-5899-AC45-8616-E48DB6938E30.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5D608FF6-148F-5D40-BBB3-B7392D01E3CA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/60007B0C-7E8C-644E-B669-EC90E6E7493A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A3C86F70-4E7E-A641-A3B5-FB468E34FE41.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8E2641F3-1D27-6A46-805E-641C945C414B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6D2858B6-36E5-8241-A001-FDD81499563F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/82F22DC1-3070-A341-8A97-E5E2AFB4016E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E1523D1D-8425-AA4A-999E-EA9AFE6649AB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1CDFAC21-F2C3-2741-A085-E1DD0B1D7714.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D4DEC3F1-8FD7-5F46-A2CF-4B34A602FBF2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1F5F0FF5-5E21-0641-B105-6BCC6A8DF260.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/44328C18-D3B8-5641-9E04-99FAB288853A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9AC81A79-DD52-2B45-B61F-2684A2F6D89A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/72D923F5-3D20-284B-BE23-90DFF8CF84C0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5ADF3D6A-554E-0747-8AD1-E9834DF95938.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4456F955-4473-4B47-BDE5-5BDEB93C45F8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E11CC1F8-ED0D-9D4D-BDFC-C231B31646A3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5F76F0AC-FFAA-BA4A-8582-D255A6432108.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/58F4F411-CF35-E44A-A3DF-2CEDD943E61F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2BB2AA40-6536-0D4E-B69F-FDC9CE9A296C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/50736287-3BB0-C540-B91C-1752341D1B94.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5C376890-7F67-1A42-8A60-95255A639E94.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C410AA15-44CC-D948-AB0B-A01E1065D604.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/08DE1C30-0747-E34B-ACE7-6A8FC502A35E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A29BE52F-D6BA-6C45-A8ED-DC89F3E70B33.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7F2FCA34-07F7-8D44-90A1-B14CF9FB00FD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8BA6BAE1-0554-1B44-9588-231AD094B0A4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6DE0C02F-54A9-0542-99B0-949DAC150990.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AD5731C2-CAEA-5247-A34A-7F69C532FF76.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BB3203C3-D6C7-FA4A-81E6-897F94E5F7D6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5578D4A2-1B5C-9447-AA08-9B53A135C394.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9A120BC5-B4E3-E54E-93A5-67AEAD8B8B71.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E5930DBC-77D0-0A4B-A406-9272A4511420.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48360D87-4666-8844-B59C-2295E9064F11.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/05266359-3E7F-474C-BB8A-31B922FB426B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AC75189A-5995-BD4D-B4D0-BE63D6436C95.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6399A3B3-B761-3F4E-952A-46045896DDBA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D6C5CA86-1906-EF46-9374-799F16D71295.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3A4B50FE-0E18-454E-BB5B-68429F30A96A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/54E32897-7D0B-A349-9F27-77DAFC46F02D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9B1D644E-D30E-114B-98FC-DBDBDE4A71D9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6E1E774F-020C-9547-86A5-366E1E691717.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2EFF65C8-455D-C442-B636-C482C0CE956F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E139471F-46C4-2E47-9A4F-8B80B3EB66CD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7AC6EE76-F733-F74F-BCEB-0B64CCDFA0F0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B1B70C87-9EA8-D84C-8FAC-70D9D3B4952F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4BE4C949-7FBE-8D40-8349-CE4EED2FB596.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FA999EE4-B6B9-1545-BB6C-F340E0B6A238.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6FF0211E-2F8A-C94A-9B8E-3D6585173272.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FFF87CE5-6D2A-4747-B7AA-BD5FC3BF4266.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F33FA44D-9376-D048-B2D3-BA5A1A3BED24.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3DE21EB6-8755-E245-AC64-CC49495508E8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7FBA17C1-8C14-6C44-A3C5-553AD4C8B28B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A73E86E3-EEE5-2445-9A46-55763AC367DC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2AAF0766-C339-6A40-9435-9BEA5C3B8202.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/057A18C5-A3E6-7440-BB2E-875963D63477.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DCAF2EC8-E569-0843-90BC-85F638D5127B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8957764B-814D-334E-BEC5-5919A4872EB7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F1A28432-DD7A-E546-A854-5AC65F792D1C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2DAC13EA-3E80-B844-8485-B9C30912A4CC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2A7E011A-9F29-C245-9CA2-AFEEEC383101.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E4F33BE-C5EF-F34D-8A3A-BC818EFBA919.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B3370CC8-B52A-A546-99EC-457DF046E573.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DDB3DFB3-6EA1-F64E-B9E1-F4C63EF86558.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3C5CC8FB-C75C-D645-98EA-DFA2E61E713D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0A6FA28D-DA32-5143-BE74-DEBF712DA096.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5369B246-F302-FF42-A6CF-ECE527F4338B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AE02786D-CF8F-8C45-B746-CA2B616E6A13.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/89DF4B6B-9D56-AF4A-94D4-4CC807B3BDE0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/896C7213-FA5B-AA41-8CEF-9A342D374784.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/ABCD9ADD-B549-8C41-BCB5-EEC9E280E304.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E0A6A72E-DF3B-0C49-88A2-6223870EECF7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/34C3A36C-1531-8749-87FA-8A7336F6297F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7460D01D-BB69-114D-94E0-97DF00549537.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EAE26D9D-1EA0-4C44-84DB-56D55ED94560.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1474A702-2E70-1D44-84FA-22624C8C7CEB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9BD93CD4-A8A5-9F4B-AA54-B04D6363EB0B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DB86310A-2A35-8C4E-9BDA-F35A82D351CA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/98894234-02C7-7B4E-A2B1-0C18F49317CF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E857C713-6D21-3643-AAA2-32369D78A458.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BAADBF6B-F6E4-2A4D-B285-DE8C0DFE4B23.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0F742AAE-657D-5449-AE96-A02A2AC57A8C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9D303CD9-3B69-B442-BBE7-909E474B79D7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4DA0FAD3-07A3-604C-9837-99749F2E69BD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B9D50B19-8FF6-8740-8681-08A4502EC8A7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/35698A15-96E5-5644-A993-893799392349.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/ABD2410A-B1A8-8744-B3B7-758FEE9B99E1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/88C7DB85-0834-3B4B-B51C-1700633BEEED.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0BB3AD7C-73AD-9041-9384-C715F8D84635.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8C78356D-DFFA-9541-8391-505B2D879119.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DA84DB86-65D2-AE43-8C9F-8F8EC574224C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D536D122-BD15-9640-A451-1360B678A257.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E387358-5CB7-DD40-A76F-C138905149A6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2CDED229-0FC3-DE45-A836-25F80C3F91B9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BADA5326-B7FD-E84D-BDDB-67F038C09AC5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5AA980B8-03C8-B943-B616-F443825EACBD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2FDF2F21-8ED2-1F4C-93CB-FDE4D2F1DFE2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F58BD976-6998-8A40-84F1-161C0A14BB29.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/ED474639-7DBE-714E-8CD5-5D5E1A6127F8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CF7BF5E4-347C-7F4F-B698-D6EED856D55D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/026BC346-7E5B-A64D-9F8C-A6ED8056A36E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BEBF49C8-6EED-7546-BC8F-2BE06E6BCDCE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/213AEF0B-95AD-4F47-A6A4-880F8E080AE8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0E0C9450-11FD-B54A-A6D5-448A59FA8082.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E7B35F4D-1D23-734A-A6A4-9E40811FE159.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/741C2EC0-3142-D542-9AE5-D1BC0F3FA206.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4CF76649-9063-BB44-AF54-2EEFD0FBFEF7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/53818E8C-30CC-C746-B78B-B75EDE7A5495.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/99DE0AE0-75E2-1A4B-BD26-76DF9114A17F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/36E9D953-EEA0-5849-B0F4-2B8EBA12E4DA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8F614C26-F66F-AE40-A591-B99E697378CD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9231014A-C351-214F-9775-079B3E3B0776.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B4BFB84D-9884-3849-A30F-A0F966920444.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/02861BDE-DC30-064C-8607-D68EF25B94FC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AE3E0367-CBDC-8445-B920-C372E855DAAD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/24A118D4-C9BB-384A-B758-70696A91FBA5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/76075D20-A7EF-5E4C-9E4D-B2A3F144F958.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E50795CD-DC0B-4F4E-AE35-7F713308B8F8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4905DE0A-FA76-1D4C-9F9D-785696FE39AE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5D0D0D95-9821-F44A-B1AC-0F62EE2E2A5E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/125E1D34-5679-D34E-8701-A24F28CC4B74.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/15EDAC47-C8A3-EC4D-AD38-D50F6B364CB9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5382EE91-82E8-8E48-BC6D-9DD635BED176.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2B0980D6-2051-B44E-B8BE-B3B4E759375B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E650CE4B-6354-AF49-A9D9-A5DDAB4AA681.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7C5DDAA9-E970-4D41-9AF2-F41B8B76D197.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9791D8FE-2814-C94E-B2FF-562300837EF8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C7313DBC-2A20-7D4F-B052-0B1037FD3B1B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/883823E5-1FAF-B142-896D-2C6B4A859AA3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AFDA1433-40E2-7249-85B3-8BB87F35C799.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FEEC5AAA-EE61-D540-A13E-F3EFFCE975E7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/274F67D9-71D1-2642-9071-3ED4B11F9CF1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7236EB01-1FF8-954B-97A1-739D76E4FCF2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/926E888D-C3D8-D54A-ADEA-2C1C9671913C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C6D631A7-D5E2-5A4E-88D5-DF51767742D2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DEA95AF2-C311-5C42-BA2F-58811C496311.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2FF01F89-B4A7-7240-BC81-84B22E3826C7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F98ED2D0-35C3-C945-ACC6-0E58727CC2C8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F2515529-1D29-0C4D-A19E-1408E2B72809.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/236AB480-ED85-5047-97D9-B466CD8EC93C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B85FAC32-4838-784F-931C-34B81C8F8262.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B7917005-C481-7449-A271-BA928FD77356.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/61DC0DC1-C4BB-F840-894C-79101B9A40CA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A5095BD4-8996-F240-885A-8497536A5798.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0F4E9942-FD57-B743-ADA3-AE22B3A7F091.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3BD10B68-777F-F349-B2A0-4AD50301C416.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA527B2F-0306-0C47-873B-9CAE50BFCBBE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/745530D8-A52E-E24A-9235-EF8E649EEF26.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/413D2A2A-9C63-0E4F-804F-8875141871D1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FFEBA26E-87F5-2449-9CC0-1FCCC6A02E90.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CA98BFB5-38B3-B748-8273-5727D0535849.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/23A49EB5-35A7-E24F-AD78-DAFFD23D7B77.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/09134F9B-3875-2844-B3D5-040554E884CC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D0832C20-E6B4-7240-9AD3-2EA7489B082F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D0714071-1253-2741-8CC5-5049ABEF3995.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/824A78CF-BAF1-234C-B72B-A7A8BD49EDCC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7A748012-FAB9-6C4E-99CB-B6F1B28DFAC0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E9FA8B6-7D70-A34B-A81A-5DAE1C3B9C88.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B7ADF2E1-7560-FF48-BF1B-74B6F08F6EC2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C755C4C7-F5DB-B04D-AC0C-D7963372E370.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B7A79519-00D7-2C4A-9845-5B79DE87353F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3D36AC54-E1D8-FD41-8DCE-02C688A9E3E7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/82A86B01-AD00-A840-A95B-262C7A4FE996.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4DB46124-3D9D-8A4C-9FCE-4341D9A48393.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1493E384-6DF7-6345-B46D-A25F8CAF9735.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E230A5A7-75C2-2B4B-B376-CE214D4D96F3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D74EB675-A54D-7845-87E6-5C1F3A9AC3C3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48BAD624-ADF6-1B44-B248-FC9A0DF8335F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/596B6C38-EBE1-3742-A91F-992F211E6503.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5926B232-A6DA-F445-8810-D34A5EB081C8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C0F438D5-1B05-3A43-B94B-41AD8AACCF1E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A1BE9385-7BE6-7242-A0EE-953FD870CBA3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/339AE6F4-9753-C74E-BE88-F17EA38367C2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0ECB39A9-1302-8948-B115-381840397448.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0B27FD22-D86D-0A49-B624-648461CF7819.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A77CAC90-86DF-0C43-A7D2-8B0626431936.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2F96F606-2564-9541-9A93-AB6518BB82F4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A24B97CF-4A20-2A48-A9D5-013249CDE31A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D098D728-5242-4D45-A3FB-A4B08E47640D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B469A3C7-9271-7143-9583-81D352838AA3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/52FCCFF5-59A3-FF4C-A711-AD90A5C8E4A1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E29D469-D90A-7743-9816-F57358CAD1B4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/92419877-4F45-2548-BBAC-C313DA17606D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A6E01A89-0D88-344B-9B10-EF2B55B058C6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5AADFC36-BB7D-1C40-AAAF-E9CABB936AAC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C44AEEFE-0CC3-A24F-9EC9-915B79AC9D96.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4D475700-B188-0D41-A337-FCA2106323D0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1351F09B-4EB9-314E-9C4A-8F27F119E2EF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A40A244B-2B71-7642-A467-EFF1FD1D5772.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1FE39000-11B5-A242-AA57-4CF81380F017.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/45C9A23D-85D2-9F45-B47C-4B9E52B0BAF6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/61EFCFD5-C39B-574F-8E46-1A752FD37BFF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C56C9587-F079-B142-92E1-AAB30EB2462F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0A48F385-D332-524B-87B6-D2C546DFE1E2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FFBD9966-726F-E246-AAF6-E44E027AF69A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/60D072AF-1195-8F4F-8784-7241E32F2A93.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/75E50075-E6B7-554B-9F9D-0A6415734F67.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/611815C9-E406-7B46-9E83-4CC94998663E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/19D8D1DC-5F9E-B841-B0EE-5459AEFA7963.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1AC350B1-BE33-EC45-BE6C-9E92465BFBC2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/45979DE2-AF9B-474D-B916-FEB61A1D6D1A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D695DF5B-0608-C346-809E-E26BD42A3862.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/19832D78-EC36-F941-99B3-48345DD8CC06.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BFF2E216-5ADE-F741-BAE2-B11DD0F14613.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B5BECABE-117C-0E4B-BB18-450369CA51F4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4D6518A9-A772-F440-9EE3-16E57D5CF0BD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B2B41D14-AFA8-A247-9569-29AE2C5DAB36.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AB376761-A388-E944-BC99-6E0F17A738D0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/91E12374-CC61-394B-9148-2CF9ADCD995F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/94156F0E-3677-814A-8E26-3AF1BA15CDC4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/248FEE26-D8AC-A142-A242-91EDC1F5C369.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6DA26C0E-E9A0-754D-BD32-DB068A4FB35B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5D242C2E-E909-3548-8D15-67F2804A4840.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DAD3B167-5438-4E4C-A325-F1846893450E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/49B1B535-0C59-CF46-9D85-95A3B1A7AA24.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A90815C1-5BC6-5B42-9A57-4BBB4982C1C3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/13CE9370-99BE-A743-9758-5908ACEFB08E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/051754FC-72F8-894D-B429-618B22199FA6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/068C837E-F896-DF42-9429-F0E4857F7A92.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6F027E15-0E75-C443-A436-34431ED8BE7A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FE85C467-E9E4-B84E-9107-C178A3A78B67.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6F44BD43-DB45-C349-892B-7C7C772E942F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CB484619-7C31-CA41-927D-2A6705475C5C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9BB6789B-15B4-FA44-B798-F6F44477A07B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7B90F37F-C944-824A-8877-055DDAA14EEB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B1DED2AA-459D-3944-967D-1985C5C9C431.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1D527FA7-A9EE-3E40-8F1F-6CC0DC2348CB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/ADAC5E5E-5097-0F42-A192-A7AFC2601061.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6BDBB209-EEA0-6147-BE06-E3F544DB9EAB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/250D3609-7739-6C41-85A6-DDBCEA27C9D5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/458C8FD7-A50A-0C4E-80C3-3EA99BFA3002.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/768C249A-19DC-CD40-919A-25B0C34DEF10.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/137E2ECC-2233-AB46-9A8C-3D27555D5011.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D85C5E95-5FBC-2E40-8D59-24A6BB1046AE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A0218CCE-00D4-0F42-A411-13C474C338C4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/76D4AC67-8E6C-7A4A-8C17-4B0C73FDE122.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/900FC0D3-5490-0847-84EC-3F10C21BC4E2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/87659A58-8FC8-704B-BDF8-ABDDE57D5B31.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CF811549-97DB-A64A-9696-FC878E06B481.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/30151656-C505-8441-931E-D9C483BB2239.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/03974B36-BEB4-B141-A371-7B56C3E5E49E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CDA50FAB-6669-6841-8C34-A7DDFB8E5471.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3C400614-C7B5-0D46-81F0-F30EE09BB67E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DE77DE28-A42B-444C-8B47-F79E3CF79D16.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1D884B3C-963B-D742-B821-2729F9CB7318.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/91FC331F-81B3-EB44-83FB-CF801BC0B76A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E1BE5AD3-50B3-DD44-96DB-A83771B146BC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/25189892-874E-5642-84B6-3148AE32D85F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DF71CB4A-C671-E147-BE46-FF93771209A0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3B9F08DB-9920-3D4A-9DA9-498DF21F5D36.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E3199E53-FEA8-784C-B829-A0D64D747045.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/94E1683B-8F84-4A40-A09C-70B49939A2FC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/651AE234-3EA3-0E42-88BC-1F57C6D770B9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A4130B85-01BF-5343-B371-571370BE5561.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA30CF87-BE60-3745-B0E4-FE3365FE625A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/90E323E8-107E-1A48-A7C4-40AD877873DF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B619D54D-8C84-3546-87F9-93E9FE28B10B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F86AECAE-33CE-9046-AD44-5454B7B8D992.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7B3A50F8-45CE-644F-BA95-E74F3CA07505.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/30F56117-554D-D344-8679-21F91A97B388.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D78CAD1B-A111-584B-8ABF-89236489ED64.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1852A5A0-4F14-0F4E-AC48-B716ADB219A1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EE1A2271-FBDE-7149-9D29-098B827F008F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/60C22042-819E-8145-B8A4-0FA62A4EDBC6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A98B1E51-D4C0-4448-91B2-FD6C4F4A450D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DD0C2E3A-A590-4F49-81EF-A0AA1C33883D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F4FB59DA-E667-D24E-AD3C-68DD254F535D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/123D6463-08C4-1E42-B337-3A3BBBC433F2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A808365B-5A79-3042-84F4-7BDDEE553665.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2778A3B5-AB5D-EA44-85FF-C6E69DA96B34.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C10D287D-9B0C-D84C-86FA-4C586268AFC3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/34092C14-DEB0-E543-BC45-DC5B51779AF1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BA0E12DC-F9AE-4646-A0D1-E3EF2D2D7F43.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3ED812E2-EB3C-9948-B696-B8A940BED825.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8E9E4D27-2314-664E-8232-17849553B88A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4658B6A0-9830-7E45-9258-E276643383F3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CA999F47-89F9-B54D-BD10-E429A9BAA266.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EA3B1FC0-4855-7B43-AF79-9E7E15ADD4E3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B549FAC4-C11C-624C-97CE-4A84E0843584.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C1E51D8D-8FDD-3649-868B-02ED474575D6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EDEE0532-FA83-2A4C-A364-501159C47B64.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/266B8F52-CDEF-F447-BAE4-AC02BD85FB1D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F48C496B-D3A9-DF4D-97C9-BD2145A1B36B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7E61EE3D-F712-9444-B024-0028CB844F9D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/62910B6E-776E-014F-8568-2E3C525B31B2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/16B4AE42-F6E6-D344-88FD-9CBBE3F89BAE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B76647EE-EBF1-E04E-BC47-1383131B311F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F5E3342F-ED3A-0943-AECF-6A83F492C341.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/998CB8C4-9526-854A-8EC5-141CCAF20B52.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B4B454A2-3B69-664D-8A3C-4DBCEE84C124.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6E90E1FA-ECAA-6444-99AE-7113A9D7FA00.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/92350B75-662B-1449-A0A4-39A386C5A474.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F08B8463-9EBA-234B-9F84-CF2815EC1EEB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/E676140C-31EF-4045-AD81-5B4F2FD5F931.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F8885E09-F424-C14D-9DEF-503AD7A6A6E0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/CF3B94FB-23A3-4B4B-8E06-5BE3582F1DD5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/EA6F6B85-918B-FF48-BCFF-CB8A1657D1CE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/052931DD-CC08-4A4D-BFA9-FBD1F3F4C498.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/AA163232-AD6E-3E47-A2F2-810BE1B98A45.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/14176367-B0DB-E84C-84AF-D0DE8E290848.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/738F02A3-6F1A-C146-B6DE-8123F70CD93C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/983DE55D-F629-C149-88FC-6C40F5B94E5F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/B40BDE83-437E-7D49-97B8-F31A6B4FCE5C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/9489B345-9220-A249-B22B-FF27C4AF771C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/2D462AA0-7625-184A-937A-3D7ADA38EE22.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/8EE099F0-14E5-E443-961E-90564C39F837.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/477BF51E-EA84-8B4D-ADF1-8E70A6E8F275.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/315B1A9C-145B-2B4C-BB6A-DD91C2A58987.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/00832A43-5274-6746-AA3D-4EEEF6D3C3E4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/1D843E4A-893B-934C-8A9E-BEE9090101BE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/2AEF84D2-C6DA-6240-AB2B-604734E4DD44.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/42F51F12-F367-324A-AFAF-44693262D376.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/3D4B38EC-42E9-724E-A1B8-9B8722421A82.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/9D32FB91-4A2D-CF4A-88BB-027DB634242C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/391007DD-5C36-A847-8902-E9A99A8578CD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/EFBDFCC7-E7F5-A84D-9656-CAE5844A956A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/0EB071E9-229D-884E-971A-0480A56BD65D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/D0CAFF4B-6722-B44C-B964-1C6E46BBCA83.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F106D2DE-4130-8947-ACF1-B345F1BA4F60.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/07D2A392-1446-0B43-8A52-1313CF1BD8EB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/361A22D9-6EDF-9147-8072-3A5D84C97562.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/2E889934-E7B4-4845-A8FC-5F4B783D3600.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/5E5683F4-9F9F-D04E-AECB-BE9A089F3821.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6F19F45A-69DF-5A42-BDA2-BA1CCD10D274.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B585CAD9-6BFA-6547-85F0-136F0200F80E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7D8ACDC6-93C3-5947-94A5-416AF182DD3A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B243AE12-365F-BD47-8F31-4DDED067C0CB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/43217DD3-B82A-D446-89B3-AE3FF2918376.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/16A65C3A-EE4E-6C49-A075-074879B08DA3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0E877076-82B1-DC4D-AEDE-50A9ACDB7DE7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/077202D9-9A36-7B4B-B1CD-31DB729D871B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D2F9DE08-1F6A-D145-820C-A4E041ABF136.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/638D27E6-0342-C341-B90B-6E6BB1C97517.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E45E4B98-5F4E-F74D-A5BD-4554DC3A41F7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0B432AE9-074A-994D-B1F0-D633D0EF31B4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/62484139-A843-E045-ADC8-8D9FB08BA307.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6F0BF655-945B-B141-9B0A-E3F1963C8E53.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/59C3ABFB-37C6-1043-B502-9B1AA55CF9E0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5345F638-6FCF-854C-9A37-1C15394195CA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C221DC7F-027A-AF43-B7BA-1E48E4EA6514.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9D96B3EC-4DCF-8E48-A2E5-32FD271633EE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7967EEDC-9C04-B64C-9456-C65FC0E80CB1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/188E9592-E82D-4C43-95A4-459F1F374685.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/73067A32-E044-8E4A-8DDD-93A4925D4AD8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/FF0FCBE6-2B06-D74F-9A25-D946E8EB0C91.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/35425B48-A38A-5547-A881-0183A75C367F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F44597CB-B7F3-FC47-98C4-0C780DE24801.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D1A35BC1-415D-ED40-A320-8C96823CBA0E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/51D6D30C-F386-4240-9301-CA1CC3C30303.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/93A7F9B3-6A55-4F4A-B725-72830FBAE109.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/07F3D70F-EC77-6643-A936-3AE588E7C2F9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7E611FD4-DE70-CF4F-AE43-F67685F072D5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/0E32DE15-F5CF-3244-96D1-17FF3528D5CC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8E17B250-A30C-0F49-9DBC-D9780B083EFF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6112F66E-D3D0-1A4C-955B-DE8D0A27F964.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B7FEBDA1-CF93-C846-BCFD-E98DFC6F1ED0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/DC47F989-E9F8-8A47-9223-AD03B6E23C24.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/23FF6958-1C68-2B40-B76D-EC0AC79782F2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/391DCB11-DE1C-9E48-AAE9-30FE5713F9CE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C9CF3963-757D-764B-A002-156AFAF1F8DD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/46C64C23-C991-3347-81D1-530FC6A4C7D9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D7D56DF4-7BDB-D842-987A-FAE46FD6D043.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/731414AD-B7FE-5449-B8BD-1AD04DC79325.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/48950F99-6EF5-754C-B46E-0B38BB77CFB0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B00B1AA9-ED67-F242-B5E9-39DF7A04FEC4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/57D035F2-9478-1443-B7F3-3D6FCF97A33E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3F03D71E-0E61-8945-90D1-E866B479DE55.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8CAA7250-838E-984A-82EB-6A88C088ED8E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3860CAE5-A237-F34B-9D7A-E2C6BAB54191.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6481E4F4-626A-B542-8989-8CA8AB4D796F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5589EBE3-456A-BD4B-91F3-3EB445115186.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9305F613-ED0B-D347-A994-CB7607D5AAA8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/83A146D7-C6C7-C249-942A-047736555949.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/333F711F-1D65-4F45-9B04-D440EAF1AAE2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/33983792-5E9D-EA4D-81A1-B88B313C3C8F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/661A68FF-9441-D143-86CD-8C651DBB21A1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8DACCBCD-0BED-594A-B2D9-1D3F3733AC6C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F8872E3A-7974-D94D-B82F-1524E3CE2765.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C09D5188-DD7A-8543-A644-B4AD55F2AF39.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/71C157F0-AB5D-BB49-8519-170E1A445680.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/654E21D6-91E2-6C4D-8376-915BA3B03D69.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5B5D8FA8-5C53-E349-A679-E07C36CA4827.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C06735EF-A3A1-B148-A566-D46AF9BA6D98.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/CE7E744F-CE6A-D740-9A4C-4D23F41E2896.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5E5969E4-A663-5F4F-B9DE-E801A143A480.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/187EDE02-D799-E34B-8954-E729FC45864E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/9D390621-C14D-1540-A64A-F4614682C929.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/EA8F24B2-481A-1E4B-AEE2-E46F9A67DD14.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/6F19FD5A-C65C-CD40-B7F3-7B9A5E7837DF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/E1AC76BD-C228-1E4A-9E29-98EA7BA8C623.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/AE4DD495-3C83-9B46-BE6C-151E7517DA26.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F54DC8D8-6CCB-6346-AA02-F9F008BE2BB3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D101F38C-9EDB-7940-B236-C7052D62BEBA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/BBFAEC73-99B8-6F46-BD38-AF11ADAC556E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/A5283577-0FF0-2148-B566-0A102DFD0696.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/B6528C50-E1D1-4342-AD1E-A8ECC17A7B9D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/86CDB077-5430-0142-A671-49C94DC5D5BE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/30B7DE69-D267-DB44-8D2A-EBFA95F5E165.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D1F75F9C-7317-EC4D-83CB-A8AAAA49D599.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F703229D-CA88-D249-9C1E-3012ED7FDE93.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/3032DE85-D841-3644-94C7-13C1948CE23E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/1E69C55F-1BFA-564E-95A0-B6E1E59756AB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2AF8A019-5F76-5640-869C-B71FC41D0D13.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/12C6ACFF-E11A-9844-9CCD-2477137AED14.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/949FAEF8-771F-0547-95F6-3771711B9EB7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/DA1FC35F-1043-4442-B3DF-3BFEF7EED676.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A1A8CF88-DF38-1F4B-8389-611089886AE6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7B53C312-DCC3-0B44-93D5-64CA3755C2C7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/BCA1E322-1232-914A-B459-FA1C864F5F4D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/AED70892-0995-F44F-AC81-47678B0352DC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/C39AE652-94CA-5644-B64B-8BF11D62BED8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3FD0B1FA-DFE9-EA43-BC4B-A529FE0B4449.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/478A1DF9-03E0-B84F-A70E-4F1A5FA5B653.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/9500D864-653B-D14C-9C0E-029F15A6DB04.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3B113E68-7012-574C-A809-246B2FD1FA2C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/6226ABA3-8A13-AB43-9597-2DB853B08C86.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0E21CFD0-DADC-3549-A4BC-5B36D8C50BC2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/49ECB3FF-A793-C441-BD7C-1A7FED5F47CA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7E9C4A63-2E7F-9C42-A083-090D0EC14DF6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/D634FB52-8AD8-204A-B4EC-3022CF15C440.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A3C83CDA-E86F-A14F-BBEA-7A48BF315000.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A095095A-F68A-CB44-85DC-14D0D21326BD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/33DFF818-3201-B840-A56C-4DEFC3A7607B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/56023128-EB50-0148-A3DE-C5BA9C3EBDB6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0C3F0858-70A4-444A-A6BE-D39C779953FC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/9E12718A-DBFC-844F-9874-6362DD38F6FA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/DED113DF-AB18-7A40-8274-9A126028EE31.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0B5458A9-D038-B744-9411-113DD0E168A0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0D92DAC6-5956-E24C-99D6-37252EB235E9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/EC0479E8-C486-1F4F-9507-8183AC0BD9C8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2EE70A27-7660-984C-BBFE-45D340A578A7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F68CA307-1E84-6147-8744-144B2EC69E93.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/A95BD46E-1AEC-884F-A1B0-E22689BDA598.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/BE75038A-B536-7146-885E-778120133804.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F1E4A73E-7EA1-8C4B-A0E2-9A6919A54285.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/078B9F5D-7109-5041-8F71-1328294AC0C0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/23DB404F-6250-7F4B-B891-43D97341B279.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/B731AFC9-C115-9742-9D73-0337F423727C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/00A3B14D-88CB-3A42-9359-60920252FE4D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F34601C4-F419-8F4D-A7B2-AC1A380B29C7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/4736F7F0-2D20-F447-B12A-DCE4C31C49FA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/2E1541A5-063B-6B42-B650-85FFC905C239.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/A0B6337C-7D33-F443-AA4F-E0EFB7D121E2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/15A1364F-A161-9843-8DF3-9BBFC4DE9541.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/21E3B7DA-2703-0641-B208-B1B5C4C90F25.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/881C9A4E-E2C5-4A41-AA08-1AE9E0106720.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/F7F65D35-3898-8F48-8E0E-DA238A6FC40A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/653CCFA1-890B-4D43-8559-F2DFA82ECC74.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/FB28A685-F3F5-664E-8794-C8BE888EA1DC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/90283D3C-E821-3F45-866C-6A140E256836.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/022D42A5-FE80-2B4F-8A44-CCB6DD714392.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/885AAEF1-DA7D-3240-9740-7011AA68E59D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/FA5CE668-5F7A-AB4F-B725-31DC741EEBAA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/15B575F9-1E52-A748-B4BB-714999AB59B5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/BD147A8B-5ED5-3C46-9C7C-1760BBB86EB6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/A77A93FF-E2AE-E847-852C-B98C03345BF2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2530000/795F2115-45FF-6142-9E4F-04DE53E35E39.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7B190479-3CB1-E641-9B7E-6F079CDDBA40.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7EF74AAF-B4FD-C046-A80F-B0CE74475AEF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/766D99C4-4A32-F542-879F-9B79EBB75FF6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E15B0A28-86A3-A949-A2AF-2340652C55C2.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/14692EC5-FAB5-0A40-B6B1-A8FAB1AC2850.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/072845EF-67B4-9249-B271-94F6FE77F179.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/D95A923B-D514-9E42-9ADF-6088C21D86D7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/794F6965-64FB-9A4E-98D1-2B4F2F2629AE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5598E514-F022-B545-B199-10B0EA4D514B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/2635103D-7178-1148-AFA5-A2FE65A7608B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/C114CEEA-56F3-924A-953B-76FDD92C24D3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8B7031D0-F873-704B-B7F8-67D7E18C2E3A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/F86A233E-A824-C846-9DAF-14229BAEBD80.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/4E0EAD88-5AA7-9B46-B7AA-2B127B95E76B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/7F11D898-38B0-9246-B4CD-F61BCAB4A98F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/03CDEC43-BB4A-C44F-9509-74E4CBD7CDCE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/140103DC-4EE8-9644-B17B-87C9D7BB7E7C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8D2104A0-0603-D24E-9546-B83EB93F49C0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5371ADED-0914-044E-98C5-8B4F87B706B9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/5535D5B1-FA1D-F945-B1F1-7004208675AC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/02AD38BD-4FC9-6F45-9706-E905E24A2C8C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/99AF00A0-CE02-794A-971C-F56C7ABB176C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/98D64168-2434-1F4F-8DC0-54A0BB63C138.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/85EE2946-2C04-4748-A81D-FD6D0A9EBBBE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/DDB99CB7-EC42-B14F-BB01-A96BEA5B1328.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0533B097-D134-554A-815E-10BE4CAEA782.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/79FA702D-12D6-C64E-A40B-D3DD02EDF312.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/8AC9907E-80E2-064A-9B66-79EDB934E14D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3891FA43-B806-6D43-B8D0-A133A22218B3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E80E7A56-0819-834F-BBC7-819E517D07E0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/2A20677E-9E37-CD43-85BE-16D53D4D984B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E7059EBA-5E2F-9C40-AFD4-2713AE90A59F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3F99170F-685B-794A-82A0-23544AAA6938.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/43D01DEA-0080-E04D-AC55-A89D3338606C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/6C52DDBA-23B0-F44B-A565-A0B580531CBC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/5FBBE651-F789-ED43-A08A-24D6EC9C42C4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/EBC9276E-CEA6-FF41-8D2D-EFAB00929CEC.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/C9D1AF8E-D9A0-E946-8D50-9E4DCAB786F8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/133FDADD-4854-6643-B936-AA2B848F6691.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E26B6237-FC01-1141-BCEA-833BED81CE3D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/0B4C1800-574C-D144-B44E-6A77BBAC3D99.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/4C152BC6-7AEF-784B-AA6B-FAD47E308F3B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/B400FD35-E644-B248-A8C8-D7AFE1180ECF.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A68D9CBD-0F75-2845-B750-4197D5269C11.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/C2114E01-674D-4045-A81F-110CFE197B96.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/B47DE0C5-7464-2C4D-A274-9665742E1067.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/6484EBC3-041F-064A-892C-96057A52E72D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3651BBEA-04C8-4840-BD33-E08594B5BAE3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/286DE3D3-8794-BF4D-974F-94366D09369D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/D5F978D2-A915-C64A-9D12-E505857DDFAA.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/351E8883-3986-F646-BF13-4AADE4CA09ED.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/FDA5CDF3-30FD-8C4F-BDBC-4B3C09E1838A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/597C332C-16C3-894B-8615-4EB9642FFDEE.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/DD91651A-4DD0-524D-B9D9-EB75FB4AFA59.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7E964DBF-8393-C045-BA4B-53E86ACCB2B1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/05FBFE5C-2A9E-6E4F-BCEA-27DC9D9491B4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/530AC843-953A-CF47-B934-C75AA362D341.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E899DE87-4382-D742-AE74-449AB077D384.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/14AF4B11-640A-C148-8A2B-74C0BD870E12.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/827B6D1D-94F2-B445-B197-18AABC8E1613.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3C2D9C32-3814-1F46-80CE-F3FA86B1F02B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/F8FD3844-336D-114C-946C-5AA6A04B46F8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/994E3419-FE34-4B4A-81CF-3BD829C2987B.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/6B1300EA-3785-8A43-87FF-4D6F85C8373E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/D728297F-BFBC-5149-9025-E1AC1C9A121C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/34F47FD1-6A76-B943-BFFB-9091E34D31C6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/D4FF93AD-1262-1A43-A23D-7D82A5070190.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/BA2A8963-C600-E148-AE2E-20A8B94CDF3A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/F7CAFB0D-15CD-274A-81C3-6121AB408B09.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/AD549184-8873-2A46-AFF5-47EA10AAB563.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/51A1DE36-BDDB-3E49-B79E-34013BCB3443.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/5D507A06-A64B-D348-B57B-21F54B89C4B4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/BDB417B4-5D34-BF45-8174-5F2E0AFA99E7.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/F6CB8A5A-881F-8B45-A486-3945B99794E8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/06C0A067-DE77-B340-BCBF-D23B2795C7D0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/8D71E4B5-58A5-3644-8B39-455EF5999331.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/09E777BF-D1BA-A946-817A-CD1880FD0C58.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/5BEB62B4-F87C-B247-8C2C-C38E1AA8C3DD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/DF79CE86-722A-BE4E-8AFE-63FE86ED05C9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/693F3FC5-96A7-AF4F-BAC6-1A2FDDF73FD8.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/EB902478-F93E-5F42-9BC3-3D3C9B4AE357.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/23D5FD62-3247-F643-849F-85A5E9A31297.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/CB44A5F8-FFD1-6044-95D5-9593B65FE217.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/3DE3EAE7-5CE0-9647-B5FF-3C6A4E8F5C7E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/091F6F34-8E84-9948-AAF6-A46FFDA53CE3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/79F696AE-DB50-F341-A36C-24F99312C2B1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/A73D9E9E-16B1-014A-8888-EB77E5464CE5.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/90EFE8C0-782A-DB49-B3A5-64372AAFE6A9.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/04A698D5-2AF9-B548-9A6D-DB5AFE92F0A6.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/96CE9009-2730-4348-950C-3BCCA91F4000.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/4425D7AC-68E5-9C4B-A67B-6DC0150D7358.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/ADF1027E-3372-0146-823B-76C0DA6859FB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/D1D5C841-95C3-0A46-BFB8-4B137B43434F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/E898A73B-9C07-A14C-94B0-E969146B242E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/7E726C86-107A-4C49-B32A-E15EA8406064.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/1D786997-BE6C-6F46-B4F4-030F04B02110.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/4C418CAE-AFEB-2B47-A602-ADABE89EF146.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/10B1CC78-BD79-BC4E-BA88-AA7E1ECBC87D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/BA1D4A0B-365F-C84F-9651-64266579324D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/5DC5E83D-F402-6148-9290-196FFC3A5ACD.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/73D99448-210C-EF48-8FC0-D81855B97002.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/21A4A7DF-F90B-324B-A5DD-7919D9F295C0.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/AE53D41A-B981-F64C-BD14-8ED792F8FC3A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/429677C2-7A4F-3547-8A62-A5FF435D08D4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/9683D6F4-D1C0-0749-A904-819EEC5E412F.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/CE8CB753-1A02-9F44-839B-7D4EFE60293E.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/6F5813CE-1752-B34E-886D-B557E8F4F656.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/B44EF7DA-5DF1-2A44-B23D-1AD86454A635.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/90EE7E99-C372-634D-8377-A583DE241FE4.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/678818FE-CF1B-6340-8B7B-9E07C8C64A20.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/AD6D9EEB-233B-DC4F-863E-3B2084EBD84D.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/4EF32CC1-34C1-5047-8969-5C18EDCC7655.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/9AC86302-538C-754F-A59D-6981A311F820.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2550000/34DD6C24-7751-6C4B-87E0-DE501F5E308A.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/80000/28A075BD-6ED4-3B47-9A12-BCFF79C141FB.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/80000/D6486EF1-794E-1E43-9A8F-79F7724693F1.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/80000/85958B86-36FC-454E-956E-68C9E3C0FA40.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2550000/769CE5B7-EC2D-FA4A-9ACD-8CE9EDEB548C.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2550000/F91A8F8C-0BEC-5049-BEF3-4102F5038EF3.root +/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2550000/9FD3E958-A4D8-6A46-85B8-8621C6E71E7C.root diff --git a/crab/getLeg1ThresholdForDoubleEle.py b/crab/getLeg1ThresholdForDoubleEle.py new file mode 100755 index 00000000000..0aaf3b77d30 --- /dev/null +++ b/crab/getLeg1ThresholdForDoubleEle.py @@ -0,0 +1,63 @@ +#!/bin/env python + +# +# This function allows to get the L1 threshold of the first leg of the DoubleEle trigger +# Accepts: +# - year of data-taking (2016, 2017 or 2018) +# - hltTrigger +# Returns list generator of: +# - leg1 threshold +# - json for these thresholds +# +def getLeg1ThresholdForDoubleEle(year, hltTrigger='HLT_Ele23_Ele12_CaloIdL_TrackIdL_IsoVL', debug=False): + import urllib, os, glob + from FWCore.PythonUtilities.LumiList import LumiList + def download(url, destination): + if(debug): print 'Downloading from %s' % url + try: os.makedirs(destination) + except: pass + urllib.urlretrieve(url, os.path.join(destination, url.split('/')[-1])) + + def subtractLumis(json, jsonToSubtract): + if(debug): print 'Subtracting %s from %s' % (jsonToSubtract, json) + lumis = LumiList(filename = json) - LumiList(filename = jsonToSubtract) + lumis.writeJSON(fileName=json) + + def mergeLumis(json, jsonToMerge): + if(debug): print 'Merging %s into %s' % (jsonToMerge, json) + lumis = LumiList(filename = json) + LumiList(filename = jsonToMerge) + lumis.writeJSON(fileName=json) + + prescalePage = 'https://tomc.web.cern.ch/tomc/triggerPrescales/%s/' % year + dirToStore = os.path.join('prescaleInformation', year, hltTrigger) + download(prescalePage + hltTrigger + '.php', dirToStore) + with open(os.path.join(dirToStore, hltTrigger + '.php')) as f: + for line in f: + if 'prescale1' in line and 'L1_DoubleEG' in line: + download(prescalePage + line.split('>')[0].split('=')[-1], dirToStore) + + jsonForThreshold = {} + for json in glob.glob(os.path.join(dirToStore, '*.json')): + leg1 = int(json.split('L1_DoubleEG_')[-1].split('_')[0].replace('LooseIso', '')) + leg2 = int(json.split('L1_DoubleEG_')[-1].split('_')[1].replace('LooseIso', '')) + if leg1 in jsonForThreshold: mergeLumis(jsonForThreshold[leg1], json) # this theshold already exists, so we merge them into the existing one + else: jsonForThreshold[leg1] = json + + thresholdsToSubtract = [] + for threshold in sorted(jsonForThreshold.keys()): # sorting from low to high thresholds + if(debug): + print + print 'Preparing json for threshold %s' % str(threshold) + json = jsonForThreshold[threshold] + for t in thresholdsToSubtract: + subtractLumis(json, jsonForThreshold[t]) + if not len(LumiList(filename = json)): + if(debug): print "empty json" + continue + yield threshold, json + thresholdsToSubtract.append(threshold) + +if __name__ == '__main__': + print 'Testing:' + for threshold, json in getLeg1ThresholdForDoubleEle('2018', debug=True): + print threshold, json diff --git a/crab/mergeOutput.py b/crab/mergeOutput.py new file mode 100644 index 00000000000..d8e3f3f3abe --- /dev/null +++ b/crab/mergeOutput.py @@ -0,0 +1,74 @@ +#!/bin/env python +import os, glob, ROOT, subprocess + +submitVersion = "2021-02-10" +mainOutputDir = '/eos/cms/store/group/phys_egamma/tnpTuples/%s/%s' % (os.environ['USER'], submitVersion) + +print("submitVersion: %s"%submitVersion) +print("mainOutputDir: %s"%mainOutputDir) +def system(command): + # print "=="*51 + # print "COMMAND: ",command + return subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT) + +# Check if valid ROOT file exists +def isValidRootFile(fname): + if not os.path.exists(os.path.expandvars(fname)): return False + f = ROOT.TFile(fname) + if not f: return False + try: + return not (f.IsZombie() or f.TestBit(ROOT.TFile.kRecovered) or f.GetListOfKeys().IsEmpty()) + finally: + f.Close() + +for eraDir in glob.glob(os.path.join(mainOutputDir, 'UL2016*')): + era = eraDir.split('/')[-1] + try: + os.makedirs(os.path.join(eraDir, 'merged')) + except: + pass + print("era:",era) + for crabDir in glob.glob(os.path.join(mainOutputDir, era, '*/*/*')): + print "=="*51 + targetFile = os.path.join(eraDir, 'merged', crabDir.split(era + '_')[-1] + '.root') + filesToMerge = glob.glob(os.path.join(crabDir, '*/*/*.root')) + print "crabDir: ",crabDir + print "targetFile: ",targetFile + # print "filesToMerge: ",filesToMerge + + if os.path.exists(targetFile): # if existing target file exists and looks ok, skip + if isValidRootFile(targetFile): + print("Seems hadd is already performed.") + continue + else: os.system('rm %s' % targetFile) + + for f in filesToMerge: + if not isValidRootFile(f): + print('WARNING: something wrong with %s' % f) + + if len(filesToMerge)>100: + print('A lof of files to merge, this might take some time...') + + tempTargets = [] + # split the list of all root files into chunk of 100 files + tempFilesToMerge = [filesToMerge[x:x+100] for x in range(0, len(filesToMerge), 100)] + + # print "tempFilesToMerge:",len(tempFilesToMerge) + + for i in range(0,len(tempFilesToMerge)): + print "---" + tempTargetFile = targetFile.replace('.root', '-temp%s.root' % str(i)) + print("tempTargetFile: %s"%tempTargetFile) + tempTargets.append(tempTargetFile) + if os.path.exists(tempTargetFile): # if existing target file exists and looks ok, skip + if isValidRootFile(tempTargetFile): continue + else: + print("Removing temp hadd file {}".format(tempTargetFile)) + os.system('rm %s' % tempTargetFile) + # tempFilesToMerge = [f for f in filesToMerge if ('%s.root' % str(i)) in f] + print(system('hadd %s %s' % (tempTargetFile, ' '.join(tempFilesToMerge[i])))) + print(system('hadd %s %s' % (targetFile, ' '.join(tempTargets)))) + for i in tempTargets: + system('rm %s' % i) + else: + print(system('hadd %s %s' % (targetFile, ' '.join(filesToMerge)))) diff --git a/crab/mixMonteCarloPrescales.py b/crab/mixMonteCarloPrescales.py new file mode 100755 index 00000000000..1219aac5c3f --- /dev/null +++ b/crab/mixMonteCarloPrescales.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python + +import ROOT, glob, os + +# +# System command +# +import subprocess +def system(command): + return subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT) + + +# +# Write mixed output tree based on dyDir, inputTreeDir and fractions +# +def mix(target, inputs, inputTreeDir, fractions): + assert abs(sum(fractions.values())-1.) < 0.001, 'Fractions do not sum up to 1!' + + inputData = [] + for input in inputs: + inputFile = ROOT.TFile(input) + inputTree = inputFile.Get('%s/fitter_tree' % inputTreeDir) + totalEntries = inputTree.GetEntries() + threshold = input.split('_leg1Threshold')[-1].split('.root')[0] + inputData.append((totalEntries, threshold, inputTree, inputFile)) + + inputData.sort() # Make sure the one with the least amount of events sits in the back, in this way we minimize the loss of statistics from missing/failed jobs + totalEntries = inputData[-1][0] + + events = set() + filesToMerge = '' + for _,threshold, inputTree,_ in inputData: + toCopy = int(totalEntries*fractions[threshold]) + outFile = ROOT.TFile(target.replace('.root', '_%s.root' % threshold), 'RECREATE') + filesToMerge += target.replace('.root', '_%s.root' % threshold) + ' ' + outFileDir = outFile.mkdir(inputTreeDir) + outFile.cd() + outFileDir.cd() + + print 'Saving %s entries from %s for threshold %s' % (toCopy, totalEntries, threshold) + outTree = inputTree.CloneTree(0) + i, j = 0, 0 + while j < toCopy and i < totalEntries: + inputTree.GetEntry(i) + i+=1 + if (inputTree.event, inputTree.el_pt) in events: continue # Check if this event was not yet written (and also the pt because you have sometime two entries for one pair) + events.add((inputTree.event, inputTree.el_pt)) + j+=1 + outTree.Fill() + if j%100000==0: + print 'Event %d written' % j + outTree.AutoSave() + outTree.AutoSave() + outFile.Close() + + print system('hadd -f %s %s;rm %s' % (target, filesToMerge, filesToMerge)) # merge and delete the temporary outfiles + +# +# Main script +# +submitVersion='2020-03-03' +allFilesPerThreshold = glob.glob('/eos/cms/store/group/phys_egamma/tnpTuples/*/%s/*/merged/DY*.root' % submitVersion) +allFilesBase = set(f.split('_leg1Threshold')[0] for f in allFilesPerThreshold) + +for base in allFilesBase: + filesToMix = [f for f in allFilesPerThreshold if (base + '_leg1Threshold') in f] + target = base+'_L1matched.root' + print 'Mixing for %s using\n %s' % (target, '\n '.join(filesToMix)) + + if '2016' in base: fractions = {'15': 0.4176, '18': 0.3888, '23': 0.1890, '24': 0.0047} + elif '2017' in base: fractions = {'18': 0.0018, '22': 0.7959, '24': 0.0870, '25': 0.1153} + elif '2018' in base: fractions = {'22': 0.9119, '25': 0.0881} + + try: + mix(target, filesToMix, 'tnpEleTrig', fractions) + except Exception as e: + print(e) diff --git a/crab/printBinContent.py b/crab/printBinContent.py new file mode 100644 index 00000000000..0c1ffe577ce --- /dev/null +++ b/crab/printBinContent.py @@ -0,0 +1,8 @@ +import ROOT + +fileName1 = ROOT.TFile.Open("/eos/user/r/ryi/TagandProbe/TnP2016post/2016post-NLO_amc_allrange.root","READ") +tree1 = fileName1.Get("evtCounter/h_sumW") +#tree1 = fileName1.Get("tnpEleTrig/fitter_tree/pair_pt") +binContent = tree1.GetBinContent(tree1.FindBin(0.5)); +print(binContent) +fileName1.Close() diff --git a/scripts/crab/tnpCrabJobsFinalStep.py b/crab/tnpCrabJobsFinalStep.py similarity index 100% rename from scripts/crab/tnpCrabJobsFinalStep.py rename to crab/tnpCrabJobsFinalStep.py diff --git a/crab/tnpCrabSubmit.py b/crab/tnpCrabSubmit.py new file mode 100755 index 00000000000..242f4b33986 --- /dev/null +++ b/crab/tnpCrabSubmit.py @@ -0,0 +1,257 @@ +#!/bin/env python +import os +try: + from CRABClient.UserUtilities import config +except ImportError: + print + print( + "ERROR: Could not load CRABClient.UserUtilities. Please source the crab3 setup:" + ) + print("source /cvmfs/cms.cern.ch/crab3/crab.sh") + exit(-1) +try: + cmsswBaseDir = os.environ["CMSSW_BASE"] +except KeyError as e: + print("Could not find CMSSW_BASE env var; have you set up the CMSSW environment?") + exit(-1) + +from CRABAPI.RawCommand import crabCommand +from CRABClient.ClientExceptions import ClientException +from httplib import HTTPException +from multiprocessing import Process + +# +# Example script to submit TnPTreeProducer to crab +# +##submitVersion = "2022-06-16-Run2018A" # add some date here +#submitVersion = "2022-7-1-UL2018_NLO_inclusive" # add some date here + +#submitVersion = "2016post-NLO_amc_Vpt_0" # add some date here +#submitVersion = "2016_post_withHEEP_NLOamc" # add some date here +#submitVersion = "2016pre_withHEEP_data" +#submitVersion = "2017_withHEEP_Run2017D" +#submitVersion = "2016_pre_withHEEP_NLOamc_SumtotWeight" +submitVersion = "2016_pre_withHEEP_ptbinned_SumtotWeight" +doL1matching = False + +defaultArgs = ["doEleID=True", "doPhoID=False", "doTrigger=True"] +mainOutputDir = "/store/user/ryi/LQ/TnP/%s" % (submitVersion) +#mainOutputDir = "/eos/user/r/ryi/LQ/TnP/%s" % (submitVersion) + +# Logging the current version of TnpTreeProducer here, such that you can find back what the actual code looked like when you were submitting +# os.system("mkdir -p /eos/cms/%s" % mainOutputDir) +# os.system("(git log -n 1;git diff) &> /eos/cms/%s/git.log" % mainOutputDir) + + +# +# Common CRAB settings +# +config = config() + +config.General.requestName = "" +config.General.transferLogs = False +config.General.workArea = "crab_%s" % submitVersion + +config.JobType.pluginName = "Analysis" +config.JobType.psetName = "../python/TnPTreeProducer_cfg.py" +config.JobType.sendExternalFolder = True +config.JobType.allowUndistributedCMSSW = True + +config.Data.inputDataset = "" +config.Data.inputDBS = "global" +config.Data.publication = False +# config.Data.allowNonValidInputDataset = True +#config.Site.storageSite = "T2_CH_CERN" +#config.Site.storageSite = "T2_US_Florida" +config.Site.storageSite = "T3_US_FNALLPC" + +#config.General.instance = "preprod" # use preproduction server +config.Data.partialDataset = True +#config.Data.runRange = "0" # a temporary hack until we have a properly named config. param. + +# +# Certified lumis for the different eras +# (seems the JSON for UL2017 is slightly different from rereco 2017, it's not documented anywhere though) +# +def getLumiMask(era): + if era == "2016": + return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions16/13TeV/ReReco/Final/Cert_271036-284044_13TeV_23Sep2016ReReco_Collisions16_JSON.txt" + elif era == "2017": + return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions17/13TeV/ReReco/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON_v1.txt" + elif era == "2018": + return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions18/13TeV/PromptReco/Cert_314472-325175_13TeV_PromptReco_Collisions18_JSON.txt" + elif "UL2016" in era: + #return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions16/13TeV/Legacy_2016/Cert_271036-284044_13TeV_Legacy2016_Collisions16_JSON.txt" + return "/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions16/13TeV/Legacy_2016/Cert_271036-284044_13TeV_Legacy2016_Collisions16_JSON.txt" +#https://twiki.cern.ch/twiki/bin/view/CMS/PdmVLegacy2016postVFPAnalysis#Data_Certification + elif era == "UL2017": + return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions17/13TeV/Legacy_2017/Cert_294927-306462_13TeV_UL2017_Collisions17_GoldenJSON.txt" + elif era == "UL2018": + return "https://cms-service-dqmdc.web.cern.ch/CAF/certification/Collisions18/13TeV/Legacy_2018/Cert_314472-325175_13TeV_Legacy2018_Collisions18_JSON.txt" + #ReReco/Cert_314472-325175_13TeV_17SeptEarlyReReco2018ABC_PromptEraD_Collisions18_JSON.txt + + +# +# Submit command +# +def submit(config, requestName, sample, era, json, extraParam=[]): + isMC = "SIM" in sample + config.General.requestName = "%s_%s" % (era, requestName) + config.Data.inputDataset = sample + config.Data.outLFNDirBase = "%s/%s/%s/" % ( + mainOutputDir, + era, + "mc" if isMC else "data", + ) + config.Data.splitting = "FileBased" if isMC else "LumiBased" + #config.Data.splitting = "Automatic" if isMC else "Automatic" + config.Data.lumiMask = None if isMC else json + config.Data.unitsPerJob = 5 if isMC else 40 +# config.Data.unitsPerJob = 180 if isMC else 180 + #config.Data.unitsPerJob = 2200 if isMC else 1050000 + config.JobType.pyCfgParams = ( + defaultArgs + + ["isMC=True" if isMC else "isMC=False", "era=%s" % era] + + extraParam + ) + + print config + try: + crabCommand("submit", config=config) + except HTTPException as hte: + print "Failed submitting task: %s" % (hte.headers) + except ClientException as cle: + print "Failed submitting task: %s" % (cle) + print + print + + +# +# Wrapping the submit command +# In case of doL1matching=True, vary the L1Threshold and use sub-json +#A "wrapper" is a shell script that embeds a system command or utility, that saves a set of parameters passed to to that command. Wrapping a script around a complex command line simplifies invoking it. +def submitWrapper(requestName, sample, era, extraParam=[]): + if doL1matching: + from getLeg1ThresholdForDoubleEle import getLeg1ThresholdForDoubleEle + + for leg1Threshold, json in getLeg1ThresholdForDoubleEle(era): + print "Submitting for leg 1 threshold %s" % (leg1Threshold) + p = Process( + target=submit, + args=( + config, + "%s_leg1Threshold%s" % (requestName, leg1Threshold), + sample, + era, + json, + extraParam + ["L1Threshold=%s" % leg1Threshold], + ), + ) + p.start() + p.join() + else: + p = Process( + target=submit, + args=(config, requestName, sample, era, getLumiMask(era), extraParam), + ) + p.start() + p.join() + + +# +# List of samples to submit, with eras +#era = "UL2017" +# Data +#submitWrapper( +# "Run2017B", "/SingleElectron/Run2017B-UL2017_MiniAODv2-v1/MINIAOD", era +#) +#submitWrapper( +# "Run2017C", "/SingleElectron/Run2017C-UL2017_MiniAODv2-v1/MINIAOD", era +#) +#submitWrapper( +# "Run2017D", "/SingleElectron/Run2017D-UL2017_MiniAODv2-v1/MINIAOD", era +#) +#submitWrapper( +# "Run2017E", "/SingleElectron/Run2017E-UL2017_MiniAODv2-v1/MINIAOD", era +#) +#submitWrapper( +# "Run2017F", "/SingleElectron/Run2017F-UL2017_MiniAODv2-v1/MINIAOD", era +#) +## MC +#submitWrapper( +# "DY_LO", +# "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", +# era, +#) +#submitWrapper( +# "DY_LO_ext", +# "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9_ext1-v1/MINIAODSIM", +# era, +#) +#submitWrapper("DY_NLO_0-50", "/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_50-100", "/DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_100-250", "/DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_250-400", "/DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_400-650", "/DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v4/MINIAODSIM", era) +#submitWrapper("DY_NLO_650-inf", "/DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO", "/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL17MiniAODv2-106X_mc2017_realistic_v9-v2/MINIAODSIM", era) + + +#era = "UL2018" +# Data +#submitWrapper("Run2018A", "/EGamma/Run2018A-UL2018_MiniAODv2-v1/MINIAOD", era) +#submitWrapper("Run2018B", "/EGamma/Run2018B-UL2018_MiniAODv2-v1/MINIAOD", era) +#submitWrapper("Run2018C", "/EGamma/Run2018C-UL2018_MiniAODv2-v1/MINIAOD", era) +#submitWrapper("Run2018D", "/EGamma/Run2018D-UL2018_MiniAODv2-v2/MINIAOD", era) +# MC +#submitWrapper("DY_NLO_0-50", "/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_50-100", "/DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_100-250", "/DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_250-400", "/DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_400-650", "/DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_NLO_650-inf", "/DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) + +#submitWrapper("DY_LO", "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) +#submitWrapper("DY_LO-ext", "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1_ext1-v1/MINIAODSIM", era) +#submitWrapper("DY_NLO", "/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL18MiniAODv2-106X_upgrade2018_realistic_v16_L1v1-v2/MINIAODSIM", era) + + +era = "UL2016preVFP" +## Data +##submitWrapper("Run2016B", "/SingleElectron/Run2016B-ver1_HIPM_UL2016_MiniAODv2-v2/MINIAOD", era) #no good certified data +#submitWrapper("Run2016B_ver2", "/SingleElectron/Run2016B-ver2_HIPM_UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("Run2016C", "/SingleElectron/Run2016C-HIPM_UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("Run2016D", "/SingleElectron/Run2016D-HIPM_UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("Run2016E", "/SingleElectron/Run2016E-HIPM_UL2016_MiniAODv2-v5/MINIAOD", era) +#submitWrapper("Run2016F", "/SingleElectron/Run2016F-HIPM_UL2016_MiniAODv2-v2/MINIAOD", era) +### MC +#submitWrapper("DY_pre_LO", "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v1/MINIAODSIM", era) +#submitWrapper("DY_pre_NLO", "/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v1/MINIAODSIM", era) + +submitWrapper("DY_pre_NLO_0-50", "/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) +submitWrapper("DY_pre_NLO_50-100", "/DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) +submitWrapper("DY_pre_NLO_100-250", "/DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) +submitWrapper("DY_pre_NLO_250-400", "/DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) +submitWrapper("DY_pre_NLO_400-650", "/DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) +submitWrapper("DY_pre_NLO_650-inf", "/DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODAPVv2-106X_mcRun2_asymptotic_preVFP_v11-v2/MINIAODSIM", era) + +##https://cms-pdmv.cern.ch/grasp/samples?dataset_query=*DYJetsToLL_LHEFilterPtZ*&campaign=RunIISummer20UL16*GEN,RunIISummer20UL16*GENAPV,RunIISummer20UL17*GEN,RunIISummer20UL18*GEN + + +#era = "UL2016postVFP" +#submitWrapper("Run2016F_postVFP", "/SingleElectron/Run2016F-UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("Run2016G", "/SingleElectron/Run2016G-UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("Run2016H", "/SingleElectron/Run2016H-UL2016_MiniAODv2-v2/MINIAOD", era) +#submitWrapper("DY_post_LO", "/DYJetsToLL_M-50_TuneCP5_13TeV-madgraphMLM-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v1/MINIAODSIM", era) +#submitWrapper("DY_post_NLO", "/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v1/MINIAODSIM", era) + ### # /DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/RunIISummer16MiniAODv3-PUMoriond17_94X_mcRun2_asymptotic_v3_ext2-v1/MINIAODSIM +#submitWrapper("DY_post_NLO_0-50", "/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) +#submitWrapper("DY_post_NLO_50-100", "/DYJetsToLL_LHEFilterPtZ-50To100_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) +#submitWrapper("DY_post_NLO_100-250", "/DYJetsToLL_LHEFilterPtZ-100To250_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) +#submitWrapper("DY_post_NLO_250-400", "/DYJetsToLL_LHEFilterPtZ-250To400_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) +#submitWrapper("DY_post_NLO_400-650", "/DYJetsToLL_LHEFilterPtZ-400To650_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) +#submitWrapper("DY_post_NLO_650-inf", "/DYJetsToLL_LHEFilterPtZ-650ToInf_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/RunIISummer20UL16MiniAODv2-106X_mcRun2_asymptotic_v17-v2/MINIAODSIM", era) + +#https://twiki.cern.ch/twiki/bin/viewauth/CMS/PdmVRun2LegacyAnalysis + +#NLOptbinned:https://cms-pdmv.cern.ch/grasp/samples?dataset_query=*DYJetsToLL_LHEFilterPtZ*&campaign=RunIISummer20UL16*GEN,RunIISummer20UL16*GENAPV,RunIISummer20UL17*GEN,RunIISummer20UL18*GEN diff --git a/crabConfig.py b/crabConfig.py new file mode 100644 index 00000000000..b5e5a1ed4fb --- /dev/null +++ b/crabConfig.py @@ -0,0 +1,40 @@ +from CRABClient.UserUtilities import config +config = config() +CFG = 'sumweight' + +# To submit to crab: +# crab submit -c crabConfig_data.py +# To check job status: +# crab status -d /# To resubmit jobs: +# crab resubmit -d / + +# Local job directory will be created in: +# / +config.General.workArea = 'crab_sumweight' +config.General.requestName = CFG +config.General.transferOutputs = True +config.General.transferLogs = False + +# CMS cfg file goes here: +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/sumofweight.py' # analyzer cfg file +config.JobType.maxMemoryMB = 5000 +config.JobType.maxJobRuntimeMin = 100 +# Define input and units per job here: +#config.Data.userInputFiles = open('MLAnalyzer/list_production.txt'%idx).readlines() +#config.Data.userInputFiles = open('MLAnalyzer/list_production.txt').readlines() +config.Data.userInputFiles = open('list.txt').readlines() +config.Data.splitting = 'FileBased' +config.Data.unitsPerJob = 2 # units: as defined by config.Data.splitting +config.Data.totalUnits = -1 # -1: all inputs. total jobs submitted = totalUnits / unitsPerJob. cap of 10k jobs per submission +#config.Data.totalUnits = 10 # test production +config.Data.publication = False + +# Output files will be stored in config.Site.storageSite at directory: +# /// +config.Site.storageSite = 'T3_US_FNALLPC' +#config.Site.storageSite = 'T2_CH_CERN' +config.Data.outLFNDirBase = '/store/user/ryi' # add your username as subdirectory +#config.Data.outLFNDirBase = '/store/user/ddicroce/' # add your username as subdirectory +config.Data.outputPrimaryDataset = 'sumofweight' +config.Data.outputDatasetTag = config.General.requestName diff --git a/crab_sumweight/crab_sumweight/crab.log b/crab_sumweight/crab_sumweight/crab.log new file mode 100644 index 00000000000..485b5138318 --- /dev/null +++ b/crab_sumweight/crab_sumweight/crab.log @@ -0,0 +1,364 @@ +0 +DEBUG 2023-01-06 13:58:11.372 UTC: CRAB Client version: v3.221018 +DEBUG 2023-01-06 13:58:11.372 UTC: Running on: Linux lxplus730.cern.ch 3.10.0-1160.80.1.el7.x86_64 #1 SMP Tue Nov 8 15:48:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux - CentOS Linux 7 (Core) +DEBUG 2023-01-06 13:58:11.372 UTC: Executing command: 'submit' +DEBUG 2023-01-06 13:58:11.373 UTC: Found CRAB cache file /afs/cern.ch/user/r/ryi/.crab3 +INFO 2023-01-06 13:58:11.375 UTC: Will use CRAB configuration file crabConfig.py +DEBUG 2023-01-06 13:58:11.375 UTC: Loading CRAB configuration file. +DEBUG 2023-01-06 13:58:11.377 UTC: Will use CRAB Analysis plugin (i.e. will run an analysis job type). +DEBUG 2023-01-06 13:58:11.384 UTC: Checking credentials +DEBUG 2023-01-06 13:58:11.384 UTC: Found proxy file /tmp/x509up_u135567 +DEBUG 2023-01-06 13:58:11.384 UTC: Making sure it has proper VOMS extension +DEBUG 2023-01-06 13:58:11.384 UTC: Executing command : + voms-proxy-info --vo --file /tmp/x509up_u135567 +DEBUG 2023-01-06 13:58:11.918 UTC: output : cms + + error: + retcode : 0 +DEBUG 2023-01-06 13:58:11.918 UTC: Getting proxy life time left +DEBUG 2023-01-06 13:58:11.918 UTC: Executing command : + voms-proxy-info --actimeleft --timeleft --file /tmp/x509up_u135567 +DEBUG 2023-01-06 13:58:12.451 UTC: output : 495922 +687336 + + error: + retcode : 0 +DEBUG 2023-01-06 13:58:12.452 UTC: Proxy valid for 137:45:22 hours +DEBUG 2023-01-06 13:58:12.721 UTC: Encoded data for curl request: subresource=delegatedn +DEBUG 2023-01-06 13:58:12.722 UTC: Executing command : + curl -v -X GET -H "User-Agent: CRABClient/v3.221018" -H "Accept: */*" --data @/tmp/crab_curlData8HhQHF --cert "/tmp/x509up_u135567" --key "/tmp/x509up_u135567" --capath "/etc/grid-security/certificates/" "https://cmsweb.cern.ch:8443/crabserver/prod/info?subresource=delegatedn" | tee /dev/stderr +DEBUG 2023-01-06 13:58:12.785 UTC: output : {"result": [ + {"services": ["/DC=ch/DC=cern/OU=computers/CN=crab-(preprod|prod|dev)-tw(01|02|03).cern.ch|/DC=ch/DC=cern/OU=computers/CN=stefanov(m|m2).cern.ch|/DC=ch/DC=cern/OU=computers/CN=dciangot-tw.cern.ch"]} +]} + + error: % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 188.184.75.82... +* TCP_NODELAY set +* Connected to cmsweb.cern.ch (188.184.75.82) port 8443 (#0) +* ALPN, offering http/1.1 +* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH +* successfully set certificate verify locations: + CAfile: /etc/pki/tls/certs/ca-bundle.crt + CApath: /etc/grid-security/certificates/ +* TLSv1.2 (OUT), TLS header, Certificate Status (22): +} [5 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client hello (1): +} [512 bytes data] +* TLSv1.2 (IN), TLS handshake, Server hello (2): +{ [109 bytes data] +* TLSv1.2 (IN), TLS handshake, Certificate (11): +{ [6237 bytes data] +* TLSv1.2 (IN), TLS handshake, Server key exchange (12): +{ [333 bytes data] +* TLSv1.2 (IN), TLS handshake, Request CERT (13): +{ [13332 bytes data] +* TLSv1.2 (IN), TLS handshake, Server finished (14): +{ [4 bytes data] +* TLSv1.2 (OUT), TLS handshake, Certificate (11): +} [6618 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client key exchange (16): +} [70 bytes data] +* TLSv1.2 (OUT), TLS handshake, CERT verify (15): +} [264 bytes data] +* TLSv1.2 (OUT), TLS change cipher, Client hello (1): +} [1 bytes data] +* TLSv1.2 (OUT), TLS handshake, Finished (20): +} [16 bytes data] +* TLSv1.2 (IN), TLS change cipher, Client hello (1): +{ [1 bytes data] +* TLSv1.2 (IN), TLS handshake, Finished (20): +{ [16 bytes data] +* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 +* ALPN, server accepted to use http/1.1 +* Server certificate: +* subject: DC=ch; DC=cern; OU=computers; CN=cmsweb.cern.ch +* start date: Feb 17 13:05:12 2022 GMT +* expire date: Mar 24 13:05:12 2023 GMT +* subjectAltName: host "cmsweb.cern.ch" matched cert's "cmsweb.cern.ch" +* issuer: DC=ch; DC=cern; CN=CERN Grid Certification Authority +* SSL certificate verify ok. +} [5 bytes data] +> GET /crabserver/prod/info?subresource=delegatedn HTTP/1.1 +> Host: cmsweb.cern.ch:8443 +> User-Agent: CRABClient/v3.221018 +> Accept: */* +> Content-Length: 22 +> Content-Type: application/x-www-form-urlencoded +> +} [22 bytes data] +* upload completely sent off: 22 out of 22 bytes +{ [5 bytes data] +< HTTP/1.1 200 OK +< Date: Fri, 06 Jan 2023 13:58:12 GMT +< Server: Apache +< Content-Type: application/json +< Content-Length: 216 +< Vary: Accept +< Cache-Control: max-age=3600 +< X-Rest-Status: 100 +< Etag: "531fb58a933656ea08a7f418b273fdae3c95932a" +< X-Rest-Time: 1744.032 us +< CMS-Server-Time: D=8708 t=1673013492772555 +< +{ [5 bytes data] + 100 238 100 216 100 22 5268 536 --:--:-- --:--:-- --:--:-- 5804 +* Connection #0 to host cmsweb.cern.ch left intact +{"result": [ + {"services": ["/DC=ch/DC=cern/OU=computers/CN=crab-(preprod|prod|dev)-tw(01|02|03).cern.ch|/DC=ch/DC=cern/OU=computers/CN=stefanov(m|m2).cern.ch|/DC=ch/DC=cern/OU=computers/CN=dciangot-tw.cern.ch"]} +]} + + retcode : 0 +DEBUG 2023-01-06 13:58:12.787 UTC: Registering user credentials on myproxy for /DC=ch/DC=cern/OU=computers/CN=crab-(preprod|prod|dev)-tw(01|02|03).cern.ch|/DC=ch/DC=cern/OU=computers/CN=stefanov(m|m2).cern.ch|/DC=ch/DC=cern/OU=computers/CN=dciangot-tw.cern.ch +DEBUG 2023-01-06 13:58:12.787 UTC: Executing command : + voms-proxy-info --identity --file /tmp/x509up_u135567 +DEBUG 2023-01-06 13:58:13.300 UTC: output : /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=ryi/CN=848370/CN=Ruole Yi + + error: + retcode : 0 +DEBUG 2023-01-06 13:58:13.301 UTC: Getting myproxy life time left for 476d95ac8520f867cfb171491a83ef90fffa3db8 +DEBUG 2023-01-06 13:58:13.301 UTC: Executing command : + myproxy-info -s myproxy.cern.ch -l 476d95ac8520f867cfb171491a83ef90fffa3db8 +DEBUG 2023-01-06 13:58:13.601 UTC: output : username: 476d95ac8520f867cfb171491a83ef90fffa3db8 +owner: /DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=ryi/CN=848370/CN=Ruole Yi + renewal policy: /DC=ch/DC=cern/OU=computers/CN=crab-(preprod|prod|dev)-tw(01|02|03).cern.ch|/DC=ch/DC=cern/OU=computers/CN=stefanov(m|m2).cern.ch|/DC=ch/DC=cern/OU=computers/CN=dciangot-tw.cern.ch + trusted retrieval policy: /DC=ch/DC=cern/OU=computers/CN=crab-(preprod|prod|dev)-tw(01|02|03).cern.ch|/DC=ch/DC=cern/OU=computers/CN=stefanov(m|m2).cern.ch|/DC=ch/DC=cern/OU=computers/CN=dciangot-tw.cern.ch + timeleft: 122:59:24 (5.1 days) + + error: + retcode : 0 +DEBUG 2023-01-06 13:58:13.601 UTC: Myproxy is valid: 442740 +DEBUG 2023-01-06 13:58:13.601 UTC: Executing command : + openssl x509 -noout -dates -in ~/.globus/usercert.pem +DEBUG 2023-01-06 13:58:13.625 UTC: output : notBefore=Dec 8 07:43:35 2021 GMT +notAfter=Jan 12 07:43:35 2023 GMT + + error: + retcode : 0 +INFO 2023-01-06 13:58:13.629 UTC: Your user certificate is going to expire in 5 days. See: https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookStartingGrid#ObtainingCert +DEBUG 2023-01-06 13:58:13.629 UTC: Result of myproxy credential check: + Credential exists on myproxy: username: 476d95ac8520f867cfb171491a83ef90fffa3db8 - validity: 5 days, 2:59:00 +DEBUG 2023-01-06 13:58:13.629 UTC: Command use: submit +DEBUG 2023-01-06 13:58:13.630 UTC: Options use: ['-c', 'crabConfig.py'] +DEBUG 2023-01-06 13:58:13.630 UTC: Encoded data for curl request: subresource=version +DEBUG 2023-01-06 13:58:13.630 UTC: Executing command : + curl -v -X GET -H "User-Agent: CRABClient/v3.221018" -H "Accept: */*" --data @/tmp/crab_curlData6GB_vt --cert "/tmp/x509up_u135567" --key "/tmp/x509up_u135567" --capath "/etc/grid-security/certificates/" "https://cmsweb.cern.ch:8443/crabserver/prod/info?subresource=version" | tee /dev/stderr +DEBUG 2023-01-06 13:58:13.688 UTC: output : {"result": [ + ["3.3.19", "3.3.20", "v3", "development", "v3.221027"] +]} + + error: % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 188.184.75.82... +* TCP_NODELAY set +* Connected to cmsweb.cern.ch (188.184.75.82) port 8443 (#0) +* ALPN, offering http/1.1 +* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH +* successfully set certificate verify locations: + CAfile: /etc/pki/tls/certs/ca-bundle.crt + CApath: /etc/grid-security/certificates/ +* TLSv1.2 (OUT), TLS header, Certificate Status (22): +} [5 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client hello (1): +} [512 bytes data] +* TLSv1.2 (IN), TLS handshake, Server hello (2): +{ [109 bytes data] +* TLSv1.2 (IN), TLS handshake, Certificate (11): +{ [6237 bytes data] +* TLSv1.2 (IN), TLS handshake, Server key exchange (12): +{ [333 bytes data] +* TLSv1.2 (IN), TLS handshake, Request CERT (13): +{ [13332 bytes data] +* TLSv1.2 (IN), TLS handshake, Server finished (14): +{ [4 bytes data] +* TLSv1.2 (OUT), TLS handshake, Certificate (11): +} [6618 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client key exchange (16): +} [70 bytes data] +* TLSv1.2 (OUT), TLS handshake, CERT verify (15): +} [264 bytes data] +* TLSv1.2 (OUT), TLS change cipher, Client hello (1): +} [1 bytes data] +* TLSv1.2 (OUT), TLS handshake, Finished (20): +} [16 bytes data] +* TLSv1.2 (IN), TLS change cipher, Client hello (1): +{ [1 bytes data] +* TLSv1.2 (IN), TLS handshake, Finished (20): +{ [16 bytes data] +* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 +* ALPN, server accepted to use http/1.1 +* Server certificate: +* subject: DC=ch; DC=cern; OU=computers; CN=cmsweb.cern.ch +* start date: Feb 17 13:05:12 2022 GMT +* expire date: Mar 24 13:05:12 2023 GMT +* subjectAltName: host "cmsweb.cern.ch" matched cert's "cmsweb.cern.ch" +* issuer: DC=ch; DC=cern; CN=CERN Grid Certification Authority +* SSL certificate verify ok. +} [5 bytes data] +> GET /crabserver/prod/info?subresource=version HTTP/1.1 +> Host: cmsweb.cern.ch:8443 +> User-Agent: CRABClient/v3.221018 +> Accept: */* +> Content-Length: 19 +> Content-Type: application/x-www-form-urlencoded +> +} [19 bytes data] +* upload completely sent off: 19 out of 19 bytes +{ [5 bytes data] +< HTTP/1.1 200 OK +< Date: Fri, 06 Jan 2023 13:58:13 GMT +< Server: Apache +< Content-Type: application/json +< Content-Length: 72 +< Vary: Accept +< Cache-Control: max-age=3600 +< X-Rest-Status: 100 +< Etag: "d93f7bb6a049cf36e3064f429217b26af3532092" +< X-Rest-Time: 2458.811 us +< CMS-Server-Time: D=10179 t=1673013493673604 +< +{ [5 bytes data] + 100 91 100 72 100 19 1800 475 --:--:-- --:--:-- --:--:-- 2275 +* Connection #0 to host cmsweb.cern.ch left intact +{"result": [ + ["3.3.19", "3.3.20", "v3", "development", "v3.221027"] +]} + + retcode : 0 +DEBUG 2023-01-06 13:58:13.689 UTC: CRABClient version: v3.221018 +DEBUG 2023-01-06 13:58:13.689 UTC: Instance is prod +DEBUG 2023-01-06 13:58:13.689 UTC: Server base url is cmsweb.cern.ch +DEBUG 2023-01-06 13:58:13.689 UTC: Command api workflow +DEBUG 2023-01-06 13:58:13.689 UTC: Started submission +DEBUG 2023-01-06 13:58:13.689 UTC: Working on /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/crab_sumweight/crab_sumweight +DEBUG 2023-01-06 13:58:13.689 UTC: Encoded data for curl request: subresource=backendurls +DEBUG 2023-01-06 13:58:13.690 UTC: Executing command : + curl -v -X GET -H "User-Agent: CRABClient/v3.221018" -H "Accept: */*" --data @/tmp/crab_curlData9A6tux --cert "/tmp/x509up_u135567" --key "/tmp/x509up_u135567" --capath "/etc/grid-security/certificates/" "https://cmsweb.cern.ch:8443/crabserver/prod/info?subresource=backendurls" | tee /dev/stderr +DEBUG 2023-01-06 13:58:13.750 UTC: output : {"result": [ + {"cacheSSL": "https://cmsweb.cern.ch/S3/crabcache_prod", "htcondorSchedds": {"crab3@vocms059.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/059", "weightfactor": 0}, "crab3@vocms068.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/068", "weightfactor": 1}, "crab3@vocms069.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/069", "weightfactor": 1}, "crab3@vocms0106.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0106", "weightfactor": 1}, "crab3@vocms0107.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0107", "weightfactor": 1}, "crab3@vocms0119.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0119", "weightfactor": 1}, "crab3@vocms0120.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0120", "weightfactor": 1}, "crab3@vocms0121.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0121", "weightfactor": 1}, "crab3@vocms0122.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0122", "weightfactor": 1}, "crab3@vocms0137.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0137", "weightfactor": 1}, "crab3@vocms0144.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0144", "weightfactor": 1}, "crab3@vocms0155.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0155", "weightfactor": 1}, "crab3@vocms0194.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0194", "weightfactor": 1}, "crab3@vocms0195.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0195", "weightfactor": 1}, "crab3@vocms0196.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0196", "weightfactor": 1}, "crab3@vocms0197.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0197", "weightfactor": 1}, "crab3@vocms0198.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0198", "weightfactor": 1}, "crab3@vocms0199.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0199", "weightfactor": 1}, "crab3@crab-preprod-scd03.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/crab-preprod-scd03", "weightfactor": 0}}, "htcondorPool": "cmsgwms-collector-global.cern.ch:9620,cmsgwms-collector-global.fnal.gov:9620"} +]} + + error: % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 188.184.75.82... +* TCP_NODELAY set +* Connected to cmsweb.cern.ch (188.184.75.82) port 8443 (#0) +* ALPN, offering http/1.1 +* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH +* successfully set certificate verify locations: + CAfile: /etc/pki/tls/certs/ca-bundle.crt + CApath: /etc/grid-security/certificates/ +* TLSv1.2 (OUT), TLS header, Certificate Status (22): +} [5 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client hello (1): +} [512 bytes data] + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* TLSv1.2 (IN), TLS handshake, Server hello (2): +{ [109 bytes data] +* TLSv1.2 (IN), TLS handshake, Certificate (11): +{ [6237 bytes data] +* TLSv1.2 (IN), TLS handshake, Server key exchange (12): +{ [333 bytes data] +* TLSv1.2 (IN), TLS handshake, Request CERT (13): +{ [13332 bytes data] +* TLSv1.2 (IN), TLS handshake, Server finished (14): +{ [4 bytes data] +* TLSv1.2 (OUT), TLS handshake, Certificate (11): +} [6618 bytes data] +* TLSv1.2 (OUT), TLS handshake, Client key exchange (16): +} [70 bytes data] +* TLSv1.2 (OUT), TLS handshake, CERT verify (15): +} [264 bytes data] +* TLSv1.2 (OUT), TLS change cipher, Client hello (1): +} [1 bytes data] +* TLSv1.2 (OUT), TLS handshake, Finished (20): +} [16 bytes data] +* TLSv1.2 (IN), TLS change cipher, Client hello (1): +{ [1 bytes data] +* TLSv1.2 (IN), TLS handshake, Finished (20): +{ [16 bytes data] +* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 +* ALPN, server accepted to use http/1.1 +* Server certificate: +* subject: DC=ch; DC=cern; OU=computers; CN=cmsweb.cern.ch +* start date: Feb 17 13:05:12 2022 GMT +* expire date: Mar 24 13:05:12 2023 GMT +* subjectAltName: host "cmsweb.cern.ch" matched cert's "cmsweb.cern.ch" +* issuer: DC=ch; DC=cern; CN=CERN Grid Certification Authority +* SSL certificate verify ok. +} [5 bytes data] +> GET /crabserver/prod/info?subresource=backendurls HTTP/1.1 +> Host: cmsweb.cern.ch:8443 +> User-Agent: CRABClient/v3.221018 +> Accept: */* +> Content-Length: 23 +> Content-Type: application/x-www-form-urlencoded +> +} [23 bytes data] +* upload completely sent off: 23 out of 23 bytes +{ [5 bytes data] +< HTTP/1.1 200 OK +< Date: Fri, 06 Jan 2023 13:58:13 GMT +< Server: Apache +< Content-Type: application/json +< Content-Length: 2260 +< Vary: Accept +< Cache-Control: max-age=3600 +< X-Rest-Status: 100 +< Etag: "54594f7741620a590cf934e274196c47e3ab9b81" +< X-Rest-Time: 2744.198 us +< CMS-Server-Time: D=10305 t=1673013493735464 +< +{ [5 bytes data] + 100 2283 100 2260 100 23 56500 575 --:--:-- --:--:-- --:--:-- 55682 +* Connection #0 to host cmsweb.cern.ch left intact +{"result": [ + {"cacheSSL": "https://cmsweb.cern.ch/S3/crabcache_prod", "htcondorSchedds": {"crab3@vocms059.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/059", "weightfactor": 0}, "crab3@vocms068.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/068", "weightfactor": 1}, "crab3@vocms069.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/069", "weightfactor": 1}, "crab3@vocms0106.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0106", "weightfactor": 1}, "crab3@vocms0107.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0107", "weightfactor": 1}, "crab3@vocms0119.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0119", "weightfactor": 1}, "crab3@vocms0120.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0120", "weightfactor": 1}, "crab3@vocms0121.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0121", "weightfactor": 1}, "crab3@vocms0122.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0122", "weightfactor": 1}, "crab3@vocms0137.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0137", "weightfactor": 1}, "crab3@vocms0144.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0144", "weightfactor": 1}, "crab3@vocms0155.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0155", "weightfactor": 1}, "crab3@vocms0194.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0194", "weightfactor": 1}, "crab3@vocms0195.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0195", "weightfactor": 1}, "crab3@vocms0196.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0196", "weightfactor": 1}, "crab3@vocms0197.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0197", "weightfactor": 1}, "crab3@vocms0198.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0198", "weightfactor": 1}, "crab3@vocms0199.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/0199", "weightfactor": 1}, "crab3@crab-preprod-scd03.cern.ch": {"proxiedurl": "https://cmsweb.cern.ch:8443/scheddmon/crab-preprod-scd03", "weightfactor": 0}}, "htcondorPool": "cmsgwms-collector-global.cern.ch:9620,cmsgwms-collector-global.fnal.gov:9620"} +]} + + retcode : 0 +DEBUG 2023-01-06 13:58:13.792 UTC: Loading required information from the environment +DEBUG 2023-01-06 13:58:13.792 UTC: Found CMSSW_10_6_13 for slc7_amd64_gcc700 with base /afs/cern.ch/user/r/ryi/CMSSW_10_6_13 +DEBUG 2023-01-06 13:58:13.792 UTC: Loading required information from the environment +DEBUG 2023-01-06 13:58:13.792 UTC: Found CMSSW_10_6_13 for slc7_amd64_gcc700 with base /afs/cern.ch/user/r/ryi/CMSSW_10_6_13 +DEBUG 2023-01-06 13:58:13.793 UTC: UNIQUE NAME: tarUUID 3d439388-4f11-47d2-8b4c-067278420b34 +DEBUG 2023-01-06 13:58:13.793 UTC: self.config: from WMCore.Configuration import Configuration +config = Configuration() +config.section_('General') +config.General.transferLogs = False +config.General.transferOutputs = True +config.General.workArea = 'crab_sumweight' +config.General.requestName = 'sumweight' +config.section_('JobType') +config.JobType.psetName = '/afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/sumofweight.py' +config.JobType.pluginName = 'Analysis' +config.JobType.maxJobRuntimeMin = 100 +config.JobType.maxMemoryMB = 5000 +config.section_('Data') +config.Data.outputDatasetTag = 'sumweight' +config.Data.publication = False +config.Data.unitsPerJob = 2 +config.Data.userInputFiles = ['root://cmsxrootd.fnal.gov//store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/270000/8487A9CD-DC20-A643-ABCF-AB90B0FC680F.root\n'] +config.Data.splitting = 'FileBased' +config.Data.outLFNDirBase = '/store/user/ryi' +config.Data.outputPrimaryDataset = 'sumofweight' +config.Data.totalUnits = -1 +config.section_('Site') +config.Site.storageSite = 'T3_US_FNALLPC' +config.section_('User') +config.section_('Debug') + +DEBUG 2023-01-06 13:58:13.793 UTC: self.config.JobType.psetName: /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/sumofweight.py +INFO 2023-01-06 13:58:13.794 UTC: Importing CMSSW configuration /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/sumofweight.py +INFO 2023-01-06 13:58:52.621 UTC: Finished importing CMSSW configuration /afs/cern.ch/user/r/ryi/CMSSW_10_6_13/src/EgammaAnalysis/TnPTreeProducer/sumofweight.py +ERROR 2023-01-06 13:58:52.621 UTC: Invalid CMSSW configuration: 'process' object is missing or is wrongly defined. +ERROR 2023-01-06 13:58:52.621 UTC: Caught ClientException exception +Traceback (most recent call last): + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 159, in + client() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/bin/crab.py", line 146, in __call__ + self.cmd() + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/Commands/submit.py", line 105, in __call__ + dummy_inputfiles, jobconfig = plugjobtype.run(filecacheurl) + File "/cvmfs/cms.cern.ch/share/cms/crab-prod/v3.221018.00/lib/CRABClient/JobType/Analysis.py", line 94, in run + raise ConfigurationException(msg) +ConfigurationException: Invalid CMSSW configuration: 'process' object is missing or is wrongly defined. diff --git a/data/README.md b/data/README.md new file mode 100644 index 00000000000..24df084a9ae --- /dev/null +++ b/data/README.md @@ -0,0 +1,39 @@ +# Lepton mva xml files +This data directory contains the xml files for leptonMva trainings. +These are not to be confused with the electron mva. The leptonMva takes +the electron mva as one of its inputs, but adds additional high-level variables +like using close-jet information in order to optimally discriminate between +prompt and non-prompt leptons. Mostly used in top physics analyses. + +Preparation and mapping of the input variables is done in +[leptonMva\_cff.py](EgammaAnalysis/TnPTreeProducer/python/leptonMva_cff.py) and [LeptonMvaProducer.cc](EgammaAnalysis/TnPTreeProducer/plugings/LeptonMvaProducer.cc) +Note that the leptonMva's often uses outdated effective areas (forced by older trainings and availability in nanoAOD which are not recommended by the EGamma POG. + +## TOP lepton mva +Most recent training with best performance, valid for full Run II data. +[2016](el_TOP16_BDTG.weights.xml) +[2017](el_TOP17_BDTG.weights.xml) +[2018](el_TOP18_BDTG.weights.xml) +developer: Kyrill Skovpen [@kvskovpen](https://github.com/kskovpen) + +## tZq/ttV lepton mva (as documented in TOP-18-008, TOP-18-009) +Superseeded by the above one +[2016](el_tZqTTV16_BDTG.weights.xml) +[2017](el_tZqTTV17_BDTG.weights.xml) +developer: Willem Verbeke [@wverbeke](https:://github.com/wverbeke/) + +## ttH lepton mva (as documented in HIG-18-019) +Superseeded by the above one +[2016](el_ttH16_BDTG.weights.xml) +[2017](el_ttH17_BDTG.weights.xml) + +## Note about leptonMva +Some leptonMva variables are now included in the TnPTreeProducer trees. Unfortunately, it is very easy to get out of sync for these variables: +even a new global tag could slightly alter the input variables, given some of them are dependent on the jet energy corrections or b-taggers which +were in use when training these leptonMva's. Additionaly, some leptonMva's use (extremely) old effective areas for miniIso or relIso variables. +We therefore strongly recommend leptonMva analyzers to sync with their own analysis code before producing tuples. +The sync can easily be done by setting the debug flag to True in [python/leptonMva\_cff.py](python/leptonMva_cff.py). The leptonMva xml files +are found in [data](data), and implementation of a new leptonMvaType can happen in the produce function in +[plugins/LeptonMvaProducer.cc](plugins/LeptonMvaProducer.cc). + + diff --git a/data/el_TOP16_BDTG.weights.xml b/data/el_TOP16_BDTG.weights.xml new file mode 100644 index 00000000000..50bb5b57089 --- /dev/null +++ b/data/el_TOP16_BDTG.weights.xml @@ -0,0 +1,29046 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_TOP17_BDTG.weights.xml b/data/el_TOP17_BDTG.weights.xml new file mode 100644 index 00000000000..548bfe4e240 --- /dev/null +++ b/data/el_TOP17_BDTG.weights.xml @@ -0,0 +1,28878 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_TOP18_BDTG.weights.xml b/data/el_TOP18_BDTG.weights.xml new file mode 100644 index 00000000000..85d89ddd02f --- /dev/null +++ b/data/el_TOP18_BDTG.weights.xml @@ -0,0 +1,28995 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_tZqTTV16_BDTG.weights.xml b/data/el_tZqTTV16_BDTG.weights.xml new file mode 100644 index 00000000000..108cc08df35 --- /dev/null +++ b/data/el_tZqTTV16_BDTG.weights.xml @@ -0,0 +1,26964 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_tZqTTV17_BDTG.weights.xml b/data/el_tZqTTV17_BDTG.weights.xml new file mode 100644 index 00000000000..5b59ac14f4a --- /dev/null +++ b/data/el_tZqTTV17_BDTG.weights.xml @@ -0,0 +1,25701 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_ttH16_BDTG.weights.xml b/data/el_ttH16_BDTG.weights.xml new file mode 100644 index 00000000000..3fe43998a68 --- /dev/null +++ b/data/el_ttH16_BDTG.weights.xml @@ -0,0 +1,42218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/el_ttH17_BDTG.weights.xml b/data/el_ttH17_BDTG.weights.xml new file mode 100644 index 00000000000..8b3b8a2856e --- /dev/null +++ b/data/el_ttH17_BDTG.weights.xml @@ -0,0 +1,42245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/list.txt b/list.txt new file mode 100644 index 00000000000..c876d926ea1 --- /dev/null +++ b/list.txt @@ -0,0 +1 @@ +root://cms-xrd-global.cern.ch//store/test/xrootd/T2_DE_DESY/store/mc/RunIISummer20UL16NanoAODAPVv9/LQToDEle_M-1000_pair_bMassZero_TuneCP2_13TeV-madgraph-pythia8/NANOAODSIM/106X_mcRun2_asymptotic_preVFP_v11-v1/50000/49FA601A-4F26-F74C-99E4-A79DA21CB85B.root diff --git a/plugins/BuildFile.xml b/plugins/BuildFile.xml index f9b47fbd850..5ccefbdabde 100644 --- a/plugins/BuildFile.xml +++ b/plugins/BuildFile.xml @@ -7,7 +7,14 @@ - + + + + + + + + diff --git a/plugins/ElectronMatchedCandidateProducer.h b/plugins/ElectronMatchedCandidateProducer.h index cd125edd347..157804de734 100644 --- a/plugins/ElectronMatchedCandidateProducer.h +++ b/plugins/ElectronMatchedCandidateProducer.h @@ -48,6 +48,9 @@ electronCollectionToken_(consumes(params.getUntrackedParameter >("superclusters"); produces("electrons"); + + produces >("superclustersEcalDriven"); + produces >("superclustersTrackDriven"); } template @@ -61,6 +64,10 @@ void ElectronMatchedCandidateProducer::produce(edm::Event &event, std::unique_ptr > outCol (new edm::RefVector); std::unique_ptr outCol2 (new TRefVector); + + std::unique_ptr > outCol_ecalD (new edm::RefVector); + std::unique_ptr > outCol_trackD (new edm::RefVector); + // Read electrons edm::Handle electrons; event.getByToken(electronCollectionToken_, electrons); @@ -84,6 +91,17 @@ void ElectronMatchedCandidateProducer::produce(edm::Event &event, outCol->push_back(ref); outCol2->push_back((*electrons)[elec]); matched = true; + + ///added by SJ + if( (*electrons)[elec]->ecalDrivenSeed() ){ + outCol_ecalD->push_back(ref); + } + + ///added by SJ + if( (*electrons)[elec]->trackerDrivenSeed() ){ + outCol_trackD->push_back(ref); + } + } } } @@ -111,6 +129,10 @@ void ElectronMatchedCandidateProducer::produce(edm::Event &event, */ event.put(std::move(outCol ), "superclusters"); event.put(std::move(outCol2), "electrons"); + + event.put(std::move(outCol_ecalD ), "superclustersEcalDriven"); + event.put(std::move(outCol_trackD ), "superclustersTrackDriven"); + } #endif diff --git a/plugins/ElectronVariableHelper.h b/plugins/ElectronVariableHelper.h index b643e122886..c3ced31ccf2 100644 --- a/plugins/ElectronVariableHelper.h +++ b/plugins/ElectronVariableHelper.h @@ -7,133 +7,172 @@ #include "FWCore/Utilities/interface/InputTag.h" #include "DataFormats/Common/interface/ValueMap.h" -#include "DataFormats/Candidate/interface/CandidateFwd.h" -#include "DataFormats/Candidate/interface/Candidate.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -//#include "DataFormats/L1Trigger/interface/L1EmParticle.h" -//#include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h" -#include "HLTrigger/HLTcore/interface/HLTFilter.h" +#include "DataFormats/L1Trigger/interface/L1EmParticle.h" +#include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h" #include "DataFormats/L1Trigger/interface/EGamma.h" #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" -#include "CondFormats/L1TObjects/interface/L1CaloGeometry.h" -#include "CondFormats/DataRecord/interface/L1CaloGeometryRecord.h" #include "DataFormats/Math/interface/deltaR.h" -#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" #include "DataFormats/PatCandidates/interface/PackedCandidate.h" - #include "DataFormats/Candidate/interface/CandidateFwd.h" #include "DataFormats/Candidate/interface/Candidate.h" +#include + +#include "DataFormats/EgammaCandidates/interface/Conversion.h" +#include "RecoEgamma/EgammaTools/interface/ConversionTools.h" +#include "EgammaAnalysis/TnPTreeProducer/plugins/WriteValueMap.h" +#include "EgammaAnalysis/TnPTreeProducer/plugins/isolations.h" + +#include "TMath.h" -typedef edm::View CandView; template class ElectronVariableHelper : public edm::EDProducer { public: explicit ElectronVariableHelper(const edm::ParameterSet & iConfig); virtual ~ElectronVariableHelper() ; - + virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup) override; - + private: edm::EDGetTokenT > probesToken_; edm::EDGetTokenT vtxToken_; - edm::EDGetTokenT > l1EGTkn; - edm::EDGetTokenT pfCandToken_; + edm::EDGetTokenT > l1EGToken_; + edm::EDGetTokenT conversionsToken_; + edm::EDGetTokenT beamSpotToken_; + edm::EDGetTokenT> pfCandidatesToken_; + + bool isMiniAODformat; }; template ElectronVariableHelper::ElectronVariableHelper(const edm::ParameterSet & iConfig) : probesToken_(consumes >(iConfig.getParameter("probes"))), vtxToken_(consumes(iConfig.getParameter("vertexCollection"))), - l1EGTkn(consumes >(iConfig.getParameter("l1EGColl"))) { - - produces >("chi2"); - produces >("dz"); - produces >("dxy"); - produces >("missinghits"); - produces >("l1e"); - produces >("l1et"); - produces >("l1eta"); - produces >("l1phi"); - produces >("pfPt"); - - if( iConfig.existsAs("pfCandColl") ) { - pfCandToken_ = consumes(iConfig.getParameter("pfCandColl")); - } - + l1EGToken_(consumes >(iConfig.getParameter("l1EGColl"))), + conversionsToken_(consumes(iConfig.getParameter("conversions"))), + beamSpotToken_(consumes(iConfig.getParameter("beamSpot"))), + pfCandidatesToken_(consumes>(iConfig.getParameter("pfCandidates"))){ + + produces>("dz"); + produces>("dxy"); + produces>("sip"); + produces>("missinghits"); + produces>("gsfhits"); + produces>("l1e"); + produces>("l1et"); + produces>("l1eta"); + produces>("l1phi"); + produces>("pfPt"); + produces>("convVtxFitProb"); + produces>("kfhits"); + produces>("kfchi2"); + produces>("ioemiop"); + produces>("5x5circularity"); + produces>("pfLeptonIsolation"); + produces>("hasMatchedConversion"); + + isMiniAODformat = true; } template ElectronVariableHelper::~ElectronVariableHelper() {} + template void ElectronVariableHelper::produce(edm::Event & iEvent, const edm::EventSetup & iSetup) { // read input - edm::Handle > probes; + edm::Handle> probes; edm::Handle vtxH; - + iEvent.getByToken(probesToken_, probes); iEvent.getByToken(vtxToken_, vtxH); const reco::VertexRef vtx(vtxH, 0); - edm::Handle > l1Cands; - iEvent.getByToken(l1EGTkn, l1Cands); - - edm::Handle pfCands; - if( !pfCandToken_.isUninitialized() ) iEvent.getByToken(pfCandToken_,pfCands); - + edm::Handle> l1Cands; + iEvent.getByToken(l1EGToken_, l1Cands); + + edm::Handle conversions; + iEvent.getByToken(conversionsToken_, conversions); + + edm::Handle beamSpotHandle; + iEvent.getByToken(beamSpotToken_, beamSpotHandle); + const reco::BeamSpot* beamSpot = &*(beamSpotHandle.product()); + + edm::Handle> pfCandidates; + iEvent.getByToken(pfCandidatesToken_, pfCandidates); + // prepare vector for output - std::vector chi2Vals; std::vector dzVals; std::vector dxyVals; + std::vector sipVals; std::vector mhVals; + std::vector l1EVals; std::vector l1EtVals; std::vector l1EtaVals; std::vector l1PhiVals; std::vector pfPtVals; + std::vector convVtxFitProbVals; + std::vector kfhitsVals; + std::vector kfchi2Vals; + std::vector ioemiopVals; + std::vector ocVals; + + std::vector gsfhVals; + + std::vector hasMatchedConversionVals; typename std::vector::const_iterator probe, endprobes = probes->end(); for (probe = probes->begin(); probe != endprobes; ++probe) { - - chi2Vals.push_back(probe->gsfTrack()->normalizedChi2()); + + //---Clone the pat::Electron + pat::Electron l((pat::Electron)*probe); + dzVals.push_back(probe->gsfTrack()->dz(vtx->position())); dxyVals.push_back(probe->gsfTrack()->dxy(vtx->position())); - mhVals.push_back(float(probe->gsfTrack()->hitPattern().numberOfHits(reco::HitPattern::MISSING_INNER_HITS))); - float l1e = 999999.; + // SIP + float IP = fabs(l.dB(pat::Electron::PV3D)); + float IPError = l.edB(pat::Electron::PV3D); + sipVals.push_back(IP/IPError); + + mhVals.push_back(float(probe->gsfTrack()->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS))); + gsfhVals.push_back(float(probe->gsfTrack()->hitPattern().trackerLayersWithMeasurement())); + float l1e = 999999.; float l1et = 999999.; float l1eta = 999999.; float l1phi = 999999.; float pfpt = 999999.; float dRmin = 0.3; + for (std::vector::const_iterator l1Cand = l1Cands->begin(0); l1Cand != l1Cands->end(0); ++l1Cand) { float dR = deltaR(l1Cand->eta(), l1Cand->phi() , probe->superCluster()->eta(), probe->superCluster()->phi()); if (dR < dRmin) { - dRmin = dR; - l1e = l1Cand->energy(); - l1et = l1Cand->et(); + dRmin = dR; + l1e = l1Cand->energy(); + l1et = l1Cand->et(); l1eta = l1Cand->eta(); l1phi = l1Cand->phi(); } } - if( pfCands.isValid() ) - for( size_t ipf = 0; ipf < pfCands->size(); ++ipf ) { - auto pfcand = pfCands->ptrAt(ipf); - if( abs( pfcand->pdgId() ) != 11 ) continue; - float dR = deltaR(pfcand->eta(), pfcand->phi() , probe->eta(), probe->phi()); - if( dR < 0.0001 ) pfpt = pfcand->pt(); + + for( size_t ipf = 0; ipf < pfCandidates->size(); ++ipf ) { + auto pfcand = pfCandidates->ptrAt(ipf); + if(abs(pfcand->pdgId()) != 11) continue; + float dR = deltaR(pfcand->eta(), pfcand->phi(), probe->eta(), probe->phi()); + if(dR < 0.0001) pfpt = pfcand->pt(); } l1EVals.push_back(l1e); @@ -141,66 +180,93 @@ void ElectronVariableHelper::produce(edm::Event & iEvent, const edm::EventSet l1EtaVals.push_back(l1eta); l1PhiVals.push_back(l1phi); pfPtVals.push_back(pfpt); - + + // Store hasMatchedConversion (currently stored as float instead of bool, as it allows to implement it in the same way as other variables) + #if (CMSSW_MAJOR_VERSION>=10 && CMSSW_MINOR_VERSION>=4) || (CMSSW_MAJOR_VERSION>=11) + hasMatchedConversionVals.push_back((float)ConversionTools::hasMatchedConversion(*probe, *conversions, beamSpot->position())); + #else + hasMatchedConversionVals.push_back((float)ConversionTools::hasMatchedConversion(*probe, *conversions, beamSpot->position())); + #endif + + // Conversion vertex fit + float convVtxFitProb = -1.; + + #if (CMSSW_MAJOR_VERSION>=10 && CMSSW_MINOR_VERSION>=4) || (CMSSW_MAJOR_VERSION>=11) + reco::Conversion const* convRef = ConversionTools::matchedConversion(*probe,*conversions, beamSpot->position()); + if(!convRef==0) { + const reco::Vertex &vtx = convRef->conversionVertex(); + if (vtx.isValid()) { + convVtxFitProb = TMath::Prob( vtx.chi2(), vtx.ndof()); + } + } + #else + reco::Conversion const* convRef = ConversionTools::matchedConversion(*probe, *conversions, beamSpot->position()); + if(!convRef == 0) { + const reco::Vertex &vtx = convRef->conversionVertex(); + if (vtx.isValid()) { + convVtxFitProb = TMath::Prob( vtx.chi2(), vtx.ndof()); + } + } + #endif + convVtxFitProbVals.push_back(convVtxFitProb); + + + // kf track related variables + bool validKf=false; + reco::TrackRef trackRef = probe->closestCtfTrackRef(); + validKf = trackRef.isAvailable(); + validKf &= trackRef.isNonnull(); + float kfchi2 = validKf ? trackRef->normalizedChi2() : 0 ; //ielectron->track()->normalizedChi2() : 0 ; + float kfhits = validKf ? trackRef->hitPattern().trackerLayersWithMeasurement() : -1. ; + + kfchi2Vals.push_back(kfchi2); + kfhitsVals.push_back(kfhits); + + // 5x5circularity + float oc = probe->full5x5_e5x5() != 0. ? 1. - (probe->full5x5_e1x5() / probe->full5x5_e5x5()) : -1.; + ocVals.push_back(oc); + + // 1/E - 1/p + float ele_pin_mode = probe->trackMomentumAtVtx().R(); + float ele_ecalE = probe->ecalEnergy(); + float ele_IoEmIop = -1; + if(ele_ecalE != 0 || ele_pin_mode != 0) { + ele_IoEmIop = 1.0 / ele_ecalE - (1.0 / ele_pin_mode); + } + + ioemiopVals.push_back(ele_IoEmIop); } - // convert into ValueMap and store - std::unique_ptr > chi2ValMap(new edm::ValueMap()); - edm::ValueMap::Filler chi2Filler(*chi2ValMap); - chi2Filler.insert(probes, chi2Vals.begin(), chi2Vals.end()); - chi2Filler.fill(); - iEvent.put(std::move(chi2ValMap), "chi2"); - - std::unique_ptr > dzValMap(new edm::ValueMap()); - edm::ValueMap::Filler dzFiller(*dzValMap); - dzFiller.insert(probes, dzVals.begin(), dzVals.end()); - dzFiller.fill(); - iEvent.put(std::move(dzValMap), "dz"); - - std::unique_ptr > dxyValMap(new edm::ValueMap()); - edm::ValueMap::Filler dxyFiller(*dxyValMap); - dxyFiller.insert(probes, dxyVals.begin(), dxyVals.end()); - dxyFiller.fill(); - iEvent.put(std::move(dxyValMap), "dxy"); - - std::unique_ptr > mhValMap(new edm::ValueMap()); - edm::ValueMap::Filler mhFiller(*mhValMap); - mhFiller.insert(probes, mhVals.begin(), mhVals.end()); - mhFiller.fill(); - iEvent.put(std::move(mhValMap), "missinghits"); - - std::unique_ptr > l1EValMap(new edm::ValueMap()); - edm::ValueMap::Filler l1EFill(*l1EValMap); - l1EFill.insert(probes, l1EVals.begin(), l1EVals.end()); - l1EFill.fill(); - iEvent.put(std::move(l1EValMap), "l1e"); - - std::unique_ptr > l1EtValMap(new edm::ValueMap()); - edm::ValueMap::Filler l1EtFill(*l1EtValMap); - l1EtFill.insert(probes, l1EtVals.begin(), l1EtVals.end()); - l1EtFill.fill(); - iEvent.put(std::move(l1EtValMap), "l1et"); - - std::unique_ptr > l1EtaValMap(new edm::ValueMap()); - edm::ValueMap::Filler l1EtaFill(*l1EtaValMap); - l1EtaFill.insert(probes, l1EtaVals.begin(), l1EtaVals.end()); - l1EtaFill.fill(); - iEvent.put(std::move(l1EtaValMap), "l1eta"); - - std::unique_ptr > l1PhiValMap(new edm::ValueMap()); - edm::ValueMap::Filler l1PhiFill(*l1PhiValMap); - l1PhiFill.insert(probes, l1PhiVals.begin(), l1PhiVals.end()); - l1PhiFill.fill(); - iEvent.put(std::move(l1PhiValMap), "l1phi"); - - std::unique_ptr > pfPtValMap(new edm::ValueMap()); - edm::ValueMap::Filler pfPtFill(*pfPtValMap); - pfPtFill.insert(probes, pfPtVals.begin(), pfPtVals.end()); - pfPtFill.fill(); - iEvent.put(std::move(pfPtValMap), "pfPt"); - - + writeValueMap(iEvent, probes, dzVals, "dz"); + writeValueMap(iEvent, probes, dxyVals, "dxy"); + writeValueMap(iEvent, probes, sipVals, "sip"); + writeValueMap(iEvent, probes, mhVals, "missinghits"); + writeValueMap(iEvent, probes, gsfhVals, "gsfhits"); + writeValueMap(iEvent, probes, l1EVals, "l1e"); + writeValueMap(iEvent, probes, l1EtVals, "l1et"); + writeValueMap(iEvent, probes, l1EtaVals, "l1eta"); + writeValueMap(iEvent, probes, l1PhiVals, "l1phi"); + writeValueMap(iEvent, probes, pfPtVals, "pfPt"); + writeValueMap(iEvent, probes, convVtxFitProbVals, "convVtxFitProb"); + writeValueMap(iEvent, probes, kfhitsVals, "kfhits"); + writeValueMap(iEvent, probes, kfchi2Vals, "kfchi2"); + writeValueMap(iEvent, probes, ioemiopVals, "ioemiop"); + writeValueMap(iEvent, probes, ocVals, "5x5circularity"); + writeValueMap(iEvent, probes, hasMatchedConversionVals, "hasMatchedConversion"); + + // PF lepton isolations (will only work in miniAOD) + if(isMiniAODformat){ + try { + auto pfLeptonIsolations = computePfLeptonIsolations(*probes, *pfCandidates); + for(unsigned int i = 0; i < probes->size(); ++i){ + pfLeptonIsolations[i] /= (*probes)[i].pt(); + } + writeValueMap(iEvent, probes, pfLeptonIsolations, "pfLeptonIsolation"); + } catch (std::bad_cast){ + isMiniAODformat = false; + } + } } #endif diff --git a/plugins/HLTVariableHelper.h b/plugins/HLTVariableHelper.h index 4e5025382d3..e973b13f16a 100644 --- a/plugins/HLTVariableHelper.h +++ b/plugins/HLTVariableHelper.h @@ -15,6 +15,7 @@ //#include "DataFormats/EgammaCandidate/interface/SuperCluster.h" #include "DataFormats/Math/interface/deltaR.h" +#include "EgammaAnalysis/TnPTreeProducer/plugins/WriteValueMap.h" template class HLTVariableHelper : public edm::EDProducer { @@ -137,21 +138,11 @@ void HLTVariableHelper::produce(edm::Event & iEvent, const edm::EventSetup & // Save hardcoded for (unsigned int i=0; i > aMap(new edm::ValueMap()); - edm::ValueMap::Filler aFiller(*aMap); - aFiller.insert(probes, hardCodedValues[i].begin(), hardCodedValues[i].end()); - aFiller.fill(); - iEvent.put(std::move(aMap), hardCodedNames_[i]); + writeValueMap(iEvent, probes, hardCodedValues[i], hardCodedNames_[i]); } for (unsigned int i=0; i > aMap(new edm::ValueMap()); - edm::ValueMap::Filler aFiller(*aMap); - aFiller.insert(probes, values[i].begin(), values[i].end()); - aFiller.fill(); - iEvent.put(std::move(aMap), mapNames_[i]); + writeValueMap(iEvent, probes, values[i], mapNames_[i]); } } #endif diff --git a/plugins/LeptonMvaProducer.cc b/plugins/LeptonMvaProducer.cc new file mode 100644 index 00000000000..37ba04f1da0 --- /dev/null +++ b/plugins/LeptonMvaProducer.cc @@ -0,0 +1,210 @@ +#include "FWCore/Framework/interface/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/InputTag.h" + +#include "DataFormats/Common/interface/ValueMap.h" +#include "DataFormats/Common/interface/View.h" + +#include "DataFormats/Candidate/interface/CandidateFwd.h" +#include "DataFormats/Candidate/interface/Candidate.h" + +#include "DataFormats/PatCandidates/interface/Electron.h" +#include "DataFormats/PatCandidates/interface/Jet.h" + +#include "FWCore/Utilities/interface/Exception.h" +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "EgammaAnalysis/TnPTreeProducer/plugins/WriteValueMap.h" +#include "TMVA/Reader.h" + +#include +#include +#include +#include +#include + +/* + * LeptonMvaProducer class definition + */ +class LeptonMvaProducer : public edm::EDProducer { + public: + explicit LeptonMvaProducer(const edm::ParameterSet & iConfig); + virtual ~LeptonMvaProducer(){}; + + virtual void beginJob(); + virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup) override; + + private: + std::string leptonMvaType_; + std::string weightFileName_; + edm::EDGetTokenT> probesToken_; + edm::EDGetTokenT> probesViewToken_; + edm::EDGetTokenT> closestJetToken_; + std::map>> floatTokens_; + bool debug_; + + std::map inputValues; + TMVA::Reader *reader; +}; + + + +/* + * LeptonMvaProducer constructor + */ +LeptonMvaProducer::LeptonMvaProducer(const edm::ParameterSet & iConfig) : + leptonMvaType_( iConfig.getParameter("leptonMvaType")), + weightFileName_( iConfig.getParameter("weightFile").fullPath()), + probesToken_( consumes>( iConfig.getParameter("probes"))), + probesViewToken_( consumes>( iConfig.getParameter("probes"))), + closestJetToken_( consumes>(iConfig.getParameter("closestJet"))), + debug_( iConfig.getParameter("debug")) +{ + // This dirty code simply finds all the float inputs in the parameterset (the only ones having ":" in their InputTag except closestJet) + // and automatically initializes the floatTokens + for(std::string param : iConfig.getParameterNames()){ + if(iConfig.getParameterAsString(param).find(':') != std::string::npos and param!="closestJet"){ + floatTokens_[param] = consumes>(iConfig.getParameter(param)); + } + } + produces>(leptonMvaType_); + produces>("closestJetDeepCsv"); + produces>("closestJetDeepFlavour"); +} + + + +/* + * Begin job: initialize the TMVA reader [variables are automatically read from xml] + */ +void LeptonMvaProducer::beginJob(){ + reader = new TMVA::Reader("!Color:!Silent"); + + std::ifstream file(weightFileName_); + std::string line; + while (std::getline(file, line)){ + if(line.find("VarIndex") == std::string::npos) continue; + std::size_t start = line.find("Expression=\"")+12; + std::size_t end = line.find("\" Label"); + std::string var = line.substr(start, end-start); + reader->AddVariable(var, &inputValues[var]); + } + + reader->BookMVA("BDTG method", weightFileName_.c_str()); +} + + + +/* + * Produce function for each event + */ +void LeptonMvaProducer::produce(edm::Event & iEvent, const edm::EventSetup & iSetup) { + edm::Handle> probes; iEvent.getByToken(probesToken_, probes); + edm::Handle> probes_view; iEvent.getByToken(probesViewToken_, probes_view); + edm::Handle> closestJet; iEvent.getByToken(closestJetToken_, closestJet); + + // Loading in all the floats into floats[varName][eleIndex] + // This might look a bit like over-engineering, but you know mva people like to change variables all the time + // so in this way we avoid everytime manually changing the handles stuff etc... + std::map> floatsForAllProbes; + for(auto& it : floatTokens_){ + edm::Handle> handle; + iEvent.getByToken(it.second, handle); + for(size_t i=0; i<(*probes).size();++i){ + edm::RefToBase pp = probes_view->refAt(i); + floatsForAllProbes[i][it.first] = (*handle)[pp]; + } + } + + std::vector leptonMvaValues; + std::vector closestJetDeepCsvValues; + std::vector closestJetDeepFlavourValues; + + size_t i = 0; + for(const auto &probe: *probes){ + edm::RefToBase pp = probes_view->refAt(i); + auto& floats = floatsForAllProbes[i]; + + float deepFlavour = 0; + float deepCsv = 0; + if(((*closestJet)[pp]).isNonnull()){ + const pat::Jet* jet = reinterpret_cast(((*closestJet)[pp]).get()); + float probb = jet->bDiscriminator("pfDeepFlavourJetTags:probb"); + float probbb = jet->bDiscriminator("pfDeepFlavourJetTags:probbb"); + float problepb = jet->bDiscriminator("pfDeepFlavourJetTags:problepb"); + deepFlavour = std::isnan(probb+probbb+problepb) ? 0. : std::max(probb+probbb+problepb, (float)0.); + + probb = jet->bDiscriminator("pfDeepCSVJetTags:probb"); + probbb = jet->bDiscriminator("pfDeepCSVJetTags:probbb"); + deepCsv = std::isnan(probb+probbb) ? 0. : std::max(probb+probbb, (float)0.); + } + + // If you need a new leptonMvaType, you can implement the mapping of the variables here: + if(leptonMvaType_=="leptonMvaTTH"){ + inputValues["LepGood_pt"] = pp->pt(); + inputValues["LepGood_eta"] = pp->eta(); + inputValues["LepGood_jetNDauChargedMVASel"] = floats["jetNDauChargedMVASel"]; + inputValues["LepGood_miniRelIsoCharged"] = floats["miniIsoChg"]; + inputValues["LepGood_miniRelIsoNeutral"] = floats["miniIsoAll"] - floats["miniIsoChg"]; + inputValues["LepGood_jetPtRelv2"] = floats["ptRel"]; + inputValues["LepGood_jetDF"] = deepFlavour; + inputValues["LepGood_jetPtRatio"] = std::min(floats["ptRatio"],(float)1.5); + inputValues["LepGood_dxy"] = log(fabs(probe.dB(pat::Electron::PV2D))); + inputValues["LepGood_sip3d"] = fabs(probe.dB(pat::Electron::PV3D)/probe.edB(pat::Electron::PV3D)); + inputValues["LepGood_dz"] = log(fabs(probe.dB(pat::Electron::PVDZ))); + inputValues["LepGood_mvaFall17V2noIso"] = floats["mvas"]; + } else if(leptonMvaType_=="leptonMvaGhent"){ + inputValues["pt"] = pp->pt(); + inputValues["eta"] = fabs(pp->eta()); + inputValues["trackMultClosestJet"] = floats["jetNDauChargedMVASel"]; + inputValues["miniIsoCharged"] = floats["miniIsoChg"]; + inputValues["miniIsoNeutral"] = floats["miniIsoAll"] - floats["miniIsoChg"]; + inputValues["pTRel"] = floats["ptRel"]; + inputValues["relIso"] = floats["PFIsoAll"]; + inputValues["deepCsvClosestJet"] = deepCsv; + inputValues["ptRatio"] = std::min(floats["ptRatio"],(float)1.5); + inputValues["dxy"] = log(fabs(probe.dB(pat::Electron::PV2D))); + inputValues["sip3d"] = fabs(probe.dB(pat::Electron::PV3D)/probe.edB(pat::Electron::PV3D)); + inputValues["dz"] = log(fabs(probe.dB(pat::Electron::PVDZ))); + inputValues["electronMvaSpring16GP"] = floats["mvas"]; // because these names actually differ given on the training + inputValues["electronMvaFall17NoIso"] = floats["mvas"]; + } else if(leptonMvaType_=="leptonMvaTOP"){ + inputValues["pt"] = pp->pt(); + inputValues["etaAbs"] = fabs(pp->eta()); + inputValues["trackMultClosestJet"] = floats["jetNDauChargedMVASel"]; + inputValues["miniIsoCharged"] = floats["miniIsoChg"]; + inputValues["miniIsoNeutral"] = floats["miniIsoAll"] - floats["miniIsoChg"]; + inputValues["pTRel"] = floats["ptRel"]; + inputValues["relIso"] = floats["PFIsoAll"]; + inputValues["bTagDeepJetClosestJet"] = deepFlavour; + inputValues["ptRatio"] = std::min(floats["ptRatio"],(float)1.5); + inputValues["dxylog"] = log(fabs(probe.dB(pat::Electron::PV2D))); + inputValues["sip3d"] = fabs(probe.dB(pat::Electron::PV3D)/probe.edB(pat::Electron::PV3D)); + inputValues["dzlog"] = log(fabs(probe.dB(pat::Electron::PVDZ))); + inputValues["mvaIdFall17v2noIso"] = floats["mvas"]; + } else { + throw cms::Exception("unknownLeptonMvaType") << "Please add " << leptonMvaType_ << " definitions to " << __FILE__ << " at line " << __LINE__; + } + + + float leptonMva = reader->EvaluateMVA("BDTG method"); + leptonMvaValues.push_back(leptonMva); + closestJetDeepCsvValues.push_back(deepCsv); + closestJetDeepFlavourValues.push_back(deepFlavour); + + if(debug_){ + for(auto& pair : inputValues) std::cout << std::left << std::setw(30) << pair.first << "\t" << pair.second << std::endl; + std::cout << "--> " << std::left << std::setw(26) << leptonMvaType_ << "\t" << leptonMva << std::endl << std::endl << std::endl; + } + + ++i; + } + + writeValueMap(iEvent, probes, leptonMvaValues, leptonMvaType_); + writeValueMap(iEvent, probes, closestJetDeepCsvValues, "closestJetDeepCsv"); + writeValueMap(iEvent, probes, closestJetDeepFlavourValues, "closestJetDeepFlavour"); +} + + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(LeptonMvaProducer); diff --git a/plugins/MiniAODL1Stage2CandProducer.cc b/plugins/MiniAODL1Stage2CandProducer.cc new file mode 100644 index 00000000000..7e3dfefd0bf --- /dev/null +++ b/plugins/MiniAODL1Stage2CandProducer.cc @@ -0,0 +1,14 @@ +#include "MiniAODL1Stage2CandProducer.h" + +#include "DataFormats/PatCandidates/interface/Electron.h" +#include "DataFormats/PatCandidates/interface/Photon.h" + +typedef MiniAODL1Stage2CandProducer PatElectronL1Stage2CandProducer; +DEFINE_FWK_MODULE(PatElectronL1Stage2CandProducer); + +typedef MiniAODL1Stage2CandProducer GsfElectronL1Stage2CandProducer; +DEFINE_FWK_MODULE(GsfElectronL1Stage2CandProducer); + +//typedef MiniAODL1CandProducer PatPhotonL1CandProducer; +//DEFINE_FWK_MODULE(PatPhotonL1CandProducer); + diff --git a/plugins/MiniAODL1Stage2CandProducer.h b/plugins/MiniAODL1Stage2CandProducer.h new file mode 100644 index 00000000000..fa1d2e1634f --- /dev/null +++ b/plugins/MiniAODL1Stage2CandProducer.h @@ -0,0 +1,135 @@ +#ifndef _MINIADOL1STAGE2CANDPRODUCER_H_ +#define _MINIADOL1STAGE2CANDPRODUCER_H_ + +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Framework/interface/EDProducer.h" + +//#include "DataFormats/L1Trigger/interface/L1EmParticle.h" +//#include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h" +#include "DataFormats/L1Trigger/interface/EGamma.h" //for stage 2 L1 +#include + +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include +#include + +template +class MiniAODL1Stage2CandProducer : public edm::EDProducer { + + typedef std::vector TCollection; + typedef edm::Ref TRef; + typedef edm::RefVector TRefVector; + + public: + MiniAODL1Stage2CandProducer(const edm::ParameterSet&); + ~MiniAODL1Stage2CandProducer(); + + bool l1OfflineMatching(const std::vector& triggerObjects, + math::XYZTLorentzVector refP4, float dRmin, float dRminEE, int& index); + private: + /// compare two l1Extra in et + struct ComparePt { + bool operator()( const l1t::EGamma& t1, const l1t::EGamma& t2 ) const { + return t1.et() > t2.et(); + } + }; + ComparePt ptComparator; + + virtual void produce(edm::Event&, const edm::EventSetup&) override; + + edm::EDGetTokenT inputs_; + edm::EDGetTokenT l1ObjectsToken_; + float minET_; + float dRMatch_; + float dRMatchEE_; + +}; + +template +MiniAODL1Stage2CandProducer::MiniAODL1Stage2CandProducer(const edm::ParameterSet& iConfig ) : + + + inputs_(consumes(iConfig.getParameter("inputs"))), + l1ObjectsToken_(consumes ( iConfig.getParameter("objects"))), + minET_(iConfig.getParameter("minET")), + dRMatch_(iConfig.getParameter("dRmatch")) +{ + + if(iConfig.exists("dRmatchEE")) + dRMatchEE_ = (iConfig.getParameter("dRmatchEE")); + else + dRMatchEE_ = dRMatch_; //for backwards compatibility + + produces(); +} + +template +MiniAODL1Stage2CandProducer::~MiniAODL1Stage2CandProducer() +{} + +template +void MiniAODL1Stage2CandProducer::produce(edm::Event &iEvent, const edm::EventSetup &eventSetup) { + + edm::Handle l1ObjectsH; + edm::Handle inputs; + + iEvent.getByToken(l1ObjectsToken_, l1ObjectsH); + iEvent.getByToken(inputs_, inputs); + + //Merge L1 objects and sort by et + std::vector mergedL1; + for(auto it=l1ObjectsH->begin(0); it!=l1ObjectsH->end(0); it++){ + mergedL1.push_back(*it); + // std::cout << "L1: " << endl; + } + + std::sort(mergedL1.begin(), mergedL1.end(), ptComparator); + + // Create the output collection + // std::auto_ptr outColRef(new TRefVector); + std::unique_ptr outColRef(new TRefVector); + + for (size_t i=0; isize(); i++) { + TRef ref = (*inputs)[i]; + int index = -1; + + if (l1OfflineMatching(mergedL1, ref->p4(), dRMatch_, dRMatchEE_, index)) { + outColRef->push_back(ref); + } + } + + //iEvent.put(outColRef); + iEvent.put(std::move(outColRef)); +} + +template +bool MiniAODL1Stage2CandProducer::l1OfflineMatching(const std::vector& l1Objects, + math::XYZTLorentzVector refP4, float dRmin, float dRminEE, int& index) { + + + index = 0; + //for (auto it=l1Objects.begin(0); it != l1Objects.end(0); it++) { //bx 0 only considered + for (auto it=l1Objects.begin(); it != l1Objects.end(); it++) { + if (it->et() < minET_) + continue; + + float dR = deltaR(refP4, it->p4()); + if(fabs(refP4.eta()) < 1.5) + if (dR < dRmin) + return true; + if(dR < dRminEE) //allow for looser requirements in EE (not needed for stage2) + return true; + index++; + } + + return false; + +} + + +#endif + diff --git a/plugins/MiniAODStage2L1CandProducer.cc b/plugins/MiniAODStage2L1CandProducer.cc new file mode 100644 index 00000000000..320e4298554 --- /dev/null +++ b/plugins/MiniAODStage2L1CandProducer.cc @@ -0,0 +1,11 @@ +#include "MiniAODL1CandProducer.h" + +#include "DataFormats/PatCandidates/interface/Electron.h" +#include "DataFormats/PatCandidates/interface/Photon.h" + +typedef MiniAODL1CandProducer PatElectronL1CandProducer; +DEFINE_FWK_MODULE(PatElectronL1CandProducer); + +typedef MiniAODL1CandProducer PatPhotonL1CandProducer; +DEFINE_FWK_MODULE(PatPhotonL1CandProducer); + diff --git a/plugins/MiniAODTriggerCandProducer.cc b/plugins/MiniAODTriggerCandProducer.cc index 2bae7a99273..980711c4022 100644 --- a/plugins/MiniAODTriggerCandProducer.cc +++ b/plugins/MiniAODTriggerCandProducer.cc @@ -95,6 +95,13 @@ void MiniAODTriggerCandProducer::prod for (size_t f=1; ffilterIndex(filterNames_[f]); + for (int i=0;isizeFilters(); i++) { + if (trEv->filterLabel(i) == filterNames_[f]) { + moduleFilterIndex = i; + break; + }//if (trEv->filterLabel(i) == filterNames_[f]) + }//for (int i=0;isizeFilters(); i++) + if (moduleFilterIndex+1 > trEv->sizeFilters()) saveObj = false; else { @@ -119,10 +126,12 @@ void MiniAODTriggerCandProducer::prod template<> bool MiniAODTriggerCandProducer::onlineOfflineMatching(pat::ElectronRef ref, const std::vector* triggerObjects, - std::string filterLabel, float dRmin) { + std::string filterLabel, float dRmin,const edm::Handle & triggerBits,const edm::TriggerNames &triggerNames, edm::Event &iEvent) { for (pat::TriggerObjectStandAlone obj : *triggerObjects) { //obj.unpackPathNames(triggerNames); + obj.unpackPathNames(triggerNames); + obj.unpackFilterLabels(iEvent, *triggerBits); if (obj.hasFilterLabel(filterLabel)) { float dR = deltaR(ref->superCluster()->position(), obj.p4()); if (dR < dRmin) @@ -136,10 +145,13 @@ bool MiniAODTriggerCandProducer::on template <> bool MiniAODTriggerCandProducer::onlineOfflineMatching(pat::PhotonRef ref, const std::vector* triggerObjects, - std::string filterLabel, float dRmin) { + std::string filterLabel, float dRmin,const edm::Handle & triggerBits,const edm::TriggerNames &triggerNames, edm::Event &iEvent) { for (pat::TriggerObjectStandAlone obj : *triggerObjects) { //obj.unpackPathNames(triggerNames); + + obj.unpackPathNames(triggerNames); + obj.unpackFilterLabels(iEvent, *triggerBits); if (obj.hasFilterLabel(filterLabel)) { float dR = deltaR(ref->superCluster()->position(), obj.p4()); if (dR < dRmin) @@ -153,10 +165,13 @@ bool MiniAODTriggerCandProducer::onli template <> bool MiniAODTriggerCandProducer::onlineOfflineMatching(edm::Ref> ref, const std::vector* triggerObjects, - std::string filterLabel, float dRmin) { + std::string filterLabel, float dRmin,const edm::Handle & triggerBits,const edm::TriggerNames &triggerNames, edm::Event &iEvent) { for (pat::TriggerObjectStandAlone obj : *triggerObjects) { //obj.unpackPathNames(triggerNames); + + obj.unpackPathNames(triggerNames); + obj.unpackFilterLabels(iEvent, *triggerBits); if (obj.hasFilterLabel(filterLabel)) { float dR = deltaR(ref->superCluster()->position(), obj.p4()); if (dR < dRmin) diff --git a/plugins/MiniAODTriggerCandProducer.h b/plugins/MiniAODTriggerCandProducer.h index 09be0755046..5d69951da5c 100644 --- a/plugins/MiniAODTriggerCandProducer.h +++ b/plugins/MiniAODTriggerCandProducer.h @@ -40,7 +40,7 @@ class MiniAODTriggerCandProducer : public edm::EDProducer { void init(const edm::TriggerResults &result, const edm::TriggerNames & triggerNames); bool onlineOfflineMatching(TRef ref, const UCollection* triggerObjects, - std::string filterLabel, float dRmin); + std::string filterLabel, float dRmin,const edm::Handle & triggerBits,const edm::TriggerNames &triggerNames,edm::Event &iEvent); bool onlineOfflineMatchingRECO(TRef ref, const UCollection* triggerObjects, @@ -122,13 +122,13 @@ template TRef ref = (*inputs)[i]; //std::cout << typeof(triggerObjects.product()) << std::endl; if (filterNames_.size() > 0) { - saveObj = onlineOfflineMatching(ref, triggerObjects.product(), filterNames_[0], dRMatch_); + saveObj = onlineOfflineMatching(ref, triggerObjects.product(), filterNames_[0], dRMatch_,triggerBits,triggerNames,iEvent); for (size_t f=1; f::produce(edm::Event & event, const edm::EventSetup & setup) // read the selection map from the Event edm::Handle > cutflow; event.getByToken(token_selection, cutflow); + for (unsigned int i = 0; i < h_inputs->size(); ++i) { @@ -90,21 +92,31 @@ void Nm1Selector::produce(edm::Event & event, const edm::EventSetup & setup) vid::CutFlowResult maskedCutFlowData = fullCutFlowData.getCutFlowResultMasking(cutIndicesToMask_); if (maskedCutFlowData.cutFlowPassed()) pass = true; - //std::cout << pass << std::endl; + // std::cout << pass << std::endl; //int ncuts = maskedCutFlowData.cutFlowSize(); //for(int icut = 0; icutpush_back(ptr); } @@ -118,3 +130,9 @@ DEFINE_FWK_MODULE(PatElectronNm1Selector); typedef Nm1Selector PatPhotonNm1Selector; DEFINE_FWK_MODULE(PatPhotonNm1Selector); + +//typedef Nm1Selector GsfElectronNm1Selector; +//DEFINE_FWK_MODULE(GsfElectronNm1Selector); + +//typedef Nm1Selector GsfPhotonNm1Selector; +//DEFINE_FWK_MODULE(GsfPhotonNm1Selector); diff --git a/plugins/PatEleEBEECut.cc b/plugins/PatEleEBEECut.cc new file mode 100644 index 00000000000..bfa0440a722 --- /dev/null +++ b/plugins/PatEleEBEECut.cc @@ -0,0 +1,28 @@ +#include "PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h" +#include "CommonTools/Utils/interface/StringObjectFunction.h" +#include "RecoEgamma/ElectronIdentification/interface/EBEECutValues.h" + +class PatEleEBEECut : public CutApplicatorBase { +public: + PatEleEBEECut(const edm::ParameterSet& c) + : CutApplicatorBase(c), + cutFormula_(c.getParameter("cutString")), + cutValue_(c, "cutValue") {} + + result_type operator()(const pat::ElectronPtr& cand) const final { + return cutFormula_(*cand) < cutValue_(cand); + } + + double value(const reco::CandidatePtr& cand) const final { + pat::ElectronPtr ele(cand); + return cutFormula_(*ele); + } + + CandidateType candidateType() const final { return PATELECTRON; } + +private: + StringObjectFunction cutFormula_; + const EBEECutValuesT cutValue_; +}; + +DEFINE_EDM_PLUGIN(CutApplicatorFactory, PatEleEBEECut, "PatEleEBEECut"); diff --git a/plugins/PileupWeightProducer.cc b/plugins/PileupWeightProducer.cc index ecca37d68b8..6a5d463ce63 100644 --- a/plugins/PileupWeightProducer.cc +++ b/plugins/PileupWeightProducer.cc @@ -15,7 +15,7 @@ // Created: Mon Nov 21 15:05:26 CET 2011 // // - +#include #include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/EDProducer.h" @@ -77,6 +77,8 @@ void PileupWeightProducer::produce(edm::Event& iEvent, const edm::EventSetup& iS if(!iEvent.isRealData() ) { iEvent.getByToken(pileupInfoTag_, PupInfo); int nPUtrue = PupInfo->begin()->getTrueNumInteractions(); + // std::cout< class SCVariableHelper : public edm::EDProducer { @@ -92,11 +93,7 @@ void SCVariableHelper::produce(edm::Event & iEvent, const edm::EventSetup & i // convert into ValueMap and store - std::unique_ptr > scIsoValMap(new edm::ValueMap()); - edm::ValueMap::Filler scIsoFiller(*scIsoValMap); - scIsoFiller.insert(probes, scIsoValues.begin(), scIsoValues.end()); - scIsoFiller.fill(); - iEvent.put(std::move(scIsoValMap), "scTkIso"); + writeValueMap(iEvent, probes, scIsoValues, "scTkIso"); } #endif diff --git a/plugins/SimpleEventCounter.cc b/plugins/SimpleEventCounter.cc new file mode 100644 index 00000000000..51bdc13b5a2 --- /dev/null +++ b/plugins/SimpleEventCounter.cc @@ -0,0 +1,156 @@ +// -*- C++ -*- +// +// Package: EventCounter/SimpleEventCounter +// Class: SimpleEventCounter +// +/**\class SimpleEventCounter SimpleEventCounter.cc EventCounter/SimpleEventCounter/plugins/SimpleEventCounter.cc + Description: [one line class summary] + Implementation: + [Notes on implementation] +*/ +// +// Original Author: Francesco Micheli +// Created: Wed, 09 May 2018 13:01:25 GMT +// +// + + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "CommonTools/UtilAlgos/interface/TFileService.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include "FWCore/Utilities/interface/InputTag.h" + + + +#include "TH1F.h" + +// +// class declaration +// + +// If the analyzer does not use TFileService, please remove +// the template argument to the base class so the class inherits +// from edm::one::EDAnalyzer<> and also remove the line from +// constructor "usesResource("TFileService");" +// This will improve performance in multithreaded jobs. + +class SimpleEventCounter : public edm::one::EDAnalyzer { +public: + explicit SimpleEventCounter(const edm::ParameterSet&); + ~SimpleEventCounter(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + +private: + virtual void beginJob() override; + virtual void analyze(const edm::Event&, const edm::EventSetup&) override; + virtual void endJob() override; + + // ----------member data --------------------------- + edm::Service fs_; + // to keep track of the sum of weights + TH1F *h_sumW; +}; + +// +// constants, enums and typedefs +// + +// +// static data member definitions +// + +// +// constructors and destructor +// +SimpleEventCounter::SimpleEventCounter(const edm::ParameterSet& iConfig) + +{ + //now do what ever initialization is needed + usesResource("TFileService"); + +} + + +SimpleEventCounter::~SimpleEventCounter() +{ + + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + +} + + +// +// member functions +// + +// ------------ method called for each event ------------ +void +SimpleEventCounter::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +{ + using namespace edm; + + + +#ifdef THIS_IS_AN_EVENT_EXAMPLE + Handle pIn; + iEvent.getByLabel("example",pIn); +#endif + +#ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE + ESHandle pSetup; + iSetup.get().get(pSetup); +#endif + + // To keep track of the sum of weights + const edm::EDGetTokenT src_; + double weight; + edm::Handle EvtHandle; + iEvent.getByToken(src_,EvtHandle); + weight=EvtHandle->weights()[0].wgt; + h_sumW->Fill(0.5,weight); + +} + + +// ------------ method called once each job just before starting event loop ------------ +void +SimpleEventCounter::beginJob() +{ + // to keep track of the sum of weights + h_sumW = fs_->make("h_sumW", "h_sumW", 1, 0., 1.); + h_sumW->Sumw2(); +} + +// ------------ method called once each job just after ending the event loop ------------ +void +SimpleEventCounter::endJob() +{ +} + +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void +SimpleEventCounter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + //The following says we do not know what parameters are allowed so do no validation + // Please change this to state exactly what you do use, even if it is no parameters + edm::ParameterSetDescription desc; + desc.setUnknown(); + descriptions.addDefault(desc); +} + +//define this as a plug-in +DEFINE_FWK_MODULE(SimpleEventCounter); diff --git a/plugins/SusyElectronVariableHelper.cc b/plugins/SusyElectronVariableHelper.cc new file mode 100644 index 00000000000..43151189a1e --- /dev/null +++ b/plugins/SusyElectronVariableHelper.cc @@ -0,0 +1,360 @@ +#include "FWCore/Framework/interface/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/InputTag.h" + +#include "DataFormats/Common/interface/ValueMap.h" +#include "DataFormats/Common/interface/View.h" + +#include "DataFormats/Candidate/interface/CandidateFwd.h" +#include "DataFormats/Candidate/interface/Candidate.h" + +#include "DataFormats/PatCandidates/interface/Electron.h" +#include "DataFormats/VertexReco/interface/Vertex.h" +#include "DataFormats/VertexReco/interface/VertexFwd.h" + +#include "DataFormats/L1Trigger/interface/L1EmParticle.h" +#include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h" + +#include "DataFormats/Math/interface/deltaR.h" +#include "TMVA/Reader.h" + +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "EgammaAnalysis/TnPTreeProducer/plugins/WriteValueMap.h" + +#include "TMath.h" + +namespace{ + bool PassMVAVLooseFO(double mva, double abssceta){ + if(abssceta<0.8) return mva > -0.7; + else if(abssceta<1.479) return mva > -0.83; + else if(abssceta<2.5) return mva > -0.92; + else return false; + } + + bool PassMVAVLoose(double mva, double abssceta){ + if(abssceta<0.8) return mva > -0.16; + else if(abssceta<1.479) return mva > -0.65; + else if(abssceta<2.5) return mva > -0.74; + else return false; + } + + bool PassMVATight(double mva, double abssceta){ + if(abssceta<0.8) return mva > 0.87; + else if(abssceta<1.479) return mva > 0.60; + else if(abssceta<2.5) return mva > 0.17; + else return false; + } + + bool PassMVAWP80(double mva, double abssceta){ + if(abssceta<0.8) return mva > 0.988153; + else if(abssceta<1.479) return mva > 0.967910; + else if(abssceta<2.5) return mva > 0.841729; + else return false; + } + + bool PassMVAWP90(double mva, double abssceta){ + if(abssceta<0.8) return mva > 0.972153; + else if(abssceta<1.479) return mva > 0.922126; + else if(abssceta<2.5) return mva > 0.610764; + else return false; + } + + bool PassTightIP2D(double dxy, double dz){ + return fabs(dxy) < 0.05 && fabs(dz) < 0.1; + } + + bool PassIDEmu(const pat::Electron &ele){ + if(ele.isEB()){ + return ele.sigmaIetaIeta() < 0.011 + && ele.hadronicOverEm() < 0.08 + && fabs(ele.deltaEtaSuperClusterTrackAtVtx()) < 0.01 + && fabs(ele.deltaPhiSuperClusterTrackAtVtx()) < 0.04 + && fabs(1./ele.ecalEnergy() - ele.eSuperClusterOverP()/ele.ecalEnergy()) < 0.01; + }else if(ele.isEE()){ + return ele.sigmaIetaIeta() < 0.031 + && ele.hadronicOverEm() < 0.08 + && fabs(ele.deltaEtaSuperClusterTrackAtVtx()) < 0.01 + && fabs(ele.deltaPhiSuperClusterTrackAtVtx()) < 0.08 + && fabs(1./ele.ecalEnergy() - ele.eSuperClusterOverP()/ele.ecalEnergy()) < 0.01; + }else{ + return false; + } + } + + bool PassISOEmu(const pat::Electron &ele){ + return ele.ecalPFClusterIso() / ele.pt() < 0.45 + && ele.hcalPFClusterIso() / ele.pt() < 0.25 + && ele.dr03TkSumPt() / ele.pt() < 0.2; + } + + // We want the EGM IDs but don't want the isolation cut, and you really don't want to mess with the EGamma VID code + // So we implement the IDs by hand, rather than navigating the web of classes and config files of VID + // Cuts based on: https://twiki.cern.ch/twiki/bin/viewauth/CMS/CutBasedElectronIdentificationRun2#Spring15_selection_25ns + // Spring15, 25ns Veto B Loose B Medium B Tight B Veto E Loose E Medium E Tight E + std::vector maxSigmaIetaIeta = {0.0114, 0.0103, 0.0101, 0.0101, 0.0352, 0.0301, 0.0283, 0.0279}; + std::vector maxDEtaIn = {0.0152, 0.0105, 0.0103, 0.00926, 0.0113, 0.00814, 0.00733, 0.00724}; + std::vector maxDPhiIn = {0.216, 0.115, 0.0336, 0.0336, 0.237, 0.182, 0.114, 0.0918}; + std::vector maxHOverE = {0.181, 0.104, 0.0876, 0.0597, 0.116, 0.0897, 0.0678, 0.0615}; + std::vector maxOoEmooP = {0.207, 0.102, 0.0174, 0.012, 0.174, 0.126, 0.0898, 0.00999}; + std::vector maxd0 = {0.0564, 0.0261, 0.0118, 0.0111, 0.222, 0.118, 0.0739, 0.0351}; + std::vector maxdz = {0.472, 0.41, 0.373, 0.0466, 0.921, 0.822, 0.602, 0.417}; + std::vector maxMissingHits = {2, 2, 2, 2, 3, 1, 1, 1}; + std::vector convVeto = {true, true, true, true, true, true, true, true}; + + bool PassCutBased(const pat::Electron &ele, float dxy, float dz, int missingHits, int level){ + if(ele.isEB()) level = level; + else if(ele.isEE()) level = level + 4; + else return false; + + float eInvMinusPInv = std::abs(1.0 - ele.eSuperClusterOverP())/ele.ecalEnergy(); + + if(ele.full5x5_sigmaIetaIeta() >= maxSigmaIetaIeta[level]) return false; + if(abs(ele.deltaEtaSuperClusterTrackAtVtx()) >= maxDEtaIn[level]) return false; + if(abs(ele.deltaPhiSuperClusterTrackAtVtx()) >= maxDPhiIn[level]) return false; + if(ele.hadronicOverEm() >= maxHOverE[level]) return false; + if(eInvMinusPInv >= maxOoEmooP[level]) return false; + if(abs(dxy) >= maxd0[level]) return false; + if(abs(dz) >= maxdz[level]) return false; + if(missingHits > maxMissingHits[level]) return false; + if(convVeto[level] and not ele.passConversionVeto()) return false; + + return true; + } + + // 94X cuts based on Version 52 of https://twiki.cern.ch/twiki/bin/view/CMS/CutBasedElectronIdentificationRun2#Offline_selection_criteria + // Fall17 Veto B Loose B Medium B Tight B Veto E Loose E Medium E Tight E + std::vector maxSigmaIetaIeta94X = {0.0128, 0.0105, 0.0105, 0.0104, 0.0445, 0.0356, 0.0309, 0.0305}; + std::vector maxDEtaIn94X = {0.00523, 0.00387, 0.00365, 0.00353, 0.00984, 0.0072, 0.00625, 0.00567}; + std::vector maxDPhiIn94X = {0.159, 0.0716, 0.0588, 0.0499, 0.157, 0.147, 0.0355, 0.0165}; + std::vector maxHOverE94X = {0.05, 0.05, 0.025, 0.26, 0.05, 0.0414, 0.026, 0.026}; + std::vector maxOoEmooP94X = {0.193, 0.102, 0.0174, 0.012, 0.0962, 0.0875, 0.0335, 0.0158}; + std::vector maxd094X = {0.05, 0.05, 0.05, 0.05, 0.10, 0.10, 0.10, 0.10}; + std::vector maxdz94X = {0.10, 0.10, 0.10, 0.10, 0.20, 0.20, 0.20, 0.20}; + std::vector maxMissingHits94X = {2, 1, 1, 1, 3, 1, 1, 1}; + std::vector convVeto94X = {true, true, true, true, true, true, true, true}; + + // from https://github.com/ikrav/cmssw/blob/egm_id_80X_v1/RecoEgamma/ElectronIdentification/plugins/cuts/GsfEleDEtaInSeedCut.cc#L30-L33 + float dEtaInSeed(const pat::Electron &ele){ + return ele.superCluster().isNonnull() && ele.superCluster()->seed().isNonnull() ? + ele.deltaEtaSuperClusterTrackAtVtx() - ele.superCluster()->eta() + ele.superCluster()->seed()->eta() : std::numeric_limits::max(); + } + + bool passHoverE(const pat::Electron &ele, double rho, float C0 ) { + if(ele.isEB()) return (ele.hadronicOverEm() < C0 + 1.12/ele.superCluster()->energy() + 0.0368*rho/ele.superCluster()->energy()); + else return (ele.hadronicOverEm() < C0 + 0.5/ele.superCluster()->energy() + 0.201*rho/ele.superCluster()->energy()); + } + + bool PassCutBased94X(const pat::Electron &ele, float dxy, float dz, int missingHits, double rho, int level){ + if(ele.isEB()) level = level; + else level = level + 4; + + float eInvMinusPInv = std::abs(1.0 - ele.eSuperClusterOverP())/ele.ecalEnergy(); + + if(ele.full5x5_sigmaIetaIeta() >= maxSigmaIetaIeta[level]) return false; + if(abs(dEtaInSeed(ele)) >= maxDEtaIn[level]) return false; + if(abs(ele.deltaPhiSuperClusterTrackAtVtx()) >= maxDPhiIn[level]) return false; + if(! passHoverE( ele, rho, maxHOverE[level]) ) return false; + if(eInvMinusPInv >= maxOoEmooP[level]) return false; + if(abs(dxy) >= maxd0[level]) return false; + if(abs(dz) >= maxdz[level]) return false; + if(missingHits > maxMissingHits[level]) return false; + if(convVeto[level] and not ele.passConversionVeto()) return false; + + return true; + } + + + bool PassMultiIso(TString level, double mini_iso, double jetPtRatio, double jetPtRel){ + if(level == "VL") return mini_iso < 0.25 && (jetPtRatio > 0.67 || jetPtRel > 4.4); + if(level == "L") return mini_iso < 0.20 && (jetPtRatio > 0.69 || jetPtRel > 6.0); + if(level == "M") return mini_iso < 0.16 && (jetPtRatio > 0.76 || jetPtRel > 7.2); + if(level == "T") return mini_iso < 0.12 && (jetPtRatio > 0.80 || jetPtRel > 7.2); + if(level == "VT") return mini_iso < 0.09 && (jetPtRatio > 0.84 || jetPtRel > 7.2); + return false; + } + + bool PassLeptonMva(TString level, double mva){ + if(level == "VL") return mva > -0.3; + if(level == "L") return mva > 0.25; + if(level == "M") return mva > 0.5; + if(level == "T") return mva > 0.65; + if(level == "VT") return mva > 0.75; + if(level == "ET") return mva > 0.85; + return false; + } +} + + + +class SusyElectronVariableHelper : public edm::EDProducer { +public: + explicit SusyElectronVariableHelper(const edm::ParameterSet & iConfig); + virtual ~SusyElectronVariableHelper() ; + + virtual void beginJob(); + bool combine(std::map>& passWorkingPoints, std::vector wps); + virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup) override; + +private: + edm::EDGetTokenT> probesToken_; + edm::EDGetTokenT> probesViewToken_; + edm::EDGetTokenT> probes2ViewToken_; + edm::EDGetTokenT> mvaToken_; + edm::EDGetTokenT> dxyToken_; + edm::EDGetTokenT> dzToken_; + edm::EDGetTokenT> leptonMvaToken_; + edm::EDGetTokenT rhoToken_; + + std::vector workingPoints; +}; + +SusyElectronVariableHelper::SusyElectronVariableHelper(const edm::ParameterSet & iConfig) : + probesToken_( consumes>(iConfig.getParameter("probes"))), + probesViewToken_( consumes>(iConfig.getParameter("probes"))), + probes2ViewToken_( consumes>(iConfig.getParameter("probesWithLepMVA"))), + mvaToken_( consumes>( iConfig.getParameter("mvas"))), + dxyToken_( consumes>( iConfig.getParameter("dxy"))), + dzToken_( consumes>( iConfig.getParameter("dz"))), + leptonMvaToken_( consumes>( iConfig.getParameter("leptonMvas"))), + rhoToken_( consumes( iConfig.getParameter("rho"))) { + + produces >("sip3d"); + produces >("electronMVATTH"); + + workingPoints = {"ConvVeto", "MVAVLooseFO", "MVAVLoose", "Mini", "Mini2", "Mini4", + "MVAVLooseMini", "MVAVLooseMini2", "MVAVLooseMini4", "MVATight", "MVAWP80", "MVAWP90", + "TightIP2D", "TightIP3D", "IDEmu", "ISOEmu", "Charge", "IHit0", "IHit1", "Loose2D", + "FOID2D", "Tight2D3D", "TightID2D3D", "ConvIHit0", "TightConvIHit0", "ConvIHit1", "ConvIHit0Chg", + "MultiIsoM", "MultiIsoT", "MultiIsoVT", "MultiIsoEmu", "LeptonMvaM", "LeptonMvaVT", + "CutBasedVetoNoIso", "CutBasedLooseNoIso", "CutBasedMediumNoIso", "CutBasedTightNoIso", + "CutBasedVetoNoIso94X", "CutBasedLooseNoIso94X", "CutBasedMediumNoIso94X", "CutBasedTightNoIso94X", + "CutBasedMediumMini", "CutBasedTightMini", "CutBasedMediumMini94X", "CutBasedTightMini94X", "CutBasedStopsDilepton", + "LeptonMvaVTIDEmuTightIP2DSIP3D8miniIso04", "LeptonMvaMIDEmuTightIP2DSIP3D8miniIso04"}; + + for(TString wp : workingPoints) produces>(("pass" + wp).Data()); +} + +SusyElectronVariableHelper::~SusyElectronVariableHelper(){ +} + +void SusyElectronVariableHelper::beginJob(){ + +} + +// Combine workingpoints +bool SusyElectronVariableHelper::combine(std::map>& passWorkingPoints, std::vector wps){ + for(TString wp : wps) if(!passWorkingPoints[wp].back()) return false; + return true; +} + + +void SusyElectronVariableHelper::produce(edm::Event & iEvent, const edm::EventSetup & iSetup) { + // read input + edm::Handle> probes; iEvent.getByToken(probesToken_, probes); + edm::Handle> probes_view; iEvent.getByToken(probesViewToken_, probes_view); + edm::Handle> probes2_view; iEvent.getByToken(probes2ViewToken_, probes2_view); + edm::Handle> mvas; iEvent.getByToken(mvaToken_, mvas); + edm::Handle> dxys; iEvent.getByToken(dxyToken_, dxys); + edm::Handle> dzs; iEvent.getByToken(dzToken_, dzs); + edm::Handle> leptonMvas; iEvent.getByToken(leptonMvaToken_, leptonMvas); + edm::Handle rhos; iEvent.getByToken(rhoToken_, rhos); + + // prepare vector for output + std::vector sip3dValues; + std::vector leptonMvaValues; + + + std::map> passWorkingPoints; + for(TString wp : workingPoints) passWorkingPoints[wp] = std::vector(); + + double rho = (*rhos); + + size_t i = 0; + for(const auto &probe: *probes){ + edm::RefToBase pp = probes_view->refAt(i); + edm::RefToBase ppLepMVA = probes2_view->refAt(i); // LeptonMVA were added with reference to a different collection. Here we assume that the order or electrons is the same in the two collections (slimmedElectronsWithUserData and slimmedElectronsWithUserDataWithVID), which should be true since they are just clones + + + float ip3d = probe.dB(pat::Electron::PV3D); + float ip3d_err = probe.edB(pat::Electron::PV3D); + float sip3d = ip3d/ip3d_err; + float mva = (*mvas)[pp]; + float dxy = (*dxys)[pp]; + float dz = (*dzs)[pp]; + float mini_iso = probe.userFloat("miniIsoAll")/probe.pt(); + float jetPtRatio = probe.userFloat("ptRatio"); + float jetPtRel = probe.userFloat("ptRel"); + int missingInnerHits = probe.gsfTrack()->hitPattern().numberOfAllHits(reco::HitPattern::MISSING_INNER_HITS); + float leptonMva = (*leptonMvas)[ppLepMVA]; + + + sip3dValues.push_back(sip3d); + leptonMvaValues.push_back(leptonMva); + + passWorkingPoints["ConvVeto"].push_back( probe.passConversionVeto()); + passWorkingPoints["MVAVLooseFO"].push_back( PassMVAVLooseFO(mva, fabs(probe.superCluster()->eta()))); + passWorkingPoints["MVAVLoose"].push_back( PassMVAVLoose( mva, fabs(probe.superCluster()->eta()))); + passWorkingPoints["MVATight"].push_back( PassMVATight( mva, fabs(probe.superCluster()->eta()))); + passWorkingPoints["MVAWP80"].push_back( PassMVAWP80( mva, fabs(probe.superCluster()->eta()))); + passWorkingPoints["MVAWP90"].push_back( PassMVAWP90( mva, fabs(probe.superCluster()->eta()))); + passWorkingPoints["TightIP2D"].push_back( PassTightIP2D(dxy, dz)); + passWorkingPoints["TightIP3D"].push_back( fabs(sip3d) < 4.); + passWorkingPoints["SIP3D4"].push_back( fabs(sip3d) < 4.); + passWorkingPoints["SIP3D8"].push_back( fabs(sip3d) < 8.); + passWorkingPoints["Mini"].push_back( mini_iso < 0.1); + passWorkingPoints["Mini2"].push_back( mini_iso < 0.2); + passWorkingPoints["Mini4"].push_back( mini_iso < 0.4); + passWorkingPoints["IDEmu"].push_back( PassIDEmu(probe)); + passWorkingPoints["ISOEmu"].push_back( PassISOEmu(probe)); + passWorkingPoints["Charge"].push_back( probe.isGsfCtfScPixChargeConsistent()); + passWorkingPoints["IHit0"].push_back( missingInnerHits == 0); + passWorkingPoints["IHit1"].push_back( missingInnerHits <= 1); + passWorkingPoints["MultiIsoM"].push_back( PassMultiIso("M", mini_iso, jetPtRatio, jetPtRel)); + passWorkingPoints["MultiIsoT"].push_back( PassMultiIso("T", mini_iso, jetPtRatio, jetPtRel)); + passWorkingPoints["MultiIsoVT"].push_back( PassMultiIso("VT", mini_iso, jetPtRatio, jetPtRel)); + passWorkingPoints["LeptonMvaM"].push_back( PassLeptonMva("M", leptonMva)); + passWorkingPoints["LeptonMvaVT"].push_back( PassLeptonMva("VT", leptonMva)); + passWorkingPoints["CutBasedVetoNoIso"].push_back( PassCutBased(probe, dxy, dz, missingInnerHits, 0)); + passWorkingPoints["CutBasedLooseNoIso"].push_back( PassCutBased(probe, dxy, dz, missingInnerHits, 1)); + passWorkingPoints["CutBasedMediumNoIso"].push_back(PassCutBased(probe, dxy, dz, missingInnerHits, 2)); + passWorkingPoints["CutBasedTightNoIso"].push_back( PassCutBased(probe, dxy, dz, missingInnerHits, 3)); + passWorkingPoints["CutBasedVetoNoIso94X"].push_back( PassCutBased94X(probe, dxy, dz, missingInnerHits, rho, 0)); + passWorkingPoints["CutBasedLooseNoIso94X"].push_back( PassCutBased94X(probe, dxy, dz, missingInnerHits, rho, 1)); + passWorkingPoints["CutBasedMediumNoIso94X"].push_back(PassCutBased94X(probe, dxy, dz, missingInnerHits, rho, 2)); + passWorkingPoints["CutBasedTightNoIso94X"].push_back( PassCutBased94X(probe, dxy, dz, missingInnerHits, rho, 3)); + + passWorkingPoints["MVAVLooseMini"].push_back( combine(passWorkingPoints, {"MVAVLoose", "Mini"})); + passWorkingPoints["MVAVLooseMini2"].push_back( combine(passWorkingPoints, {"MVAVLoose", "Mini2"})); + passWorkingPoints["MVAVLooseMini4"].push_back( combine(passWorkingPoints, {"MVAVLoose", "Mini4"})); + passWorkingPoints["Loose2D"].push_back( combine(passWorkingPoints, {"MVAVLoose", "TightIP2D"})); + passWorkingPoints["FOID2D"].push_back( combine(passWorkingPoints, {"MVAVLooseFO", "IDEmu", "TightIP2D"})); + passWorkingPoints["Tight2D3D"].push_back( combine(passWorkingPoints, {"MVATight", "TightIP2D", "SIP3D4"})); + passWorkingPoints["TightID2D3D"].push_back( combine(passWorkingPoints, {"MVATight", "IDEmu", "TightIP2D", "SIP3D4"})); + passWorkingPoints["CutBasedStopsDilepton"].push_back( combine(passWorkingPoints, {"CutBasedTightNoIso", "TightIP2D", "SIP3D4"})); + passWorkingPoints["ConvIHit1"].push_back( combine(passWorkingPoints, {"ConvVeto","IHit1"})); + passWorkingPoints["ConvIHit0"].push_back( combine(passWorkingPoints, {"ConvVeto","IHit0"})); + passWorkingPoints["ConvIHit0Chg"].push_back( combine(passWorkingPoints, {"ConvIHit0", "Charge"})); + passWorkingPoints["TightConvIHit0"].push_back( combine(passWorkingPoints, {"Tight2D3D", "ConvVeto","IHit0"})); + passWorkingPoints["MultiIsoEmu"].push_back( combine(passWorkingPoints, {"MultiIsoT", "ISOEmu"})); + passWorkingPoints["CutBasedMediumMini"].push_back( combine(passWorkingPoints, {"CutBasedMediumNoIso", "Mini"})); + passWorkingPoints["CutBasedTightMini"].push_back( combine(passWorkingPoints, {"CutBasedTightNoIso", "Mini"})); + passWorkingPoints["CutBasedMediumMini94X"].push_back( combine(passWorkingPoints, {"CutBasedMediumNoIso94X", "Mini"})); + passWorkingPoints["CutBasedTightMini94X"].push_back( combine(passWorkingPoints, {"CutBasedTightNoIso94X", "Mini"})); + passWorkingPoints["LeptonMvaVTIDEmuTightIP2DSIP3D8miniIso04"].push_back(combine(passWorkingPoints, {"LeptonMvaVT", "IDEmu", "TightIP2D", "SIP3D8", "Mini4"})); + passWorkingPoints["LeptonMvaMIDEmuTightIP2DSIP3D8miniIso04"].push_back( combine(passWorkingPoints, {"LeptonMvaM", "IDEmu", "TightIP2D", "SIP3D8", "Mini4"})); + + ++i; + } + + writeValueMap(iEvent, probes, sip3dValues, "sip3d"); + writeValueMap(iEvent, probes, leptonMvaValues, "electronMVATTH"); + + for(TString wp : workingPoints){ + writeValueMap(iEvent, probes, passWorkingPoints[wp], ("pass" + wp).Data()); + } +} + + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(SusyElectronVariableHelper); diff --git a/plugins/VpTFilter.cc b/plugins/VpTFilter.cc new file mode 100644 index 00000000000..c1811cd44bc --- /dev/null +++ b/plugins/VpTFilter.cc @@ -0,0 +1,74 @@ +#include "DataFormats/Common/interface/Handle.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDFilter.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/EDGetToken.h" +#include "FWCore/Utilities/interface/InputTag.h" +#include "Math/Vector4D.h" +#include "Math/Vector4Dfwd.h" +#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" +#include +#include +#include + +// +// class declaration +// + +class VpTFilter : public edm::global::EDFilter<> { +public: + explicit VpTFilter(const edm::ParameterSet&); + +private: + bool filter(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; + + // ----------member data --------------------------- + + const edm::EDGetTokenT src_; + const double vptMin_; // number of particles required to pass filter + const double vptMax_; // number of particles required to pass filter +}; + +VpTFilter::VpTFilter(const edm::ParameterSet& iConfig) + : src_(consumes(iConfig.getParameter("src"))), + vptMin_(iConfig.getParameter("VpTMin")), + vptMax_(iConfig.getParameter("VpTMax")) {} + +// ------------ method called to skim the data ------------ +bool VpTFilter::filter(edm::StreamID, edm::Event& iEvent, const edm::EventSetup&) const { + edm::Handle EvtHandle; + iEvent.getByToken(src_, EvtHandle); + + std::vector const& lheParticles = EvtHandle->hepeup().PUP; + std::vector lepCands; + for (unsigned int i = 0; i < lheParticles.size(); ++i) { + if (EvtHandle->hepeup().ISTUP[i] != 1) { // keep only outgoing particles + continue; + } + unsigned absPdgId = std::abs(EvtHandle->hepeup().IDUP[i]); + if (absPdgId >= 11 && absPdgId <= 16) { + lepCands.push_back( + ROOT::Math::PxPyPzEVector(lheParticles[i][0], lheParticles[i][1], lheParticles[i][2], lheParticles[i][3])); + } + } + double vpt_ = -1; + if (lepCands.size() == 2) { + vpt_ = (lepCands[0] + lepCands[1]).pt(); + } + + if (vpt_<=vptMax_ && vpt_>=vptMin_) { + // std::cout<<"true"< +void writeValueMap(edm::Event& iEvent, const edm::Handle& handle, const std::vector& values, const std::string& label) { + auto valMap = std::make_unique>(); + typename edm::ValueMap::Filler filler(*valMap); + filler.insert(handle, values.begin(), values.end()); + filler.fill(); + iEvent.put(std::move(valMap), label); +} + +#endif diff --git a/plugins/isolations.h b/plugins/isolations.h new file mode 100644 index 00000000000..5dd7eb18acb --- /dev/null +++ b/plugins/isolations.h @@ -0,0 +1,31 @@ +#ifndef EgammaIsolationAlgos_isolations_h +#define EgammaIsolationAlgos_isolations_h + +#include "DataFormats/PatCandidates/interface/PackedCandidate.h" + +#include + +template +std::vector computePfLeptonIsolations(CandidateContainer const& targetCandidates, + edm::View const& pfCandidates){ + + std::vector leptonIsolations(targetCandidates.size()); + for(auto const& pfcand : pfCandidates) { + auto absPdg = std::abs(pfcand.pdgId()); + auto pfPackedCand = dynamic_cast(pfcand); + if(!(absPdg==11 || absPdg==13) || pfPackedCand.fromPV() < pat::PackedCandidate::PVTight){ + continue; + } + for(unsigned int i = 0; i < targetCandidates.size(); ++i) { + auto dR = std::abs(ROOT::Math::VectorUtil::DeltaR(pfcand.p4(), targetCandidates[i].p4())); + // lower dR threshold to avoid adding itself + if (dR <= 0.3 && dR >= 0.0005){ + leptonIsolations[i] += pfcand.p4().pt(); + } + } + } + + return leptonIsolations; +} + +#endif diff --git a/python/.TnPTreeProducer_cfg.py.swp b/python/.TnPTreeProducer_cfg.py.swp new file mode 100644 index 00000000000..e69de29bb2d diff --git a/python/Identification/cutBasedDoubleElectronHLTPreselecition_Summer16_V1_cff.py b/python/Identification/cutBasedDoubleElectronHLTPreselecition_Summer16_V1_cff.py new file mode 100644 index 00000000000..929cff2e5b6 --- /dev/null +++ b/python/Identification/cutBasedDoubleElectronHLTPreselecition_Summer16_V1_cff.py @@ -0,0 +1,145 @@ +from PhysicsTools.SelectorUtils.centralIDRegistry import central_id_registry + +import FWCore.ParameterSet.Config as cms + +# Common functions and classes for ID definition are imported here: +from RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_tools import * + + +class DoubleEleHLTSelection_V1: + """ + This is a container class to hold numerical cut values for either + the barrel or endcap set of cuts for electron cut-based HLT-safe preselection + """ + + def __init__( + self, + idName, + full5x5_sigmaIEtaIEtaCut, + dEtaInSeedCut, + dPhiInCut, + hOverECut, + absEInverseMinusPInverseCut, + # isolations + ecalPFClusterIsoCut, + hcalPFClusterIsoCut, + trkIsoCut, + ): + self.idName = idName + self.full5x5_sigmaIEtaIEtaCut = full5x5_sigmaIEtaIEtaCut + self.dEtaInSeedCut = dEtaInSeedCut + self.dPhiInCut = dPhiInCut + self.hOverECut = hOverECut + self.absEInverseMinusPInverseCut = absEInverseMinusPInverseCut + self.ecalPFClusterIsoCut = ecalPFClusterIsoCut + self.hcalPFClusterIsoCut = hcalPFClusterIsoCut + self.trkIsoCut = trkIsoCut + + +def psetSimpleEcalPFClusterIsoCut(wpEB, wpEE): + return cms.PSet( + cutName=cms.string("PatEleEBEECut"), + cutString=cms.string("ecalPFClusterIso/pt"), + cutValueEB=cms.double(wpEB.ecalPFClusterIsoCut), + cutValueEE=cms.double(wpEE.ecalPFClusterIsoCut), + needsAdditionalProducts=cms.bool(False), + isIgnored=cms.bool(False), + ) + + +def psetSimpleHcalPFClusterIsoCut(wpEB, wpEE): + return cms.PSet( + cutName=cms.string("PatEleEBEECut"), + cutString=cms.string("hcalPFClusterIso/pt"), + cutValueEB=cms.double(wpEB.hcalPFClusterIsoCut), + cutValueEE=cms.double(wpEE.hcalPFClusterIsoCut), + needsAdditionalProducts=cms.bool(False), + isIgnored=cms.bool(False), + ) + + +def psetSimpleTrackIsoCut(wpEB, wpEE): + return cms.PSet( + cutName=cms.string("PatEleEBEECut"), + cutString=cms.string("dr03TkSumPt/pt"), + cutValueEB=cms.double(wpEB.trkIsoCut), + cutValueEE=cms.double(wpEE.trkIsoCut), + needsAdditionalProducts=cms.bool(False), + isIgnored=cms.bool(False), + ) + + +def configureVIDCutBasedDoubleEleHLTPreselection_V1(wpEB, wpEE): + parameterSet = cms.PSet( + idName=cms.string(wpEB.idName), # same name stored in the _EB and _EE objects + cutFlow=cms.VPSet( + psetMinPtCut(), # min pt cut + psetPhoSCEtaMultiRangeCut(), # eta cut + psetPhoFull5x5SigmaIEtaIEtaCut(wpEB, wpEE), # full 5x5 sigmaIEtaIEta cut + psetDEtaInSeedCut(wpEB, wpEE), # dEtaIn seed cut + psetDPhiInCut(wpEB, wpEE), # dPhiIn cut + psetHadronicOverEMCut(wpEB, wpEE), # H/E cut + psetEInerseMinusPInverseCut(wpEB, wpEE), # |1/e-1/p| cut + psetSimpleEcalPFClusterIsoCut(wpEB, wpEE), # ECAL PF Cluster isolation + psetSimpleHcalPFClusterIsoCut(wpEB, wpEE), # HCAL PF Cluster isolation + psetSimpleTrackIsoCut(wpEB, wpEE), # tracker isolation cut + ), + ) + # + return parameterSet + + +# +# This file implements the cuts linked in this file in the line with the text +# "For double electron HLT triggers, one available offline emulation is...": +# https://twiki.cern.ch/twiki/bin/view/CMS/CutBasedElectronIdentificationRun2#HLT_safe_selection_for_2016_data +# + +# Veto working point Barrel and Endcap +idName = "cutBasedDoubleElectronHLTPreselection-Summer16-V1" +WP_HLTSafe_EB = DoubleEleHLTSelection_V1( + idName, # idName + 0.011, # full5x5_sigmaIEtaIEtaCut + 0.01, # dEtaInSeedCut + 0.04, # dPhiInCut + 0.08, # hOverECut + 0.01, # absEInverseMinusPInverseCut + # Calorimeter isolations: + 0.45, # ecalPFClusterIsoCut + 0.25, # hcalPFClusterIsoCut + # Tracker isolation: + 0.2, # trkIsoCut +) + +WP_HLTSafe_EE = DoubleEleHLTSelection_V1( + idName, # idName + 0.031, # full5x5_sigmaIEtaIEtaCut + 0.01, # dEtaInSeedCut - no cut + 0.08, # dPhiInCut - no cut + 0.08, # hOverECut + 0.01, # absEInverseMinusPInverseCut + # Calorimeter isolations: + 0.45, # ecalPFClusterIsoCut + 0.25, # hcalPFClusterIsoCut + # Tracker isolation: + 0.2, # trkIsoCut +) + + +# +# Set up VID configuration for all cuts and working points +# +cutBasedDoubleElectronHLTPreselection_Summer16_V1 = configureVIDCutBasedDoubleEleHLTPreselection_V1( + WP_HLTSafe_EB, WP_HLTSafe_EE +) + + +# The MD5 sum numbers below reflect the exact set of cut variables +# and values above. If anything changes, one has to +# 1) comment out the lines below about the registry, +# 2) run "calculateMD5 +# 3) update the MD5 sum strings below and uncomment the lines again. +# + +### for now until we have a database... +cutBasedDoubleElectronHLTPreselection_Summer16_V1.isPOGApproved = cms.untracked.bool(True) diff --git a/python/TnPTreeProducer_cfg.py b/python/TnPTreeProducer_cfg.py index 03841243250..3823e054658 100644 --- a/python/TnPTreeProducer_cfg.py +++ b/python/TnPTreeProducer_cfg.py @@ -1,309 +1,518 @@ import FWCore.ParameterSet.Config as cms from FWCore.ParameterSet.VarParsing import VarParsing -import sys - -process = cms.Process("tnpEGM") +from EgammaAnalysis.TnPTreeProducer.logger import getLogger +from EgammaAnalysis.TnPTreeProducer.cmssw_version import isReleaseAbove +from Configuration.AlCa.GlobalTag import GlobalTag +import EgammaAnalysis.TnPTreeProducer.pileupConfiguration_cff as pileUpSetup +import EgammaAnalysis.TnPTreeProducer.egmTreesContent_cff as tnpVars +import EgammaAnalysis.TnPTreeProducer.egmTreesSetup_cff as tnpSetup ################################################################### -## argument line options +# argument line options ################################################################### -varOptions = VarParsing('analysis') -varOptions.register( - "isMC", True, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Compute MC efficiencies" - ) - -varOptions.register( - "doEleID", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Include tree for photon ID SF" +varOptions = VarParsing("analysis") + + +def registerOption( + optionName, defaultValue, description, optionType=VarParsing.varType.bool +): + varOptions.register( + optionName, + defaultValue, + VarParsing.multiplicity.singleton, + optionType, + description, ) -varOptions.register( - "doPhoID", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Include tree for photon ID SF" - ) - -varOptions.register( - "doTrigger", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Include tree for Trigger SF" - ) - -varOptions.register( - "doRECO", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "Include tree for Reco SF" - ) - -varOptions.register( - "calibEn", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - - "use EGM smearer to calibrate photon and electron energy" - ) -varOptions.register( - "isAOD", False, - VarParsing.multiplicity.singleton, - VarParsing.varType.bool, - "switch to run other AOD (for RECO SFs)" - ) +registerOption("isMC", False, "Use MC instead of data") +registerOption("isAOD", False, "Use AOD samples instead of miniAOD") +registerOption("is80X", False, "Compatibility to run on old 80X files") +registerOption("doEleID", True, "Include tree for electron ID SF") +registerOption("doPhoID", False, "Include tree for photon ID SF") +registerOption("doTrigger", True, "Include tree for trigger SF") +registerOption("doRECO", False, "Include tree for Reco SF (requires AOD)") +registerOption( + "calibEn", False, "Use EGM smearer to calibrate photon and electron energy" +) +registerOption("includeSUSY", False, "Add also the variables used by SUSY") + +registerOption( + "HLTname", + "HLT", + "HLT process name (default HLT)", + optionType=VarParsing.varType.string, +) # HLTname was HLT2 in now outdated reHLT samples +registerOption( + "GT", "auto", "Global Tag to be used", optionType=VarParsing.varType.string +) +registerOption( + "era", + "2018", + "Data-taking era: 2016, 2017, 2018, UL2017 or UL2018", + optionType=VarParsing.varType.string, +) +registerOption( + "logLevel", + "INFO", + "Loglevel: could be DEBUG, INFO, WARNING, ERROR", + optionType=VarParsing.varType.string, +) + +registerOption( + "L1Threshold", + 0, + "Threshold for L1 matched objects", + optionType=VarParsing.varType.int, +) -#### HLTname is HLT2 in reHLT samples -varOptions.register( - "HLTname", "HLT", - VarParsing.multiplicity.singleton, - VarParsing.varType.string, - "HLT process name (default HLT)" - ) +varOptions.parseArguments() -varOptions.register( - "GT","auto", - VarParsing.multiplicity.singleton, - VarParsing.varType.string, - "Global Tag to be used" +################################################################### +# Some sanity checks +################################################################### +log = getLogger(varOptions.logLevel) +if varOptions.isAOD and varOptions.doEleID: + log.warning("AOD is not supported for doEleID, please consider using miniAOD") +if varOptions.isAOD and varOptions.doPhoID: + log.warning("AOD is not supported for doPhoID, please consider using miniAOD") +if varOptions.isAOD and varOptions.doTrigger: + log.warning("AOD is not supported for doTrigger, please consider using miniAOD") +if not varOptions.isAOD and varOptions.doRECO: + log.warning("miniAOD is not supported for doRECO, please consider using AOD") + +if varOptions.era not in ["2016", "2017", "2018", "UL2016preVFP", "UL2016postVFP", "UL2017", "UL2018"]: + log.error("%s is not a valid era" % varOptions.era) +if ("UL" in varOptions.era) != (isReleaseAbove(10, 6)): + log.error( + "Inconsistent release for era %s. Use CMSSW_10_6_X for UL and CMSSW_10_2_X for rereco" + % varOptions.era ) - - -varOptions.parseArguments() +if varOptions.includeSUSY: + log.info("Including variables for SUSY") +if varOptions.doEleID: + log.info("Producing electron SF tree") +if varOptions.doPhoID: + log.info("Producing photon SF tree") +if varOptions.doTrigger: + log.info("Producing HLT (trigger ele) efficiency tree") +if varOptions.doRECO: + log.info("Producing RECO SF tree") ################################################################### -## Define TnP inputs +# Define TnP inputs ################################################################### options = dict() -options['useAOD'] = cms.bool(varOptions.isAOD) - -options['HLTProcessName'] = varOptions.HLTname - -### set input collections -options['ELECTRON_COLL'] = "slimmedElectrons" -options['PHOTON_COLL'] = "slimmedPhotons" -options['SUPERCLUSTER_COLL'] = "reducedEgamma:reducedSuperClusters" ### not used in AOD -if options['useAOD']: - options['ELECTRON_COLL'] = "gedGsfElectrons" - options['PHOTON_COLL' ] = "gedPhotons" - - -options['ELECTRON_CUTS'] = "ecalEnergy*sin(superClusterPosition.theta)>5.0 && (abs(-log(tan(superClusterPosition.theta/2)))<2.5)" -options['SUPERCLUSTER_CUTS'] = "abs(eta)<2.5 && et>5.0" -options['PHOTON_CUTS'] = "(abs(-log(tan(superCluster.position.theta/2)))<=2.5) && pt> 10" -options['ELECTRON_TAG_CUTS'] = "(abs(-log(tan(superCluster.position.theta/2)))<=2.1) && !(1.4442<=abs(-log(tan(superClusterPosition.theta/2)))<=1.566) && pt >= 30.0" - -options['MAXEVENTS'] = cms.untracked.int32(varOptions.maxEvents) -options['DoTrigger'] = cms.bool( varOptions.doTrigger ) -options['DoRECO'] = cms.bool( varOptions.doRECO ) -options['DoEleID'] = cms.bool( varOptions.doEleID ) -options['DoPhoID'] = cms.bool( varOptions.doPhoID ) - -options['OUTPUTEDMFILENAME'] = 'edmFile.root' -options['DEBUG'] = cms.bool(False) -options['isMC'] = cms.bool(False) -options['UseCalibEn'] = varOptions.calibEn - -if (varOptions.isMC): - options['isMC'] = cms.bool(True) - options['OUTPUT_FILE_NAME'] = "TnPTree_mc.root" - if varOptions.isAOD : options['OUTPUT_FILE_NAME'] = "TnPTree_mc_aod.root" -# options['TnPPATHS'] = cms.vstring("HLT*") -# options['TnPHLTTagFilters'] = cms.vstring() -# options['TnPHLTProbeFilters'] = cms.vstring() -# options['HLTFILTERTOMEASURE'] = cms.vstring("") - options['TnPPATHS'] = cms.vstring("HLT_Ele27_eta2p1_WPTight_Gsf_v*") - options['TnPHLTTagFilters'] = cms.vstring("hltEle27erWPTightGsfTrackIsoFilter") - options['TnPHLTProbeFilters'] = cms.vstring() - options['HLTFILTERTOMEASURE'] = cms.vstring("hltEle27erWPTightGsfTrackIsoFilter") - options['GLOBALTAG'] = 'auto:run2_mc' +options["useAOD"] = varOptions.isAOD +options["use80X"] = varOptions.is80X + +options["HLTProcessName"] = varOptions.HLTname +options["era"] = varOptions.era + +options["ELECTRON_COLL"] = ( + "gedGsfElectrons" if options["useAOD"] else "slimmedElectrons" +) +options["PHOTON_COLL"] = "gedPhotons" if options["useAOD"] else "slimmedPhotons" +options["SUPERCLUSTER_COLL"] = "reducedEgamma:reducedSuperClusters" # not used in AOD + +options["ELECTRON_CUTS"] = "ecalEnergy*sin(superClusterPosition.theta)>5.0 && (abs(-log(tan(superClusterPosition.theta/2)))<2.5)" +options["SUPERCLUSTER_CUTS"] = "abs(eta)<2.5 && et>5.0" +options["PHOTON_CUTS"] = "(abs(-log(tan(superCluster.position.theta/2)))<=2.5) && pt> 10" +options["ELECTRON_TAG_CUTS"] = "(abs(-log(tan(superCluster.position.theta/2)))<=2.1) && !(1.4442<=abs(-log(tan(superClusterPosition.theta/2)))<=1.566) && pt >= 30.0" + +options["MAXEVENTS"] = cms.untracked.int32(varOptions.maxEvents) +options["DoTrigger"] = varOptions.doTrigger +options["DoRECO"] = varOptions.doRECO +options["DoEleID"] = varOptions.doEleID +options["DoPhoID"] = varOptions.doPhoID + +options["DEBUG"] = False +options["isMC"] = varOptions.isMC +options["UseCalibEn"] = varOptions.calibEn +options["addSUSY"] = varOptions.includeSUSY and not options["useAOD"] + +options["OUTPUT_FILE_NAME"] = "TnPTree_%s.root" % ("mc" if options["isMC"] else "data") + +################################################# +# Settings for global tag +################################################# +if varOptions.GT == "auto": + if options["isMC"]: + if options["era"] == "2016": + options["GLOBALTAG"] = "94X_mcRun2_asymptotic_v3" + if options["era"] == "2017": + options["GLOBALTAG"] = "94X_mc2017_realistic_v17" + if options["era"] == "2018": + options["GLOBALTAG"] = "102X_upgrade2018_realistic_v21" + if options['era'] == 'UL2016preVFP': + options['GLOBALTAG'] = '106X_mcRun2_asymptotic_preVFP_v11' + if options['era'] == 'UL2016postVFP': + options['GLOBALTAG'] = '106X_mcRun2_asymptotic_v17' + if options["era"] == "UL2017": + options["GLOBALTAG"] = "106X_mc2017_realistic_v8" + if options["era"] == "UL2018": + options["GLOBALTAG"] = "106X_upgrade2018_realistic_v15_L1v1" + else: + if options["era"] == "2016": + options["GLOBALTAG"] = "94X_dataRun2_v10" + if options["era"] == "2017": + options["GLOBALTAG"] = "94X_dataRun2_v11" + if options["era"] == "2018": + options["GLOBALTAG"] = "102X_dataRun2_v13" + if options['era'] == 'UL2016preVFP': + options['GLOBALTAG'] = '106X_dataRun2_v35' + if options['era'] == 'UL2016postVFP': + options['GLOBALTAG'] = '106X_dataRun2_v35' + if options["era"] == "UL2017": + options["GLOBALTAG"] = "106X_dataRun2_v35" + if options["era"] == "UL2018": + options["GLOBALTAG"] = "106X_dataRun2_v35" else: - options['OUTPUT_FILE_NAME'] = "TnPTree_data.root" - options['TnPPATHS'] = cms.vstring("HLT_Ele27_eta2p1_WPTight_Gsf_v*") - options['TnPHLTTagFilters'] = cms.vstring("hltEle27erWPTightGsfTrackIsoFilter") - options['TnPHLTProbeFilters'] = cms.vstring() - options['HLTFILTERTOMEASURE'] = cms.vstring("hltEle27erWPTightGsfTrackIsoFilter") - options['GLOBALTAG'] = 'auto:run2_data' - -if varOptions.GT != "auto" : - options['GLOBALTAG'] = varOptions.GT + options["GLOBALTAG"] = varOptions.GT + +################################################# +# Settings for trigger tag and probe measurement +################################################# +if "2016" in options["era"]: + options["TnPPATHS"] = cms.vstring("HLT_Ele27_eta2p1_WPTight_Gsf_v*") + options["TnPHLTTagFilters"] = cms.vstring("hltEle27erWPTightGsfTrackIsoFilter") + options["TnPHLTProbeFilters"] = cms.vstring() + options["HLTFILTERSTOMEASURE"] = { + "passHltEle27WPTightGsf": cms.vstring("hltEle27WPTightGsfTrackIsoFilter"), + "passHltEle115CaloIdVTGsfTrkIdTGsf": cms.vstring( + "hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter" + ), + "passHltPhoton175": cms.vstring("hltEG175HEFilter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg1L1match" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg1Filter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg2" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg2Filter"), + # "passHltDoubleEle33CaloIdLMWSeedLegL1match" : cms.vstring("hltEG33CaloIdLMWPMS2Filter"), + # "passHltDoubleEle33CaloIdLMWUnsLeg" : cms.vstring("hltDiEle33CaloIdLMWPMS2UnseededFilter"), + } # Some examples, you can add multiple filters (or OR's of filters, note the vstring) here, each of them will be added to the tuple + +elif "2017" in options["era"]: + options["TnPPATHS"] = cms.vstring("HLT_Ele32_WPTight_Gsf_L1DoubleEG_v*") + options["TnPHLTTagFilters"] = cms.vstring( + "hltEle32L1DoubleEGWPTightGsfTrackIsoFilter", "hltEGL1SingleEGOrFilter" + ) + options["TnPHLTProbeFilters"] = cms.vstring() + options[ + "HLTFILTERSTOMEASURE" + ] = { # "passHltEle32DoubleEGWPTightGsf" : cms.vstring("hltEle32L1DoubleEGWPTightGsfTrackIsoFilter"), + # "passEGL1SingleEGOr" : cms.vstring("hltEGL1SingleEGOrFilter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg1L1match" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg1Filter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg2" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg2Filter"), + # "passHltDoubleEle33CaloIdLMWSeedLegL1match" : cms.vstring("hltEle33CaloIdLMWPMS2Filter"), + # "passHltDoubleEle33CaloIdLMWUnsLeg" : cms.vstring("hltDiEle33CaloIdLMWPMS2UnseededFilter"), + "passHltEle35WPTightGsf": cms.vstring("hltEle35noerWPTightGsfTrackIsoFilter"), + "passHltEle115CaloIdVTGsfTrkIdTGsf": cms.vstring( + "hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter" + ), + "passHltPhoton200": cms.vstring("hltEG200HEFilter"), + } + +elif "2018" in options["era"]: + options["TnPPATHS"] = cms.vstring("HLT_Ele32_WPTight_Gsf_v*") + options["TnPHLTTagFilters"] = cms.vstring("hltEle32WPTightGsfTrackIsoFilter") + options["TnPHLTProbeFilters"] = cms.vstring() + options["HLTFILTERSTOMEASURE"] = { + "passHltEle32WPTightGsf": cms.vstring("hltEle32WPTightGsfTrackIsoFilter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg1L1match" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg1Filter"), + # "passHltEle23Ele12CaloIdLTrackIdLIsoVLLeg2" : cms.vstring("hltEle23Ele12CaloIdLTrackIdLIsoVLTrackIsoLeg2Filter"), + # "passHltDoubleEle33CaloIdLMWSeedLegL1match" : cms.vstring("hltEle33CaloIdLMWPMS2Filter"), + # "passHltDoubleEle33CaloIdLMWUnsLeg" : cms.vstring("hltDiEle33CaloIdLMWPMS2UnseededFilter"), + "passHltEle115CaloIdVTGsfTrkIdTGsf": cms.vstring( + "hltEle115CaloIdVTGsfTrkIdTGsfDphiFilter" + ), + "passHltPhoton200": cms.vstring("hltEG200HEFilter"), + } + +# Apply L1 matching (using L1Threshold) when flag contains "L1match" in name +options["ApplyL1Matching"] = any( + ["L1match" in flag for flag in options["HLTFILTERSTOMEASURE"].keys()] +) +options["L1Threshold"] = varOptions.L1Threshold ################################################################### -## Define input files for test local run +# Define input files for test local run ################################################################### -from EgammaAnalysis.TnPTreeProducer.etc.tnpInputTestFiles_cff import filesMiniAOD_23Sep2016 as inputs -if options['useAOD'] : from EgammaAnalysis.TnPTreeProducer.etc.tnpInputTestFiles_cff import filesAOD_23Sep2016 as inputs - -options['INPUT_FILE_NAME'] = inputs['data'] -if varOptions.isMC: options['INPUT_FILE_NAME'] = inputs['mc'] +importTestFiles = ( + "from EgammaAnalysis.TnPTreeProducer.etc.tnpInputTestFiles_cff import files%s_%s as inputs" + % ("AOD" if options["useAOD"] else "MiniAOD", options["era"]) +) +exec(importTestFiles) +options["INPUT_FILE_NAME"] = inputs["mc" if options["isMC"] else "data"] ################################################################### -## import TnP tree maker pythons and configure for AODs +# Standard imports, GT and pile-up ################################################################### +process = cms.Process("tnpEGM") process.load("Configuration.StandardSequences.MagneticField_AutoFromDBCurrent_cff") process.load("Configuration.Geometry.GeometryRecoDB_cff") -#process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") -process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') +process.load( + "Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff" +) process.load("Configuration.StandardSequences.GeometryRecoDB_cff") process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") -process.load('Configuration.StandardSequences.Services_cff') -process.load('FWCore.MessageService.MessageLogger_cfi') +process.load("Configuration.StandardSequences.Services_cff") +process.load("FWCore.MessageService.MessageLogger_cfi") -from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, options['GLOBALTAG'] , '') -import EgammaAnalysis.TnPTreeProducer.egmTreesSetup_cff as tnpSetup -tnpSetup.setupTreeMaker(process,options) +process.GlobalTag = GlobalTag(process.GlobalTag, options["GLOBALTAG"], "") + +pileUpSetup.setPileUpConfiguration(process, options) ################################################################### -## Init and Load +# Import tnpVars to store in tree and configure for AOD ################################################################### -process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(False) ) -process.MessageLogger.cerr.threshold = '' +if options["useAOD"]: + tnpVars.setupTnPVariablesForAOD() +mcTruthCommonStuff = tnpVars.getTnPVariablesForMCTruth(options["isMC"]) + +################################################################### +# Import Tnp setup +################################################################### + +tnpSetup.setupTreeMaker(process, options) + +################################################################### +# If miniAOD, adding some leptonMva versions, as well +# as some advanced input variables like miniIso +################################################################### +if not options["useAOD"]: + from EgammaAnalysis.TnPTreeProducer.leptonMva_cff import leptonMvaSequence + + process.init_sequence += leptonMvaSequence(process, options, tnpVars) + +################################################################### +# Init and Load +################################################################### +process.options = cms.untracked.PSet(wantSummary=cms.untracked.bool(True)) +#<<<<<<< HEAD + # SkipEvent = cms.untracked.vstring('ProductNotFound')) +#ERROR== CMSSW: ----- Begin Fatal Exception 21-Dec-2022 12:50:27 CST----------------------- +#== CMSSW: An exception of category 'ProductNotFound' occurred while +#== CMSSW: [0] Processing Event run: 1 lumi: 3690 event: 9222513 stream: 0 +#== CMSSW: [1] Running path 'p' +#== CMSSW: [2] Calling method for module VpTFilter/'VpTFilter' +#== CMSSW: Exception Message: +#== CMSSW: Principal::getByToken: Found zero products matching all criteria +#== CMSSW: Looking for type: LHEEventProduct +#== CMSSW: Looking for module label: EvtHandle +#== CMSSW: Looking for productInstanceName: +#== CMSSW: +#== CMSSW: Additional Info: +#== CMSSW: [a] If you wish to continue processing events after a ProductNotFound exception, +#== CMSSW: add "SkipEvent = cms.untracked.vstring('ProductNotFound')" to the "options" PSet in the configuration. +#== CMSSW: +#== CMSSW: ----- End Fatal Exception ------------------------------------------------- +#== CMSSW: 21-Dec-2022 12:50:27 CST Closed file /cms/store/mc/RunIISummer20UL16MiniAODv2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/106X_mcRun2_asymptotic_v17-v1/2520000/04A698D5-2AF9-B548-9A6D-DB5AFE92F0A6.root +#======= +#>>>>>>> d23131fd54f318eb3e0d49c8f725450c32175d50 + +process.MessageLogger.cerr.threshold = "" process.MessageLogger.cerr.FwkReport.reportEvery = 1000 -process.source = cms.Source("PoolSource", - fileNames = options['INPUT_FILE_NAME'], - ) -process.maxEvents = cms.untracked.PSet( input = options['MAXEVENTS']) +process.source = cms.Source("PoolSource", fileNames=options["INPUT_FILE_NAME"]) +process.maxEvents = cms.untracked.PSet(input=options["MAXEVENTS"]) -if options['DoTrigger'] : print " -- Producing HLT (trigger ele) efficiency tree -- " -if options['DoRECO'] : print " -- Producing RECO SF tree -- " -if options['DoEleID'] : print " -- Producing electron SF tree -- " -if options['DoPhoID'] : print " -- Producing photon SF tree -- " - ################################################################### -## Define sequences and TnP pairs +# Define sequences and TnP pairs ################################################################### -process.cand_sequence = cms.Sequence( process.init_sequence + process.tag_sequence ) -if options['DoEleID'] or options['DoTrigger'] : process.cand_sequence += process.ele_sequence -if options['DoPhoID'] : process.cand_sequence += process.pho_sequence -if options['DoTrigger'] : process.cand_sequence += process.hlt_sequence -if options['DoRECO'] : process.cand_sequence += process.sc_sequence +process.cand_sequence = cms.Sequence(process.init_sequence + process.tag_sequence) +if options["DoEleID"] or options["DoTrigger"]: + process.cand_sequence += process.ele_sequence +if options["DoPhoID"]: + process.cand_sequence += process.pho_sequence +if options["DoTrigger"]: + process.cand_sequence += process.hlt_sequence +if options["DoRECO"]: + process.cand_sequence += process.sc_sequence process.tnpPairs_sequence = cms.Sequence() -if options['DoTrigger'] : process.tnpPairs_sequence *= process.tnpPairingEleHLT -if options['DoRECO'] : process.tnpPairs_sequence *= process.tnpPairingEleRec -if options['DoEleID'] : process.tnpPairs_sequence *= process.tnpPairingEleIDs -if options['DoPhoID'] : process.tnpPairs_sequence *= process.tnpPairingPhoIDs +if options["DoTrigger"]: + process.tnpPairs_sequence *= process.tnpPairingEleHLT +if options["DoRECO"]: + process.tnpPairs_sequence *= process.tnpPairingEleRec +if options["DoEleID"]: + process.tnpPairs_sequence *= process.tnpPairingEleIDs +if options["DoPhoID"]: + process.tnpPairs_sequence *= process.tnpPairingPhoIDs ########################################################################## -## TnP Trees +# TnP Trees ########################################################################## -import EgammaAnalysis.TnPTreeProducer.egmTreesContent_cff as tnpVars -if options['useAOD']: tnpVars.setupTnPVariablesForAOD() -tnpVars.mcTruthCommonStuff.isMC = cms.bool(varOptions.isMC) - -process.tnpEleTrig = cms.EDAnalyzer("TagProbeFitTreeProducer", - tnpVars.CommonStuffForGsfElectronProbe, tnpVars.mcTruthCommonStuff, - tagProbePairs = cms.InputTag("tnpPairingEleHLT"), - probeMatches = cms.InputTag("genProbeEle"), - allProbes = cms.InputTag("probeEle"), - flags = cms.PSet( - passingHLT = cms.InputTag("probeElePassHLT"), - passingLoose80X = cms.InputTag("probeEleCutBasedLoose80X" ), - passingMedium80X = cms.InputTag("probeEleCutBasedMedium80X"), - passingTight80X = cms.InputTag("probeEleCutBasedTight80X" ), - ), - ) - -process.tnpEleReco = cms.EDAnalyzer("TagProbeFitTreeProducer", - tnpVars.mcTruthCommonStuff, tnpVars.CommonStuffForSuperClusterProbe, - tagProbePairs = cms.InputTag("tnpPairingEleRec"), - probeMatches = cms.InputTag("genProbeSC"), - allProbes = cms.InputTag("probeSC"), - flags = cms.PSet(passingRECO = cms.InputTag("probeSCEle", "superclusters") ), - ) - -process.tnpEleIDs = cms.EDAnalyzer("TagProbeFitTreeProducer", - tnpVars.mcTruthCommonStuff, tnpVars.CommonStuffForGsfElectronProbe, - tagProbePairs = cms.InputTag("tnpPairingEleIDs"), - probeMatches = cms.InputTag("genProbeEle"), - allProbes = cms.InputTag("probeEle"), - flags = cms.PSet( - passingVeto = cms.InputTag("probeEleCutBasedVeto" ), - passingLoose = cms.InputTag("probeEleCutBasedLoose" ), - passingMedium = cms.InputTag("probeEleCutBasedMedium"), - passingTight = cms.InputTag("probeEleCutBasedTight" ), - passingVeto80X = cms.InputTag("probeEleCutBasedVeto80X" ), - passingLoose80X = cms.InputTag("probeEleCutBasedLoose80X" ), - passingMedium80X = cms.InputTag("probeEleCutBasedMedium80X"), - passingTight80X = cms.InputTag("probeEleCutBasedTight80X" ), - passingMVA80Xwp90 = cms.InputTag("probeEleMVA80Xwp90" ), - passingMVA80Xwp80 = cms.InputTag("probeEleMVA80Xwp80" ), - ) - ) - -process.tnpPhoIDs = cms.EDAnalyzer("TagProbeFitTreeProducer", - tnpVars.mcTruthCommonStuff, tnpVars.CommonStuffForPhotonProbe, - tagProbePairs = cms.InputTag("tnpPairingPhoIDs"), - probeMatches = cms.InputTag("genProbePho"), - allProbes = cms.InputTag("probePho"), - flags = cms.PSet( - passingLoose = cms.InputTag("probePhoCutBasedLoose"), - passingMedium = cms.InputTag("probePhoCutBasedMedium"), - passingTight = cms.InputTag("probePhoCutBasedTight"), - passingMVA = cms.InputTag("probePhoMVA"), - # passingLoose80X = cms.InputTag("probePhoCutBasedLoose80X"), - # passingMedium80X = cms.InputTag("probePhoCutBasedMedium80X"), - # passingTight80X = cms.InputTag("probePhoCutBasedTight80X"), - # passingMVA80Xwp90 = cms.InputTag("probePhoMVA80Xwp90"), - # passingMVA80Xwp80 = cms.InputTag("probePhoMVA80Xwp80"), - ) - ) - -## add pass HLT-safe flag, available for miniAOD only -if not options['useAOD'] : - setattr( process.tnpEleTrig.flags, 'passingHLTsafe', cms.InputTag("probeEleHLTsafe" ) ) - setattr( process.tnpEleIDs.flags , 'passingHLTsafe', cms.InputTag("probeEleHLTsafe" ) ) - -tnpSetup.customize( process.tnpEleTrig , options ) -tnpSetup.customize( process.tnpEleIDs , options ) -tnpSetup.customize( process.tnpPhoIDs , options ) -tnpSetup.customize( process.tnpEleReco , options ) +process.tnpEleTrig = cms.EDAnalyzer( + "TagProbeFitTreeProducer", + mcTruthCommonStuff, + tnpVars.CommonStuffForGsfElectronProbe, + tagProbePairs=cms.InputTag("tnpPairingEleHLT"), + probeMatches=cms.InputTag("genProbeEle"), + allProbes=cms.InputTag("probeEle"), + flags=cms.PSet(), +) + +for flag in options["HLTFILTERSTOMEASURE"]: + setattr(process.tnpEleTrig.flags, flag, cms.InputTag(flag)) + + +process.tnpEleReco = cms.EDAnalyzer( + "TagProbeFitTreeProducer", + mcTruthCommonStuff, + tnpVars.CommonStuffForSuperClusterProbe, + tagProbePairs=cms.InputTag("tnpPairingEleRec"), + probeMatches=cms.InputTag("genProbeSC"), + allProbes=cms.InputTag("probeSC"), + flags=cms.PSet( + passingRECO=cms.InputTag("probeSCEle", "superclusters"), + passingRECOEcalDriven=cms.InputTag("probeSCEle", "superclustersEcalDriven"), + passingRECOTrackDriven=cms.InputTag("probeSCEle", "superclustersTrackDriven"), + ), +) + +process.tnpEleIDs = cms.EDAnalyzer( + "TagProbeFitTreeProducer", + mcTruthCommonStuff, + tnpVars.CommonStuffForGsfElectronProbe, + tagProbePairs=cms.InputTag("tnpPairingEleIDs"), + probeMatches=cms.InputTag("genProbeEle"), + allProbes=cms.InputTag("probeEle"), + flags=cms.PSet(), +) + +# ID's to store in the electron ID and trigger tree +# Simply look which probeEleX modules were made in egmElectronIDModules_cff.py and convert them into a passingX boolean in the tree +for probeEleModule in str(process.ele_sequence).split("+"): + if "probeEle" not in probeEleModule or probeEleModule in [ + "probeEle", + "probeEleL1matched", + ]: + continue + setattr( + process.tnpEleTrig.flags, + probeEleModule.replace("probeEle", "passing"), + cms.InputTag(probeEleModule), + ) + setattr( + process.tnpEleIDs.flags, + probeEleModule.replace("probeEle", "passing"), + cms.InputTag(probeEleModule), + ) + + +process.tnpPhoIDs = cms.EDAnalyzer( + "TagProbeFitTreeProducer", + mcTruthCommonStuff, + tnpVars.CommonStuffForPhotonProbe, + tagProbePairs=cms.InputTag("tnpPairingPhoIDs"), + probeMatches=cms.InputTag("genProbePho"), + allProbes=cms.InputTag("probePho"), + flags=cms.PSet(), +) +#<<<<<<< HEAD +process.VpTFilter = cms.EDFilter( + "VpTFilter", + src = cms.InputTag("externalLHEProducer"), + VpTMax = cms.double(0), + VpTMin = cms.double(0) + # cut = cms.string(cut_gen_standard), +) +#======= +#>>>>>>> d23131fd54f318eb3e0d49c8f725450c32175d50 + +# ID's to store in the photon ID tree +# Simply look which probePhoX modules were made in egmPhotonIDModules_cff.py and convert them into a passingX boolean in the tree +for probePhoModule in str(process.pho_sequence).split("+"): + if "probePho" not in probePhoModule or probePhoModule == "probePho": + continue + setattr( + process.tnpPhoIDs.flags, + probePhoModule.replace("probePho", "passing"), + cms.InputTag(probePhoModule), + ) + + +# Add SUSY variables to the "variables", add SUSY IDs to the "flags" [kind of deprecated, better ways to add these] +if options["addSUSY"]: + setattr( + process.tnpEleIDs.variables, + "el_miniIsoChg", + cms.string("userFloat('miniIsoChg')"), + ) + setattr( + process.tnpEleIDs.variables, + "el_miniIsoAll", + cms.string("userFloat('miniIsoAll')"), + ) + setattr( + process.tnpEleIDs.variables, "el_ptRatio", cms.string("userFloat('ptRatio')") + ) + setattr( + process.tnpEleIDs.variables, + "el_ptRatioUncorr", + cms.string("userFloat('ptRatioUncorr')"), + ) + setattr(process.tnpEleIDs.variables, "el_ptRel", cms.string("userFloat('ptRel')")) + setattr( + process.tnpEleIDs.variables, + "el_MVATTH", + cms.InputTag("susyEleVarHelper:electronMVATTH"), + ) + setattr( + process.tnpEleIDs.variables, "el_sip3d", cms.InputTag("susyEleVarHelper:sip3d") + ) + + +tnpSetup.customize(process.tnpEleTrig, options) +tnpSetup.customize(process.tnpEleIDs, options) +tnpSetup.customize(process.tnpPhoIDs, options) +tnpSetup.customize(process.tnpEleReco, options) process.tree_sequence = cms.Sequence() -if (options['DoTrigger']): process.tree_sequence *= process.tnpEleTrig -if (options['DoRECO']) : process.tree_sequence *= process.tnpEleReco -if (options['DoEleID']) : process.tree_sequence *= process.tnpEleIDs -if (options['DoPhoID']) : process.tree_sequence *= process.tnpPhoIDs +if options["DoTrigger"]: + process.tree_sequence *= process.tnpEleTrig +if options["DoRECO"]: + process.tree_sequence *= process.tnpEleReco +if options["DoEleID"]: + process.tree_sequence *= process.tnpEleIDs +if options["DoPhoID"]: + process.tree_sequence *= process.tnpPhoIDs ########################################################################## -## PATHS +# PATHS ########################################################################## -process.out = cms.OutputModule("PoolOutputModule", - fileName = cms.untracked.string(options['OUTPUTEDMFILENAME']), - SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring("p")) - ) -process.outpath = cms.EndPath(process.out) -if (not options['DEBUG']): - process.outpath.remove(process.out) +if options["DEBUG"]: + process.out = cms.OutputModule( + "PoolOutputModule", + fileName=cms.untracked.string("edmFile_for_debug.root"), + SelectEvents=cms.untracked.PSet(SelectEvents=cms.vstring("p")), + ) + process.outpath = cms.EndPath(process.out) + +#process.evtCounter = cms.EDAnalyzer("SimpleEventCounter",src = cms.InputTag("externalLHEProducer")) +process.evtCounter = cms.EDAnalyzer("SimpleEventCounter") process.p = cms.Path( - process.hltFilter + - process.cand_sequence + - process.tnpPairs_sequence + - process.mc_sequence + - process.eleVarHelper + - process.tree_sequence - ) + process.evtCounter +# + process.VpTFilter + + process.hltFilter + + process.cand_sequence + + process.tnpPairs_sequence + + process.mc_sequence + + process.tree_sequence +) process.TFileService = cms.Service( - "TFileService", fileName = cms.string(options['OUTPUT_FILE_NAME']), - closeFileFast = cms.untracked.bool(True) - ) + "TFileService", + fileName=cms.string(options["OUTPUT_FILE_NAME"]), + closeFileFast=cms.untracked.bool(True), +) diff --git a/python/cmssw_version.py b/python/cmssw_version.py new file mode 100644 index 00000000000..34ccfbb483c --- /dev/null +++ b/python/cmssw_version.py @@ -0,0 +1,11 @@ +import os + +def get_cmssw_version(): + return [int(x) for x in os.environ['CMSSW_VERSION'].split('_')[1:4]] + +def isReleaseAbove(major, minor, sub=None): + cmssw_version = get_cmssw_version() + if (cmssw_version[0] > major): return True + elif (cmssw_version[0] == major) and (cmssw_version[1] > minor): return True + elif (cmssw_version[0] == major) and (cmssw_version[1] == minor) and (cmssw_version[2] >= sub if sub else True): return True + return False diff --git a/python/egmElectronIDModules_cff.py b/python/egmElectronIDModules_cff.py index 38dcd23836b..c9ac21ac460 100644 --- a/python/egmElectronIDModules_cff.py +++ b/python/egmElectronIDModules_cff.py @@ -5,98 +5,113 @@ ################################################################### from PhysicsTools.SelectorUtils.tools.vid_id_tools import * +from EgammaAnalysis.TnPTreeProducer.cmssw_version import isReleaseAbove def setIDs(process, options): - dataFormat = DataFormat.MiniAOD - eleProducer = "PatElectronSelectorByValueMap" - if (options['useAOD']): - dataFormat = DataFormat.AOD - eleProducer = "GsfElectronSelectorByValueMap" - - switchOnVIDElectronIdProducer(process, dataFormat) + switchOnVIDElectronIdProducer(process, DataFormat.AOD if options['useAOD'] else DataFormat.MiniAOD) # define which IDs we want to produce my_id_modules = [ - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV60_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', - ] + 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', + 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV71_cff', + #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', + #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', + #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', + #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff', + #'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff', + 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff' + ] ### add only miniAOD supported IDs if not options['useAOD'] : my_id_modules.append( 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff' ) - + my_id_modules.append( 'EgammaAnalysis.TnPTreeProducer.Identification.cutBasedDoubleElectronHLTPreselecition_Summer16_V1_cff') + for idmod in my_id_modules: setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection) - process.egmGsfElectronIDs.physicsObjectSrc = cms.InputTag(options['ELECTRON_COLL']) - process.electronMVAValueMapProducer.srcMiniAOD = cms.InputTag(options['ELECTRON_COLL']) - process.electronRegressionValueMapProducer.srcMiniAOD = cms.InputTag(options['ELECTRON_COLL']) - - process.probeEleCutBasedVeto = cms.EDProducer(eleProducer, - input = cms.InputTag("goodElectrons"), - cut = cms.string(options['ELECTRON_CUTS']), - selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), - id_cut = cms.bool(True) - ) - - ###################################################################################### - ## MODULES FOR N-1 CUT BASED STUDIES - ###################################################################################### - # List of cuts - #0 MinPtCut - #1 GsfEleSCEtaMultiRangeCut - #2 GsfEleDEtaInCut - #3 GsfEleDPhiInCut - #4 GsfEleFull5x5SigmaIEtaIEtaCut - #5 GsfEleHadronicOverEMCut - #6 GsfEleDxyCut - #7 GsfEleDzCut - #8 GsfEleEInverseMinusPInverseCut - #9 GsfEleEffAreaPFIsoCut - #10 GsfEleConversionVetoCut - #11 GsfEleMissingHitsCut - - #process.probeEleCutBasedVeto = cms.EDProducer("PatElectronNm1Selector", - # input = cms.InputTag("goodElectrons"), - # cut = cms.string(options['ELECTRON_CUTS']), - # selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), - # #cutIndicesToMask = cms.vuint32(2, 3), - # cutNamesToMask = cms.vstring("GsfEleDEtaInCut_0", "GsfEleDPhiInCut_0") - # ) - - process.probeEleHLTsafe = process.probeEleCutBasedVeto.clone() - process.probeEleHLTsafe.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1") - - process.probeEleCutBasedLoose = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedMedium = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedTight = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedLoose.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose") - process.probeEleCutBasedMedium.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium") - process.probeEleCutBasedTight.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight") - - process.probeEleCutBasedVeto80X = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedLoose80X = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedMedium80X = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedTight80X = process.probeEleCutBasedVeto.clone() - process.probeEleMVA80Xwp90 = process.probeEleCutBasedVeto.clone() - process.probeEleMVA80Xwp80 = process.probeEleCutBasedVeto.clone() - process.probeEleCutBasedVeto80X.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto" ) - process.probeEleCutBasedLoose80X.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose" ) - process.probeEleCutBasedMedium80X.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium") - process.probeEleCutBasedTight80X.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight" ) - process.probeEleMVA80Xwp90.selection = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90" ) - process.probeEleMVA80Xwp80.selection = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80" ) - - - - process.tagEleCutBasedTight = cms.EDProducer(eleProducer, + process.egmGsfElectronIDs.physicsObjectSrc = cms.InputTag(options['ELECTRON_COLL']) + process.electronMVAValueMapProducer.src = cms.InputTag(options['ELECTRON_COLL']) + + if not isReleaseAbove(10, 6): # only for CMSSW_10_2 + process.electronRegressionValueMapProducer.srcMiniAOD = cms.InputTag(options['ELECTRON_COLL']) + + # + # One tag module --> cut based tight 94X V2 + # + process.tagEleCutBasedTight = cms.EDProducer('GsfElectronSelectorByValueMap' if options['useAOD'] else 'PatElectronSelectorByValueMap', input = cms.InputTag("goodElectrons"), cut = cms.string(options['ELECTRON_TAG_CUTS']), - selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto"), + selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"), id_cut = cms.bool(True) - ) - process.tagEleCutBasedTight.selection = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight") + ) + + + # + # Add many probe modules, use the PatElectronNm1Selector in case we want to check the effect of one cut + # + def addNewProbeModule(sequence, name, inputTag, cutNamesToMask=None): + if cutNamesToMask: + temp = cms.EDProducer('PatElectronNm1Selector', + input = cms.InputTag("goodElectrons"), + cut = cms.string(options['ELECTRON_CUTS']), + selection = cms.InputTag(inputTag), + cutNamesToMask = cutNamesToMask, + ) + else: + temp = cms.EDProducer('GsfElectronSelectorByValueMap' if options['useAOD'] else 'PatElectronSelectorByValueMap', + input = cms.InputTag("goodElectrons"), + cut = cms.string(options['ELECTRON_CUTS']), + selection = cms.InputTag(inputTag), + id_cut = cms.bool(True) + ) + setattr(process, 'probeEle%s' % name, temp) + sequence += temp + + + probeSequence = cms.Sequence() + #if not options['useAOD']: + # addNewProbeModule(probeSequence, 'HLTsafe', 'egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1') + # addNewProbeModule(probeSequence, 'DoubleEleHLTsafe', 'egmGsfElectronIDs:cutBasedDoubleElectronHLTPreselection-Summer16-V1') + + #for wp in ['Veto', 'Loose', 'Medium', 'Tight']: + # addNewProbeModule(probeSequence, 'CutBased%s80X' % wp, 'egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-%s' % wp.lower()) + # addNewProbeModule(probeSequence, 'CutBased%s94X' % wp, 'egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-%s' % wp.lower()) + # addNewProbeModule(probeSequence, 'CutBased%s94XV2' % wp, 'egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-%s' % wp.lower()) + + #for wp in ['wp80', 'wp90']: + # addNewProbeModule(probeSequence, 'MVA80X%s' %wp, 'egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-%s' % wp) + + #for wp in ['wp80', 'wp90', 'wpLoose']: + # addNewProbeModule(probeSequence, 'MVA94X%snoiso' %wp, 'egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-%s' % wp) + # addNewProbeModule(probeSequence, 'MVA94X%siso' %wp, 'egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-%s' % wp) + # addNewProbeModule(probeSequence, 'MVA94X%snoisoV2' %wp, 'egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-%s' % wp) + # addNewProbeModule(probeSequence, 'MVA94X%sisoV2' %wp, 'egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-%s' % wp) + + #addNewProbeModule(probeSequence, 'MVA94XwpHZZisoV2', 'egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wpHZZ') + + addNewProbeModule(probeSequence, "HEEPV70", "egmGsfElectronIDs:heepElectronID-HEEPV70") + addNewProbeModule(probeSequence, "HEEPV71", "egmGsfElectronIDs:heepElectronID-HEEPV71") + + # + # For cut based 94X V2, also check partial cuts + # + #allCuts = ["MinPt", "GsfEleSCEtaMultiRange", "GsfEleDEtaInSeed", "GsfEleDPhiIn", "GsfEleFull5x5SigmaIEtaIEta", + # "GsfEleHadronicOverEMEnergyScaled", "GsfEleEInverseMinusPInverse", "GsfEleRelPFIsoScaled", "GsfEleConversionVeto", "GsfEleMissingHits"] + + #for cut in allCuts: + # otherCuts = cms.vstring([i + 'Cut_0' for i in allCuts if i!=cut]) + # for wp in ['Veto', 'Loose', 'Medium', 'Tight']: + # addNewProbeModule(probeSequence, 'CutBased%s94XV2%sCut' % (wp, cut), 'egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-%s' % wp.lower(), cutNamesToMask=otherCuts) + + # + # Optional: SUSY variables (broken?) + # + if options['addSUSY'] : + from EgammaAnalysis.TnPTreeProducer.electronsExtrasSUSY_cff import workingPoints + for wp in workingPoints: addNewProbeModule(probeSequence, wp, 'susyEleVarHelper:pass' + wp) + + return probeSequence diff --git a/python/egmGoodParticlesDef_cff.py b/python/egmGoodParticlesDef_cff.py index b79f9cbc8b6..fc1de8a5a67 100644 --- a/python/egmGoodParticlesDef_cff.py +++ b/python/egmGoodParticlesDef_cff.py @@ -56,16 +56,22 @@ def setGoodParticlesMiniAOD(process, options): if options['UseCalibEn']: calibrateEGM( process, options ) - + + ########################### Extra variables for SUSY IDs ############ + if options['addSUSY']: + import EgammaAnalysis.TnPTreeProducer.electronsExtrasSUSY_cff as eleSusyID + eleSusyID.addSusyIDs( process, options ) + options['ELECTRON_COLL'] = "slimmedElectronsWithUserData" + process.eleVarHelper = cms.EDProducer("PatElectronVariableHelper", probes = cms.InputTag(options['ELECTRON_COLL']), l1EGColl = cms.InputTag('caloStage2Digis:EGamma'), vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"), - #pfCandColl = cms.InputTag("packedPFCandidates"), + beamSpot = cms.InputTag("offlineBeamSpot"), + conversions = cms.InputTag("reducedEgamma:reducedConversions"), + pfCandidates = cms.InputTag("packedPFCandidates"), ) - - #################### Electron collection process.goodElectrons = cms.EDFilter("PATElectronRefSelector", src = cms.InputTag( options['ELECTRON_COLL'] ), @@ -96,7 +102,7 @@ def setGoodParticlesMiniAOD(process, options): process.superClusterCands + process.goodSuperClusters ) - + ################################################################################### ################ --- GOOD particles AOD ################################################################################### @@ -104,10 +110,12 @@ def setGoodParticlesAOD(process, options): process.eleVarHelper = cms.EDProducer("GsfElectronVariableHelper", - probes = cms.InputTag(options['ELECTRON_COLL']), + probes = cms.InputTag(options['ELECTRON_COLL']), vertexCollection = cms.InputTag("offlinePrimaryVertices"), - l1EGColl = cms.InputTag("caloStage2Digis:EGamma"), - #pfCandColl = cms.InputTag("particleFlow"), + l1EGColl = cms.InputTag("caloStage2Digis:EGamma"), + beamSpot = cms.InputTag("offlineBeamSpot"), + conversions = cms.InputTag("allConversions"), + pfCandidates = cms.InputTag("particleFlow"), ) process.hltVarHelper = cms.EDProducer("GsfElectronHLTVariableHelper", diff --git a/python/egmPhotonIDModules_cff.py b/python/egmPhotonIDModules_cff.py index cf449964671..c84f700e942 100644 --- a/python/egmPhotonIDModules_cff.py +++ b/python/egmPhotonIDModules_cff.py @@ -5,24 +5,25 @@ ################################################################### from PhysicsTools.SelectorUtils.tools.vid_id_tools import * +from EgammaAnalysis.TnPTreeProducer.cmssw_version import isReleaseAbove def setIDs(process, options): - dataFormat = DataFormat.MiniAOD - phoProducer = "PatPhotonSelectorByValueMap" - if (options['useAOD']): - dataFormat = DataFormat.AOD - phoProducer = "PhotonSelectorByValueMap" + switchOnVIDPhotonIdProducer(process, DataFormat.AOD if options['useAOD'] else DataFormat.MiniAOD) - switchOnVIDPhotonIdProducer(process, dataFormat) - # define which IDs we want to produce - my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring15_25ns_V1_cff', -# 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff' , - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring15_25ns_nonTrig_V2p1_cff', -# 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff', + my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff' , + 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff', + 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_cff', + 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff', + 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff' ] - + + if not isReleaseAbove(10, 6): # (photon mva 94X_V1 broken in CMSSW_10_6_X) + my_id_modules += ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1_cff'] + else: # (only needed in CMSSW_10_6_X + process.load("RecoEgamma.PhotonIdentification.photonIDValueMapProducer_cff") + for idmod in my_id_modules: setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection) @@ -31,31 +32,52 @@ def setIDs(process, options): process.photonMVAValueMapProducer.srcMiniAOD = cms.InputTag(options['PHOTON_COLL']) # process.photonMVAValueMapProducer.src = cms.InputTag(options['PHOTON_COLL']) + # + # Add many probe modules, use the PatPhotonNm1Selector in case we want to check the effect of one cut + # + def addNewProbeModule(sequence, name, inputTag, cutNamesToMask=None): + if cutNamesToMask: + temp = cms.EDProducer('PatPhotonNm1Selector', + input = cms.InputTag("goodPhotons"), + cut = cms.string(options['PHOTON_CUTS']), + selection = cms.InputTag(inputTag), + cutNamesToMask = cutNamesToMask, + ) + else: + temp = cms.EDProducer('PhotonSelectorByValueMap' if options['useAOD'] else 'PatPhotonSelectorByValueMap', + input = cms.InputTag("goodPhotons"), + cut = cms.string(options['PHOTON_CUTS']), + selection = cms.InputTag(inputTag), + id_cut = cms.bool(True) + ) + setattr(process, 'probePho%s' % name, temp) + sequence += temp - process.probePhoCutBasedLoose = cms.EDProducer( phoProducer, - input = cms.InputTag("goodPhotons"), - cut = cms.string(options['PHOTON_CUTS']), - selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-loose"), - id_cut = cms.bool(True) - ) + probeSequence = cms.Sequence() + for wp in ['Loose', 'Medium', 'Tight']: + addNewProbeModule(probeSequence, 'CutBased%s80X' % wp, 'egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-%s' % wp.lower()) + addNewProbeModule(probeSequence, 'CutBased%s94X' % wp, 'egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-%s' % wp.lower()) + addNewProbeModule(probeSequence, 'CutBased%s94XV2' % wp, 'egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-%s' % wp.lower()) - process.probePhoCutBasedMedium = process.probePhoCutBasedLoose.clone() - process.probePhoCutBasedMedium.selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-medium") - process.probePhoCutBasedTight = process.probePhoCutBasedLoose.clone() - process.probePhoCutBasedTight.selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-tight") + for wp in ['wp80', 'wp90']: + addNewProbeModule(probeSequence, 'MVA80X%s' % wp, 'egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-%s' % wp) + addNewProbeModule(probeSequence, 'MVA94XV2%s' % wp, 'egmPhotonIDs:mvaPhoID-RunIIFall17-v2-%s' % wp) + if not isReleaseAbove(10, 6): + addNewProbeModule(probeSequence, 'MVA94X%s' % wp, 'egmPhotonIDs:mvaPhoID-RunIIFall17-v1-%s' % wp) - # process.probePhoCutBasedLoose80X = process.probePhoCutBasedLoose.clone() - # process.probePhoCutBasedMedium80X = process.probePhoCutBasedLoose.clone() - # process.probePhoCutBasedTight80X = process.probePhoCutBasedLoose.clone() - # process.probePhoCutBasedLoose80X.selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose" ) - # process.probePhoCutBasedMedium80X.selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium" ) - # process.probePhoCutBasedTight80X.selection = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight" ) + # + # For cut based 94X V2, also check partial cuts + # + if isReleaseAbove(10, 6): # (name change of cuts) + allCuts = ["MinPtCut_0", "PhoSCEtaMultiRangeCut_0", "PhoSingleTowerHadOverEmCut_0", "PhoFull5x5SigmaIEtaIEtaCut_0", "PhoGenericRhoPtScaledCut_0", "PhoGenericRhoPtScaledCut_1", "PhoGenericRhoPtScaledCut_2"] + else: + allCuts = ["MinPtCut_0", "PhoSCEtaMultiRangeCut_0", "PhoSingleTowerHadOverEmCut_0", "PhoFull5x5SigmaIEtaIEtaCut_0", "PhoAnyPFIsoWithEACut_0", "PhoAnyPFIsoWithEAAndQuadScalingCut_0", "PhoAnyPFIsoWithEACut_1"] - process.probePhoMVA = process.probePhoCutBasedLoose.clone() - process.probePhoMVA.selection = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring15-25ns-nonTrig-V2p1-wp90") -# process.probePhoMVA80Xwp90 = process.probePhoCutBasedLoose.clone() -# process.probePhoMVA80Xwp80 = process.probePhoCutBasedLoose.clone() -# process.probePhoMVA80Xwp90.selection = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp90") -# process.probePhoMVA80Xwp80.selection = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp80") + for cut in allCuts: + otherCuts = cms.vstring([i for i in allCuts if i!=cut]) + cutName = cut.replace('_','').replace('0','') # special case for the PhoAnyPFIsoWithEACut_1 + for wp in ['Loose', 'Medium', 'Tight']: + addNewProbeModule(probeSequence, 'CutBased%s94XV2%s' % (wp, cutName), 'egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-%s' % wp.lower(), cutNamesToMask=otherCuts) + return probeSequence diff --git a/python/egmTreesContent_cff.py b/python/egmTreesContent_cff.py index ec837227f82..a3e6d59cc99 100644 --- a/python/egmTreesContent_cff.py +++ b/python/egmTreesContent_cff.py @@ -3,16 +3,19 @@ ########################################################################## ## TREE CONTENT ######################################################################### - + +from EgammaAnalysis.TnPTreeProducer.cmssw_version import isReleaseAbove + ZVariablesToStore = cms.PSet( eta = cms.string("eta"), abseta = cms.string("abs(eta)"), pt = cms.string("pt"), mass = cms.string("mass"), - ) + ) SCProbeVariablesToStore = cms.PSet( sc_eta = cms.string("eta"), + sc_phi = cms.string("phi"), sc_abseta = cms.string("abs(eta)"), sc_pt = cms.string("pt"), sc_et = cms.string("et"), @@ -21,6 +24,7 @@ ) EleProbeVariablesToStore = cms.PSet( +# LHE_Vpt = cms.string("LHE_Vpt"), el_eta = cms.string("eta"), el_phi = cms.string("phi"), el_abseta = cms.string("abs(eta)"), @@ -29,23 +33,26 @@ el_et = cms.string("et"), el_e = cms.string("energy"), el_q = cms.string("charge"), - + el_isGap = cms.string("isGap"), +# LHE_Vpt = cms.string("LHE_Vpt"), + ## super cluster quantities el_sc_e = cms.string("superCluster().energy"), el_sc_rawE = cms.string("superCluster().rawEnergy"), el_sc_esE = cms.string("superCluster().preshowerEnergy"), - el_sc_et = cms.string("superCluster().energy*sin(superClusterPosition.theta)"), + el_sc_et = cms.string("superCluster().energy*sin(superClusterPosition.theta)"), el_sc_eta = cms.string("-log(tan(superCluster.position.theta/2))"), - el_sc_phi = cms.string("superCluster.phi"), + el_sc_phi = cms.string("superCluster.phi"), el_sc_abseta = cms.string("abs(-log(tan(superCluster.position.theta/2)))"), - el_seed_e = cms.string("superCluster.seed.energy"), -# el_xseed_e = cms.string("superCluster.seed.seed.energy"), + el_seed_e = cms.string("superCluster.seed.energy"), + el_ecalEnergy = cms.string("ecalEnergy()"), +# el_xseed_e = cms.string("superCluster.seed.seed.energy"), #id based # el_dEtaSeeOut = cms.string("deltaEtaSeedClusterTrackAtCalo"), el_dEtaIn = cms.string("deltaEtaSuperClusterTrackAtVtx"), el_dPhiIn = cms.string("deltaPhiSuperClusterTrackAtVtx"), - el_dEtaSeed = cms.string("deltaEtaSuperClusterTrackAtVtx+log(tan(superCluster.position.theta/2))-log(tan(superCluster.seed.position.theta/2))"), + el_dEtaSeed = cms.string("deltaEtaSuperClusterTrackAtVtx+log(tan(superCluster.position.theta/2))-log(tan(superCluster.seed.position.theta/2))"), el_phiW = cms.string("superCluster().phiWidth"), el_etaW = cms.string("superCluster().etaWidth"), @@ -53,50 +60,79 @@ el_5x5_e2x5 = cms.string("full5x5_showerShape().e2x5Max"), el_5x5_e5x5 = cms.string("full5x5_showerShape().e5x5"), el_5x5_r9 = cms.string("full5x5_showerShape().r9"), - el_5x5_sieie = cms.string("full5x5_showerShape().sigmaIetaIeta"), - el_5x5_sieip = cms.string("full5x5_showerShape().sigmaIetaIphi"), + el_5x5_sieie = cms.string("full5x5_showerShape().sigmaIetaIeta"), + el_5x5_sieip = cms.string("full5x5_showerShape().sigmaIetaIphi"), el_e1x5 = cms.string("showerShape().e1x5"), el_e2x5 = cms.string("showerShape().e2x5Max"), el_e5x5 = cms.string("showerShape().e5x5"), el_r9 = cms.string("showerShape().r9"), el_sieie = cms.string("showerShape().sigmaIetaIeta"), - - el_hoe = cms.string("hcalOverEcalBc"), - el_eoverp = cms.string("(superCluster().rawEnergy+superCluster().preshowerEnergy)/gsfTrack().pMode()"), + + el_5x5_circularity = cms.InputTag("eleVarHelper:5x5circularity"), + el_5x5_hoe = cms.string("full5x5_hcalOverEcal()"), + + el_hoe = cms.string("hadronicOverEm()"), + el_hoe_bc = cms.string("hcalOverEcalBc"), + el_eoverp_wES = cms.string("(superCluster().rawEnergy+superCluster().preshowerEnergy)/gsfTrack().pMode()"), + el_1overEminus1overP = cms.string("abs(1-eSuperClusterOverP())/ecalEnergy()"), # mva id - el_nonTrigMVA = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values"), + el_nonTrigMVA80X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), el_hzzMVA80X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), - el_trigMVA = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15Trig25nsV1Values"), - + el_noIsoMVA94X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"), + el_IsoMVA94X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1RawValues"), + el_noIsoMVA94XV2 = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2RawValues"), + el_IsoMVA94XV2 = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV2RawValues"), + + #isolation - el_chIso = cms.string("pfIsolationVariables().sumChargedHadronPt"), - el_phoIso = cms.string("pfIsolationVariables().sumPhotonEt"), - el_neuIso = cms.string("pfIsolationVariables().sumNeutralHadronEt"), - el_ecalIso = cms.string("ecalPFClusterIso"), - el_hcalIso = cms.string("hcalPFClusterIso"), - el_trkIso = cms.string("trackIso"), - el_dr03TkSumPt = cms.string("dr03TkSumPt"), - - #miniIsolation - el_miniIsoChg = cms.InputTag("probeEleMiniIso:h+-DR020-BarVeto000-EndVeto001-kt1000-Min005"), - el_miniIsoNeu = cms.InputTag("probeEleMiniIso:h0-DR020-BarVeto000-EndVeto000-kt1000-Min005"), - el_miniIsoPho = cms.InputTag("probeEleMiniIso:gamma-DR020-BarVeto000-EndVeto008-kt1000-Min005"), - el_miniIsoEffA = cms.InputTag("probeEleMiniIsoEffArea:EA-DR020-kt1000-Min005"), - - # tracker + el_chIso = cms.string("pfIsolationVariables().sumChargedHadronPt"), + el_phoIso = cms.string("pfIsolationVariables().sumPhotonEt"), + el_neuIso = cms.string("pfIsolationVariables().sumNeutralHadronEt"), + el_dr03EcalRecHitSumEt = cms.string("dr03EcalRecHitSumEt"), + el_ecalIso = cms.string("ecalPFClusterIso"), # this one seem to be always 0 in CMSSW_10_2_X + el_hcalIso = cms.string("hcalPFClusterIso"), # this one seem to be always 0 in CMSSW_10_2_X + el_trkIso = cms.string("trackIso"), + el_dr03TkSumPt = cms.string("dr03TkSumPt"), + + # this relative PF lepton isolation component is added to the standard PF isolation sum + # in order to get the isolation variable used in the triboson analysis + # in the small test runs this variable is always 0, but I guess it is very rare to find another lepton in the cone + el_relPfLepIso03 = cms.InputTag("eleVarHelper:pfLeptonIsolation"), + + #added for VHbbEIso + el_sumPUPt = cms.string("pfIsolationVariables().sumPUPt"), + el_relIso03_dB = cms.string("(pfIsolationVariables().sumChargedHadronPt + max(pfIsolationVariables().sumNeutralHadronEt + pfIsolationVariables().sumPhotonEt - 0.5 * pfIsolationVariables().sumPUPt,0.0)) / pt() "), + + # tracker Variabels el_tk_pt = cms.string("gsfTrack().ptMode"), el_tk_eta = cms.string("gsfTrack().etaMode"), el_tk_phi = cms.string("gsfTrack().phiMode"), el_fbrem = cms.string("fbrem"), - el_chisq = cms.InputTag("eleVarHelper:chi2"), el_mHits = cms.InputTag("eleVarHelper:missinghits"), + el_gsfHits = cms.InputTag("eleVarHelper:gsfhits"), el_dz = cms.InputTag("eleVarHelper:dz"), el_dxy = cms.InputTag("eleVarHelper:dxy"), + el_sip = cms.InputTag("eleVarHelper:sip"), el_3charge = cms.string("chargeInfo().isGsfCtfScPixConsistent"), el_ecalDriven = cms.string("ecalDrivenSeed"), - + + el_gsfhits = cms.string("gsfTrack().hitPattern().trackerLayersWithMeasurement()"), + el_gsfchi2 = cms.string("gsfTrack().normalizedChi2()"), + el_kfhits = cms.InputTag("eleVarHelper:kfhits"), + el_kfchi2 = cms.InputTag("eleVarHelper:kfchi2"), + el_lost_hits = cms.string("gsfTrack().lost()"), + el_found_hits = cms.string("gsfTrack().found()"), # sometimes called valid_hits + el_convVtxFitProb = cms.InputTag("eleVarHelper:convVtxFitProb"), + + el_hasMatchedConversion = cms.InputTag("eleVarHelper:hasMatchedConversion"), + + # Track cluster matching + el_ep = cms.string("eSuperClusterOverP()"), + el_eelepout = cms.string("eEleClusterOverPout()"), + el_IoEmIop = cms.InputTag("eleVarHelper:ioemiop"), + ) PhoProbeVariablesToStore = cms.PSet( @@ -106,33 +142,47 @@ ph_e = cms.string("energy"), ## super cluster quantities - ph_sc_energy = cms.string("superCluster.energy"), - ph_sc_et = cms.string("superCluster.energy*sin(superCluster.position.theta)"), - ph_sc_eta = cms.string("-log(tan(superCluster.position.theta/2))"), - phsc_abseta = cms.string("abs(-log(tan(superCluster.position.theta/2)))"), + ph_sc_energy = cms.string("superCluster.energy"), + ph_sc_rawEnergy = cms.string("superCluster.rawEnergy"), + ph_sc_et = cms.string("superCluster.energy*sin(superCluster.position.theta)"), + ph_sc_eta = cms.string("-log(tan(superCluster.position.theta/2))"), + ph_sc_abseta = cms.string("abs(-log(tan(superCluster.position.theta/2)))"), + ph_sc_etaWidth = cms.string("superCluster.etaWidth"), + ph_sc_phiWidth = cms.string("superCluster.phiWidth"), + +## preshower energy plane 1 and 2 + ph_preshower_energy_plane1 = cms.string("superCluster.preshowerEnergyPlane1"), + ph_preshower_energy_plane2 = cms.string("superCluster.preshowerEnergyPlane2"), #id based ph_full5x5x_r9 = cms.string("full5x5_r9"), ph_r9 = cms.string("r9"), ph_sieie = cms.string("full5x5_sigmaIetaIeta"), - ph_sieip = cms.InputTag("photonIDValueMapProducer:phoFull5x5SigmaIEtaIPhi"), - ph_ESsigma = cms.InputTag("photonIDValueMapProducer:phoESEffSigmaRR"), + ph_s4 = cms.string("full5x5_showerShapeVariables.e2x2/full5x5_showerShapeVariables.e5x5"), + ph_sieip = cms.string("full5x5_showerShapeVariables.sigmaIetaIphi"), + ph_ESsigma = cms.string("full5x5_showerShapeVariables.effSigmaRR"), ph_hoe = cms.string("hadronicOverEm"), -#iso - ph_chIso = cms.InputTag("photonIDValueMapProducer:phoChargedIsolation"), - ph_neuIso = cms.InputTag("photonIDValueMapProducer:phoNeutralHadronIsolation"), - ph_phoIso = cms.InputTag("photonIDValueMapProducer:phoPhotonIsolation"), - ph_chWorIso = cms.InputTag("photonIDValueMapProducer:phoWorstChargedIsolation"), - #pho mva - ph_mva = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring15NonTrig25nsV2p1Values"), ph_mva80X = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values"), + ph_mva94X = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v1p1Values"), + ph_mva94XV2 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values"), + +# iso + ph_chIso = cms.string("chargedHadronIso"), + ph_neuIso = cms.string("neutralHadronIso"), + ph_phoIso = cms.string("photonIso"), + ph_chWorIso = cms.string("chargedHadronWorstVtxIso"), ) - - +if not isReleaseAbove(10, 6): # old way of accessing these in CMSSW_10_2 + PhoProbeVariablesToStore.ph_sieip = cms.InputTag("photonIDValueMapProducer:phoFull5x5SigmaIEtaIPhi") + PhoProbeVariablesToStore.ph_ESsigma = cms.InputTag("photonIDValueMapProducer:phoESEffSigmaRR") + PhoProbeVariablesToStore.ph_chIso = cms.InputTag("photonIDValueMapProducer:phoChargedIsolation") + PhoProbeVariablesToStore.ph_neuIso = cms.InputTag("photonIDValueMapProducer:phoNeutralHadronIsolation") + PhoProbeVariablesToStore.ph_phoIso = cms.InputTag("photonIDValueMapProducer:phoPhotonIsolation") + PhoProbeVariablesToStore.ph_chWorIso = cms.InputTag("photonIDValueMapProducer:phoWorstChargedIsolation") TagVariablesToStore = cms.PSet( Ele_eta = cms.string("eta"), @@ -142,19 +192,27 @@ Ele_et = cms.string("et"), Ele_e = cms.string("energy"), Ele_q = cms.string("charge"), - + Ele_3charge = cms.string("chargeInfo().isGsfCtfScPixConsistent"), + ## super cluster quantities sc_e = cms.string("superCluster.energy"), - sc_et = cms.string("superCluster.energy*sin(superClusterPosition.theta)"), + sc_et = cms.string("superCluster.energy*sin(superClusterPosition.theta)"), sc_eta = cms.string("-log(tan(superClusterPosition.theta/2))"), sc_abseta = cms.string("abs(-log(tan(superCluster.position.theta/2)))"), # Ele_mHits = cms.InputTag("eleVarHelper:missinghits"), Ele_dz = cms.InputTag("eleVarHelper:dz"), Ele_dxy = cms.InputTag("eleVarHelper:dxy"), - Ele_nonTrigMVA = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15NonTrig25nsV1Values"), - Ele_trigMVA = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring15Trig25nsV1Values"), + el_sip = cms.InputTag("eleVarHelper:sip"), + Ele_nonTrigMVA80X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), + Ele_hzzMVA80X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), + Ele_trigMVA = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"), + + Ele_noIsoMVA94X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"), + Ele_IsoMVA94X = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"), + Ele_noIsoMVA94XV2 = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values"), + Ele_IsoMVA94XV2 = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV2Values"), ) CommonStuffForGsfElectronProbe = cms.PSet( @@ -164,10 +222,9 @@ pairVariables = cms.PSet(ZVariablesToStore), tagVariables = cms.PSet(TagVariablesToStore), - ignoreExceptions = cms.bool (True), addRunLumiInfo = cms.bool (True), pileupInfoTag = cms.InputTag("slimmedAddPileupInfo"), - vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"), + vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"), beamSpot = cms.InputTag("offlineBeamSpot"), addCaloMet = cms.bool(False), pfMet = cms.InputTag("slimmedMETsPuppi"), @@ -177,8 +234,8 @@ pairFlags = cms.PSet( # mass60to120 = cms.string("60 < mass < 120") ), - tagFlags = cms.PSet(), - + tagFlags = cms.PSet(), + ) CommonStuffForPhotonProbe = CommonStuffForGsfElectronProbe.clone() @@ -187,26 +244,30 @@ CommonStuffForSuperClusterProbe = CommonStuffForGsfElectronProbe.clone() CommonStuffForSuperClusterProbe.variables = cms.PSet(SCProbeVariablesToStore) -mcTruthCommonStuff = cms.PSet( - isMC = cms.bool(True), - tagMatches = cms.InputTag("genTagEle"), - motherPdgId = cms.vint32(), - #motherPdgId = cms.vint32(22,23), - #motherPdgId = cms.vint32(443), # JPsi - #motherPdgId = cms.vint32(553), # Yupsilon - makeMCUnbiasTree = cms.bool(False), - #checkMotherInUnbiasEff = cms.bool(False), - mcVariables = cms.PSet( - probe_eta = cms.string("eta"), - probe_phi = cms.string("phi"), - probe_et = cms.string("et"), - probe_e = cms.string("energy"), - ), - mcFlags = cms.PSet( - probe_flag = cms.string("pt>0") - ), - ) +def getTnPVariablesForMCTruth(isMC=True): + if isMC: + return cms.PSet( + isMC = cms.bool(True), + tagMatches = cms.InputTag("genTagEle"), + motherPdgId = cms.vint32(), + #motherPdgId = cms.vint32(22,23), + #motherPdgId = cms.vint32(443), # JPsi + #motherPdgId = cms.vint32(553), # Yupsilon + makeMCUnbiasTree = cms.bool(False), + #checkMotherInUnbiasEff = cms.bool(False), + mcVariables = cms.PSet( + probe_eta = cms.string("eta"), + probe_phi = cms.string("phi"), + probe_et = cms.string("et"), + probe_e = cms.string("energy"), + ), + mcFlags = cms.PSet( + probe_flag = cms.string("pt>0") + ), + ) + else: + return cms.PSet(isMC = cms.bool(False)) def setupTnPVariablesForAOD(): @@ -225,4 +286,3 @@ def setupTnPVariablesForAOD(): del CommonStuffForGsfElectronProbe.variables.el_ecalIso del CommonStuffForGsfElectronProbe.variables.el_hcalIso del CommonStuffForGsfElectronProbe.variables.el_trkIso - diff --git a/python/egmTreesSetup_cff.py b/python/egmTreesSetup_cff.py index ec7a2ebd0df..e9aaba2c7ad 100644 --- a/python/egmTreesSetup_cff.py +++ b/python/egmTreesSetup_cff.py @@ -1,5 +1,6 @@ import FWCore.ParameterSet.Config as cms - +from EgammaAnalysis.TnPTreeProducer.logger import getLogger +log = getLogger() ################################################################################### ################ --- TAG AND PROBE collections @@ -10,21 +11,23 @@ def setTagsProbes(process, options): eleHLTProducer = 'PatElectronTriggerCandProducer' gamHLTProducer = 'PatPhotonTriggerCandProducer' - hltObjects = 'selectedPatTrigger' + hltObjects = 'selectedPatTrigger' if options['use80X'] else 'slimmedPatTrigger' genParticles = 'prunedGenParticles' - SCEleMatcher = 'PatElectronMatchedCandidateProducer' + SCEleMatcher = 'PatElectronMatchedCandidateProducer' + + if (options['useAOD']): eleHLTProducer = 'GsfElectronTriggerCandProducer' gamHLTProducer = 'PhotonTriggerCandProducer' hltObjects = 'hltTriggerSummaryAOD' genParticles = 'genParticles' - SCEleMatcher = 'GsfElectronMatchedCandidateProducer' + SCEleMatcher = 'GsfElectronMatchedCandidateProducer' goodPartDef.setGoodParticlesAOD( process, options ) else: goodPartDef.setGoodParticlesMiniAOD( process, options ) - - + + ####################### TAG ELECTRON ############################ process.tagEle = cms.EDProducer(eleHLTProducer, filterNames = cms.vstring(options['TnPHLTTagFilters']), @@ -38,13 +41,32 @@ def setTagsProbes(process, options): ##################### PROBE ELECTRONs ########################### process.probeEle = process.tagEle.clone() process.probeEle.filterNames = cms.vstring(options['TnPHLTProbeFilters']) - process.probeEle.inputs = cms.InputTag("goodElectrons") + process.probeEle.inputs = cms.InputTag("goodElectrons") ################# PROBE ELECTRONs passHLT ####################### - process.probeElePassHLT = process.tagEle.clone() - process.probeElePassHLT.inputs = cms.InputTag("probeEle") - process.probeElePassHLT.filterNames = cms.vstring(options['HLTFILTERTOMEASURE']) - process.probeElePassHLT.isAND = cms.bool(False) + process.probeElePassHLT = process.tagEle.clone() + process.probeElePassHLT.inputs = cms.InputTag("probeEle") + process.probeElePassHLT.isAND = cms.bool(False) + + ################# PROBE Matched to L1 ####################### + if options['ApplyL1Matching']: + log.info("L1 matching will be applied for %s" % ', '.join([f.replace('L1match','') for f in options['HLTFILTERSTOMEASURE'].keys() if 'L1match' in f])) + process.goodElectronProbesL1 = cms.EDProducer("PatElectronL1Stage2CandProducer", + inputs = cms.InputTag("goodElectrons"), + objects = cms.InputTag("caloStage2Digis:EGamma"), + minET = cms.double(options['L1Threshold']), #lead eff only + dRmatch = cms.double(0.2), #match L1 online to hlt in EB + dRmatchEE = cms.double(0.2), #match L1 online to hlt in EE + isolatedOnly = cms.bool(False) + ) + process.probeEleL1matched = process.probeEle.clone() + process.probeEleL1matched.inputs = cms.InputTag("goodElectronProbesL1") + process.probeElePassHLTL1matched = process.probeElePassHLT.clone() + process.probeElePassHLTL1matched.inputs = cms.InputTag("probeEleL1matched") + + for flag, filterNames in options['HLTFILTERSTOMEASURE'].iteritems(): + if 'L1match' in flag: setattr(process, flag, process.probeElePassHLTL1matched.clone(filterNames=filterNames)) + else: setattr(process, flag, process.probeElePassHLT.clone(filterNames=filterNames)) ###################### PROBE PHOTONs ############################ process.probePho = cms.EDProducer( gamHLTProducer, @@ -56,8 +78,8 @@ def setTagsProbes(process, options): isAND = cms.bool(True) ) if options['useAOD'] : process.probePho = process.goodPhotons.clone() - - ######################### PROBE SCs ############################# + + ######################### PROBE SCs ############################# process.probeSC = cms.EDProducer("RecoEcalCandidateTriggerCandProducer", filterNames = cms.vstring(options['TnPHLTProbeFilters']), inputs = cms.InputTag("goodSuperClusters"), @@ -66,7 +88,7 @@ def setTagsProbes(process, options): dR = cms.double(0.3), isAND = cms.bool(True) ) - + process.probeSCEle = cms.EDProducer( SCEleMatcher, src = cms.InputTag("superClusterCands"), ReferenceElectronCollection = cms.untracked.InputTag("goodElectrons"), @@ -78,12 +100,15 @@ def setTagsProbes(process, options): cut_gen_standard = 'abs(pdgId) == 11 && pt > 3 && abs(eta) < 2.7 && isPromptFinalState' cut_gen_flashgg = 'abs(pdgId) == 11 && pt > 3 && abs(eta) < 2.7 && ( isPromptFinalState || status == 23)' cut_gen_tau = 'abs(pdgId) == 11 && pt > 3 && abs(eta) < 2.7 && ( isPromptFinalState || isDirectPromptTauDecayProductFinalState) ' - + process.genEle = cms.EDFilter( "GenParticleSelector", - src = cms.InputTag(genParticles), + src = cms.InputTag(genParticles), cut = cms.string(cut_gen_standard), ) - +# process.VpTFilter = cms.EDFilter( "VpTFilter", +# src = cms.InputTag(genParticles), +# # cut = cms.string(cut_gen_standard), +# ) process.genTagEle = cms.EDProducer("MCMatcher", src = cms.InputTag("tagEle"), matched = cms.InputTag("genEle"), @@ -94,25 +119,25 @@ def setTagsProbes(process, options): maxDPtRel = cms.double(50.0), # Minimum deltaPt/Pt for the match resolveAmbiguities = cms.bool(False), # Forbid two RECO objects to match to the same GEN objec resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first - ) - + ) + process.genProbeEle = process.genTagEle.clone( src = cms.InputTag("probeEle") ) process.genProbePho = process.genTagEle.clone( src = cms.InputTag("probePho") ) process.genProbeSC = process.genTagEle.clone( src = cms.InputTag("probeSC") ) - - + + ########################### TnP pairs ############################ - masscut = cms.string("50 This means we can never add VID results to the collection making goodElectrons... + # The DataEmbedder (slimmedElectronsWithUserData) breaks the references, so we need to run VID and EleVarHelper after it --> Again, can never add VID results as userFloats + # Solution: make a temp electron collection with VID, use it to calculate the TTHMVA, and then teach the SusyElectronVariableHelper to load 2 electron collections, taking MVATTH from the temp one and adding it as a susyEleVarHelper variable. That way, the susyEleVarHelper re-establishes the link between TTHMVA and the main electron collection + + process.susy_sequence = cms.Sequence() + + if (doJEC) : + process.susy_sequence += process.jetCorrFactors + process.susy_sequence += process.updatedJets + + process.susy_sequence += process.ptRatioRelForEleUncorr + process.susy_sequence += process.isoForEle + process.susy_sequence += process.ptRatioRelForEle + process.susy_sequence += process.slimmedElectronsWithUserData + + process.susy_sequence_requiresVID = cms.Sequence( + process.slimmedElectronsWithUserDataWithVID + + process.electronMVATTH + + process.susyEleVarHelper + ) + + diff --git a/python/etc/__init__.py b/python/etc/__init__.py new file mode 100644 index 00000000000..13a1f71f0bb --- /dev/null +++ b/python/etc/__init__.py @@ -0,0 +1 @@ +#Automatically created by SCRAM diff --git a/python/etc/tnpInputTestFiles_cff.py b/python/etc/tnpInputTestFiles_cff.py index 7a92965799f..c0aa7da835c 100644 --- a/python/etc/tnpInputTestFiles_cff.py +++ b/python/etc/tnpInputTestFiles_cff.py @@ -1,29 +1,62 @@ import FWCore.ParameterSet.Config as cms -filesMiniAOD_23Sep2016 = { - 'mc' : cms.untracked.vstring( - '/store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root', - '/store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/0EA60289-18C4-E611-8A8F-008CFA110AB4.root', - '/store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/101D622A-85C4-E611-A7C2-C4346BC80410.root', - ), - - 'data' : cms.untracked.vstring( - '/store/data/Run2016B/SingleElectron/MINIAOD/23Sep2016-v2/80000/08A02DC3-608C-E611-ADA5-0025905B85B6.root', - '/store/data/Run2016B/SingleElectron/MINIAOD/23Sep2016-v2/80000/0C9C7188-708C-E611-A4D7-0025907DE266.root', - '/store/data/Run2016B/SingleElectron/MINIAOD/23Sep2016-v2/80000/14415255-6B8C-E611-87D3-002590E3A212.root', - ) -} - -filesAOD_23Sep2016 = { - 'mc' : cms.untracked.vstring( - '/store/mc/RunIISummer16DR80Premix/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/AODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v1/110000/00389155-1FB1-E611-A88A-001E674FB207.root', - '/store/mc/RunIISummer16DR80Premix/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/AODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v1/110000/003C5386-7DB1-E611-9FD3-A0000420FE80.root', - '/store/mc/RunIISummer16DR80Premix/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/AODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v1/110000/009A908B-9BB1-E611-936F-848F69FD4CB2.root', - '/store/mc/RunIISummer16DR80Premix/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/AODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v1/110000/00B371BA-8BB1-E611-8D83-24BE05CEEC21.root', - ), - 'data' : cms.untracked.vstring( - '/store/data/Run2016B/SingleElectron/AOD/23Sep2016-v2/80000/0220DA0C-648C-E611-A9AA-0CC47A78A2F6.root', - '/store/data/Run2016B/SingleElectron/AOD/23Sep2016-v2/80000/022664AC-618C-E611-B6D4-0CC47A78A3EC.root', - '/store/data/Run2016B/SingleElectron/AOD/23Sep2016-v2/80000/02DE6A4E-6A8C-E611-9241-00259048AC76.root', - ) +# Some miniAOD testfiles, about 1000 events copied to our eos storage +# (not running directly on datasets because they get moved around all the time and xrootd sucks) +filesMiniAOD_2018 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIIAutumn18MiniAOD-DYJetsToLL_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/Egamma-Run2018A-17Sep2018-v2.root'), +} + +filesMiniAOD_2017 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIIFall17MiniAODv2-DYJetsToLL_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2017B-31Mar2018-v1.root'), +} + +filesMiniAOD_2016 = { + 'mc' : cms.untracked.vstring('file:/eos/user/r/ryi/TagandProbe/TnP2016post/04A698D5-2AF9-B548-9A6D-DB5AFE92F0A6.root'), + 'data' : cms.untracked.vstring('file:/eos/user/r/ryi/TagandProbe/TnP2016post/04A698D5-2AF9-B548-9A6D-DB5AFE92F0A6.root'),#test file from root://cmsxrootd.fnal.gov//store/mc/RunIISummer20UL16NanoAODv9/DYJetsToLL_LHEFilterPtZ-0To50_MatchEWPDG20_TuneCP5_13TeV-amcatnloFXFX-pythia8/NANOAODSIM/106X_mcRun2_asymptotic_v17-v1/2430000/04D22720-70D4-AE43-A8D2-A7B20170D2D0.root . +} + + +# Some miniAOD UL testfiles, which are available now and hopefully don't get deleted too soon +filesMiniAOD_UL2016preVFP = { + 'mc': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL16MiniAODAPV-DYJetsToLL_M-50.root'), + 'data': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2016E-21Feb2020_UL2016_HIPM.root'), +} + +filesMiniAOD_UL2016postVFP = { + 'mc': cms.untracked.vstring(''), + 'data': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2016F-21Feb2020_UL2016-postVFP.root'), +} + +filesMiniAOD_UL2018 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL18MiniAOD-DYJetsToEE_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/Egamma-Run2018D-12Nov2019_UL2018.root'), +} + +filesMiniAOD_UL2017 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL17MiniAOD-DYJetsToLL_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2017F-09Aug2019_UL2017.root'), +} + + +# AOD UL testfiles +filesAOD_UL2016preVFP = { + 'mc': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL16RECOAPV-DYJetsToLL_M-50.root'), + 'data': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2016E-21Feb2020_UL2016_HIPM-AOD.root'), +} + +filesAOD_UL2016postVFP = { + 'mc': cms.untracked.vstring(''), + 'data': cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2016F-21Feb2020_UL2016-postVFP-AOD.root'), +} + +filesAOD_UL2018 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL18RECO-DYToEE_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/Egamma-Run2018D-12Nov2019_UL2018-AOD.root'), +} + +filesAOD_UL2017 = { + 'mc' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/RunIISummer19UL17RECO-DYToEE_M-50.root'), + 'data' : cms.untracked.vstring('file:/eos/cms/store/group/phys_egamma/tnpTuples/testFiles/SingleElectron-Run2017F-09Aug2019_UL2017-AOD.root'), } diff --git a/python/leptonMva_cff.py b/python/leptonMva_cff.py new file mode 100644 index 00000000000..23266648a8f --- /dev/null +++ b/python/leptonMva_cff.py @@ -0,0 +1,126 @@ +import FWCore.ParameterSet.Config as cms + +# +# Sequence to add lepton MVA +# +def leptonMvaSequence(process, options, tnpVars): + # + # One difficulty with lepton mva's is that their input variables are dependent on jet variables, so we need JEC etc... to be in sync + # By default we simply re-run the JEC and needed b-tag algorithms, to be sure they are in sync with the used global tag, assuming the training was also up to date + # + if(options['isMC']): jetCorrectorLevels = ['L1FastJet', 'L2Relative', 'L3Absolute'] + else: jetCorrectorLevels = ['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual'] + + from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection + updateJetCollection( + process, + jetSource = cms.InputTag('slimmedJets'), + labelName = 'Updated', + jetCorrections = ('AK4PFchs', cms.vstring(jetCorrectorLevels), 'None'), + btagDiscriminators = [ + # 'pfDeepCSVJetTags:probb', # ghent lepton mva uses older version of pfDeepCSV it seems, so do not re-run these + # 'pfDeepCSVJetTags:probbb', + 'pfDeepFlavourJetTags:probb', + 'pfDeepFlavourJetTags:probbb', + 'pfDeepFlavourJetTags:problepb', + ], + ) + leptonMva_sequence = cms.Sequence(process.patAlgosToolsTask) + + # + # For the calculation of isolations and jet-lep variables we rely on the NanoAOD modules + # Because in some PAGs people like to use prehistoric effective areas (or some lepton mva developer found 0.00001% better discrimination with those), + # we need to have the PFIso and MiniIso in all its variations (at least they all use them relative to the lepton pt) + # + from PhysicsTools.NanoAOD.electrons_cff import isoForEle, ptRatioRelForEle + process.ptRatioRelForEle = ptRatioRelForEle + process.ptRatioRelForEle.srcJet = cms.InputTag('selectedUpdatedPatJetsUpdated') + leptonMva_sequence += cms.Sequence(process.ptRatioRelForEle) + + def makeIsoForEle(leptonMva_sequence, name, effAreas): + isoForEleModule = isoForEle.clone(relative = cms.bool(True)) + setattr(isoForEleModule, 'EAFile_MiniIso', cms.FileInPath(effAreas)) + setattr(isoForEleModule, 'EAFile_PFIso', cms.FileInPath(effAreas)) + setattr(process, name, isoForEleModule) + leptonMva_sequence += cms.Sequence(getattr(process, name)) + + makeIsoForEle(leptonMva_sequence, 'isoForEleFall17', 'RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt') + makeIsoForEle(leptonMva_sequence, 'isoForEleSummer16', 'RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt') + makeIsoForEle(leptonMva_sequence, 'isoForEleSpring15', 'RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt') + + # + # Calculate the lepton mva's + # (at some point we can clean up the older TTH and Ghent ones, keeping only the TOP) + # + process.leptonMvaTTH = cms.EDProducer('LeptonMvaProducer', + leptonMvaType = cms.string("leptonMvaTTH"), + weightFile = cms.FileInPath('EgammaAnalysis/TnPTreeProducer/data/el_ttH%s_BDTG.weights.xml' % ('16' if '2016' in options['era'] else '17')), + probes = cms.InputTag('slimmedElectrons'), + miniIsoChg = cms.InputTag('isoForEle%s:miniIsoChg' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + miniIsoAll = cms.InputTag('isoForEle%s:miniIsoAll' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + ptRatio = cms.InputTag('ptRatioRelForEle:ptRatio'), + ptRel = cms.InputTag('ptRatioRelForEle:ptRel'), + jetNDauChargedMVASel = cms.InputTag('ptRatioRelForEle:jetNDauChargedMVASel'), + closestJet = cms.InputTag('ptRatioRelForEle:jetForLepJetVar'), + mvas = cms.InputTag('electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values'), + debug = cms.bool(False), # set to True if you want to sync with your analysis + ) + + process.leptonMvaGhent = cms.EDProducer('LeptonMvaProducer', + leptonMvaType = cms.string("leptonMvaGhent"), + weightFile = cms.FileInPath('EgammaAnalysis/TnPTreeProducer/data/el_tZqTTV%s_BDTG.weights.xml' % ('16' if '2016' in options['era'] else '17')), + probes = cms.InputTag('slimmedElectrons'), + miniIsoChg = cms.InputTag('isoForEle%s:miniIsoChg' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + miniIsoAll = cms.InputTag('isoForEle%s:miniIsoAll' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + PFIsoAll = cms.InputTag('isoForEle%s:PFIsoAll' % ('Summer16' if '2016' in options['era'] else 'Fall17')), + ptRatio = cms.InputTag('ptRatioRelForEle:ptRatio'), + ptRel = cms.InputTag('ptRatioRelForEle:ptRel'), + jetNDauChargedMVASel = cms.InputTag('ptRatioRelForEle:jetNDauChargedMVASel'), + closestJet = cms.InputTag('ptRatioRelForEle:jetForLepJetVar'), + mvas = cms.InputTag('electronMVAValueMapProducer:ElectronMVAEstimator%sValues' % ('Run2Spring16GeneralPurposeV1' if '2016' in options['era'] else 'Run2Fall17NoIsoV1')), + debug = cms.bool(False), # set to True if you want to sync with your analysis + ) + + # RemoveStrings = ['20', 'UL', 'preVFP', 'postVFP'] + + process.leptonMvaTOP = cms.EDProducer('LeptonMvaProducer', + leptonMvaType = cms.string("leptonMvaTOP"), + weightFile = cms.FileInPath('EgammaAnalysis/TnPTreeProducer/data/el_TOP%s_BDTG.weights.xml' % (options['era'].replace('20', '').replace('UL', '').replace('preVFP','').replace('postVFP',''))), + probes = cms.InputTag('slimmedElectrons'), + miniIsoChg = cms.InputTag('isoForEle%s:miniIsoChg' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + miniIsoAll = cms.InputTag('isoForEle%s:miniIsoAll' % ('Spring15' if '2016' in options['era'] else 'Fall17')), + PFIsoAll = cms.InputTag('isoForEle%s:PFIsoAll' % ('Summer16' if '2016' in options['era'] else 'Fall17')), + ptRatio = cms.InputTag('ptRatioRelForEle:ptRatio'), + ptRel = cms.InputTag('ptRatioRelForEle:ptRel'), + jetNDauChargedMVASel = cms.InputTag('ptRatioRelForEle:jetNDauChargedMVASel'), + closestJet = cms.InputTag('ptRatioRelForEle:jetForLepJetVar'), + mvas = cms.InputTag('electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values'), + debug = cms.bool(False), # set to True if you want to sync with your analysis + ) + + leptonMva_sequence += cms.Sequence( + process.leptonMvaTTH + + process.leptonMvaGhent + + process.leptonMvaTOP + ) + + # + # Adding the new variables to the trees + # (currently only adding most recent version of miniIso) + # + newVariables = { + 'el_leptonMva_ttH' : cms.InputTag('leptonMvaTTH:leptonMvaTTH'), + 'el_leptonMva_ghent' : cms.InputTag('leptonMvaGhent:leptonMvaGhent'), + 'el_leptonMva_TOP' : cms.InputTag('leptonMvaTOP:leptonMvaTOP'), + 'el_miniIsoAll_fall17' : cms.InputTag('isoForEleFall17:miniIsoAll'), + 'el_miniIsoChg_fall17' : cms.InputTag('isoForEleFall17:miniIsoChg'), + 'el_relIso_fall17' : cms.InputTag('isoForEleFall17:PFIsoAll'), + 'el_ptRatio' : cms.InputTag('ptRatioRelForEle:ptRatio'), + 'el_ptRel' : cms.InputTag('ptRatioRelForEle:ptRel'), + 'el_closestJetDeepFlavour' : cms.InputTag('leptonMvaTOP:closestJetDeepFlavour'), # For those crazy people who want to add even more cuts on top of their leptonMva but can't tell why they need it + 'el_closestJetDeepCsv' : cms.InputTag('leptonMvaTOP:closestJetDeepCsv'), + } + for i, j in newVariables.iteritems(): + setattr(tnpVars.CommonStuffForGsfElectronProbe.variables, i, j) + + return leptonMva_sequence diff --git a/python/logger.py b/python/logger.py new file mode 100644 index 00000000000..aef3cfccd91 --- /dev/null +++ b/python/logger.py @@ -0,0 +1,40 @@ +# +# Logger module +# +import logging, sys + +def getLogger(level='INFO', logFile=None): + # If it already exist, return it + logger = logging.getLogger('main') + if logger.handlers: + return logger + + numeric_level = getattr(logging, level.upper(), None) + if not isinstance(numeric_level, int): + raise ValueError("Invalid log level: %s" % level) + + logger.setLevel(numeric_level) + formatter = logging.Formatter('%(asctime)s %(module)20s %(levelname)7s - %(message)s') + if logFile: + # create the logging file handler + fileHandler = logging.FileHandler(logFile, mode='w') + fileHandler.setFormatter(formatter) + # add handler to logger object + logger.addHandler(fileHandler) + + # create console handler and set level to debug + ch = logging.StreamHandler() + ch.setLevel(logging.DEBUG) + ch.setFormatter(formatter) + logger.addHandler(ch) + + # log the exceptions to the logger + def excepthook(*args): + logger.error("Uncaught exception:", exc_info=args) + + sys.excepthook = excepthook + logger.info('Command: ' + ' '.join(sys.argv)) + return logger + +def logLevel(logger, level): + return logger.getEffectiveLevel() <= logging.getLevelName(level) diff --git a/python/pileupConfiguration_cff.py b/python/pileupConfiguration_cff.py new file mode 100644 index 00000000000..f13907c31de --- /dev/null +++ b/python/pileupConfiguration_cff.py @@ -0,0 +1,31 @@ +import FWCore.ParameterSet.Config as cms + +def setPileUpConfiguration(process, options): + if '2016' in options['era']: from SimGeneral.MixingModule.mix_2016_25ns_Moriond17MC_PoissonOOTPU_cfi import mix + elif '2017' in options['era']: from SimGeneral.MixingModule.mix_2017_25ns_WinterMC_PUScenarioV1_PoissonOOTPU_cfi import mix + elif '2018' in options['era']: from SimGeneral.MixingModule.mix_2018_25ns_JuneProjectionFull18_PoissonOOTPU_cfi import mix + + #### DATA PU DISTRIBUTIONS + data_pu_distribs = {"Jamboree_golden_JSON" : [5.12e+04,3.66e+05,5.04e+05,4.99e+05,7.5e+05,1.1e+06,2.53e+06,9.84e+06,4.4e+07,1.14e+08,1.94e+08,2.63e+08,2.96e+08,2.74e+08,2.06e+08,1.26e+08,6.38e+07,2.73e+07,1.1e+07,5.2e+06,3.12e+06,1.87e+06,9.35e+05,3.64e+05,1.1e+05,2.64e+04,5.76e+03,1.53e+03,594,278,131,59.8,26,10.8,4.29,1.62,0.587,0.203,0.0669,0.0211,0.00633,0.00182,0.000498,0.00013,3.26e-05,7.77e-06,1.77e-06,3.85e-07,7.99e-08,1.58e-08,3e-09,5.43e-10], + "ICHEP2016_JSON_4.0fb_xSec71.3mb" : [1.78e+03,2.69e+04,1.78e+05,4.71e+05,7.61e+05,1.02e+06,1.48e+06,7.35e+06,2.3e+07,3.75e+07,6.01e+07,9.32e+07,1.41e+08,2.09e+08,2.88e+08,3.53e+08,3.93e+08,4.09e+08,4e+08,3.69e+08,3.23e+08,2.69e+08,2.12e+08,1.57e+08,1.09e+08,6.96e+07,4.09e+07,2.19e+07,1.07e+07,4.8e+06,1.99e+06,7.76e+05,2.9e+05,1.07e+05,4.22e+04,1.95e+04,1.16e+04,8.73e+03,7.5e+03,6.85e+03,6.44e+03,6.16e+03,5.96e+03,5.81e+03,5.67e+03,5.53e+03,5.38e+03,5.21e+03,5.01e+03,4.78e+03], + "ICHEP2016_JSON_5.7fb_xSec69.0mb" : [2.34e+03,7.7e+04,3.71e+05,7.77e+05,1.17e+06,1.64e+06,2.75e+06,1.34e+07,3.91e+07,8e+07,1.38e+08,1.94e+08,2.57e+08,3.41e+08,4.32e+08,5.08e+08,5.53e+08,5.63e+08,5.42e+08,4.98e+08,4.35e+08,3.6e+08,2.79e+08,2.01e+08,1.33e+08,8.23e+07,4.75e+07,2.58e+07,1.33e+07,6.59e+06,3.16e+06,1.47e+06,6.65e+05,2.91e+05,1.24e+05,5.3e+04,2.4e+04,1.28e+04,8.59e+03,7.04e+03,6.42e+03,6.13e+03,5.95e+03,5.79e+03,5.64e+03,5.47e+03,5.27e+03,5.04e+03,4.79e+03,4.51e+03], + "ICHEP2016_JSON_12.9fb_xSec63.0mb": [5.05e+03,2.41e+05,7.83e+05,1.74e+06,2.37e+06,3.41e+06,6.12e+06,2.43e+07,6.78e+07,1.45e+08,2.57e+08,4.06e+08,5.63e+08,7.06e+08,8.41e+08,9.54e+08,1.03e+09,1.06e+09,1.06e+09,1.02e+09,9.47e+08,8.51e+08,7.41e+08,6.19e+08,4.93e+08,3.72e+08,2.67e+08,1.82e+08,1.18e+08,7.18e+07,4.13e+07,2.24e+07,1.15e+07,5.57e+06,2.56e+06,1.12e+06,4.7e+05,1.92e+05,7.78e+04,3.3e+04,1.61e+04,9.87e+03,7.67e+03,6.92e+03,6.66e+03,6.56e+03,6.49e+03,6.4e+03,6.28e+03,6.12e+03], + "MORIOND2017_JSON_36fb_xSec69.2mb": [2.39e+05,8.38e+05,2.31e+06,3.12e+06,4.48e+06,6e+06,7e+06,1.29e+07,3.53e+07,7.87e+07,1.77e+08,3.6e+08,6.03e+08,8.77e+08,1.17e+09,1.49e+09,1.76e+09,1.94e+09,2.05e+09,2.1e+09,2.13e+09,2.15e+09,2.13e+09,2.06e+09,1.96e+09,1.84e+09,1.7e+09,1.55e+09,1.4e+09,1.24e+09,1.09e+09,9.37e+08,7.92e+08,6.57e+08,5.34e+08,4.27e+08,3.35e+08,2.58e+08,1.94e+08,1.42e+08,1.01e+08,6.9e+07,4.55e+07,2.88e+07,1.75e+07,1.02e+07,5.64e+06,2.99e+06,1.51e+06,7.32e+05,3.4e+05,1.53e+05,6.74e+04,3.05e+04,1.52e+04,8.98e+03,6.5e+03,5.43e+03,4.89e+03,4.52e+03,4.21e+03,3.91e+03,3.61e+03,3.32e+03,3.03e+03,2.75e+03,2.47e+03,2.21e+03,1.97e+03,1.74e+03,1.52e+03,1.32e+03,1.14e+03,983,839], + "2017_DATA_xSec69.2mb_2Nov": [5.55e+04,1.81e+05,3.55e+05,1.16e+06,1.69e+06,2.36e+06,3.16e+06,3.54e+06,4.19e+06,6.16e+06,1.17e+07,2.41e+07,4.82e+07,8.91e+07,1.49e+08,2.29e+08,3.32e+08,4.53e+08,5.71e+08,6.74e+08,7.6e+08,8.22e+08,8.59e+08,8.88e+08,9.22e+08,9.64e+08,1.01e+09,1.04e+09,1.06e+09,1.05e+09,1.02e+09,9.58e+08,8.83e+08,7.96e+08,7.03e+08,6.06e+08,5.11e+08,4.2e+08,3.37e+08,2.64e+08,2.02e+08,1.51e+08,1.11e+08,7.93e+07,5.56e+07,3.83e+07,2.59e+07,1.73e+07,1.14e+07,7.37e+06,4.73e+06,3e+06,1.88e+06,1.17e+06,7.18e+05,4.37e+05,2.62e+05,1.56e+05,9.2e+04,5.37e+04,3.11e+04,1.79e+04,1.02e+04], + "2017_DATA_xSec69.2mb_94X_17Jan": [2.6e+05,1.08e+06,2.09e+06,3.69e+06,4.09e+06,5.85e+06,6.31e+06,6.75e+06,9.53e+06,2.3e+07,4.52e+07,8.5e+07,1.32e+08,1.89e+08,2.68e+08,3.78e+08,5.29e+08,7.04e+08,8.77e+08,1.04e+09,1.18e+09,1.29e+09,1.37e+09,1.44e+09,1.5e+09,1.55e+09,1.6e+09,1.63e+09,1.64e+09,1.61e+09,1.57e+09,1.51e+09,1.43e+09,1.34e+09,1.24e+09,1.14e+09,1.04e+09,9.46e+08,8.64e+08,7.96e+08,7.46e+08,7.16e+08,7.08e+08,7.2e+08,7.47e+08,7.78e+08,8.03e+08,8.1e+08,7.89e+08,7.38e+08,6.59e+08,5.61e+08,4.56e+08,3.55e+08,2.65e+08,1.92e+08,1.35e+08,9.3e+07,6.34e+07,4.32e+07,2.97e+07,2.07e+07,1.48e+07,1.08e+07,8.14e+06,6.27e+06,4.93e+06,3.92e+06,3.14e+06,2.52e+06,2.02e+06,1.61e+06,1.28e+06,1.01e+06,7.85e+05,6.06e+05,4.63e+05,3.5e+05,2.61e+05,1.93e+05,1.4e+05,1.01e+05,7.14e+04,4.99e+04,3.44e+04,2.34e+04,1.56e+04,1.03e+04,6.67e+03,4.26e+03,2.67e+03,1.65e+03,1e+03,598,351,202,115,63.9,35,18.8], + "2018_DATA_xSec69.2mb": [2.91e+05,1.02e+06,3.12e+06,6.82e+06,1.2e+07,1.86e+07,2.75e+07,4e+07,5.65e+07,7.82e+07,1.09e+08,1.53e+08,2.12e+08,2.9e+08,3.89e+08,5.1e+08,6.54e+08,8.22e+08,1.01e+09,1.2e+09,1.39e+09,1.56e+09,1.71e+09,1.83e+09,1.93e+09,2e+09,2.06e+09,2.12e+09,2.17e+09,2.22e+09,2.27e+09,2.32e+09,2.35e+09,2.37e+09,2.38e+09,2.37e+09,2.33e+09,2.27e+09,2.18e+09,2.07e+09,1.92e+09,1.76e+09,1.58e+09,1.38e+09,1.19e+09,1e+09,8.27e+08,6.69e+08,5.3e+08,4.12e+08,3.15e+08,2.37e+08,1.76e+08,1.29e+08,9.41e+07,6.78e+07,4.85e+07,3.45e+07,2.44e+07,1.72e+07,1.2e+07,8.34e+06,5.75e+06,3.93e+06,2.66e+06,1.78e+06,1.18e+06,7.72e+05,5e+05,3.21e+05,2.03e+05,1.27e+05,7.91e+04,4.87e+04,2.97e+04,1.79e+04,1.07e+04,6.35e+03,3.73e+03,2.17e+03,1.25e+03,714,402,224,123,67.1,36,19,9.93,5.1,2.58,1.29,0.632,0.305,0.145,0.0679,0.0313,0.0142,0.0063,0.00276], + } + + if '2016' in options['era']: data_pu_distribution = data_pu_distribs['MORIOND2017_JSON_36fb_xSec69.2mb'] + elif '2017' in options['era']: data_pu_distribution = data_pu_distribs['2017_DATA_xSec69.2mb_94X_17Jan'] + elif '2018' in options['era']: data_pu_distribution = data_pu_distribs['2018_DATA_xSec69.2mb'] + + process.pileupReweightingProducer = cms.EDProducer("PileupWeightProducer", + pileupInfoTag = cms.InputTag("slimmedAddPileupInfo"), + PileupMC = cms.vdouble(mix.input.nbPileupEvents.probValue), + PileupData = cms.vdouble(data_pu_distribution), + ) + if options['useAOD']: process.pileupReweightingProducer.pileupInfoTag = "addPileupInfo" + + process.mc_sequence = cms.Sequence() + if options['isMC'] : process.mc_sequence = cms.Sequence( process.pileupReweightingProducer ) diff --git a/python/pileupConfiguration_cfi.py b/python/pileupConfiguration_cfi.py deleted file mode 100644 index 4ef8cc30c92..00000000000 --- a/python/pileupConfiguration_cfi.py +++ /dev/null @@ -1,31 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -#### MC PU DISTRIBUTIONS -from SimGeneral.MixingModule.mix_2015_25ns_Startup_PoissonOOTPU_cfi import mix as mix_2015_25ns -from SimGeneral.MixingModule.mix_2015_50ns_Startup_PoissonOOTPU_cfi import mix as mix_2015_50ns -from SimGeneral.MixingModule.mix_2015_25ns_FallMC_matchData_PoissonOOTPU_cfi import mix as mix_2015_25ns_realistScenario - -from SimGeneral.MixingModule.mix_2016_25ns_SpringMC_PUScenarioV1_PoissonOOTPU_cfi import mix as mix_2016_25ns -from SimGeneral.MixingModule.mix_2016_25ns_Moriond17MC_PoissonOOTPU_cfi import mix as mix_2016_25ns_PUmoriond17 - -pu_distribs = { "74X_mcRun2_asymptotic_v2" : mix_2015_25ns.input.nbPileupEvents.probValue, - "76X_mcRun2_asymptotic_v12" : mix_2015_25ns_realistScenario.input.nbPileupEvents.probValue, - "80X_mcRun2_asymptotic_v1" : mix_2016_25ns.input.nbPileupEvents.probValue, - "80X_mcRun2_asymptotic_v2" : mix_2016_25ns_PUmoriond17.input.nbPileupEvents.probValue, - } - -#### DATA PU DISTRIBUTIONS -data_pu_distribs = {"Jamboree_golden_JSON" : [5.12e+04,3.66e+05,5.04e+05,4.99e+05,7.5e+05,1.1e+06,2.53e+06,9.84e+06,4.4e+07,1.14e+08,1.94e+08,2.63e+08,2.96e+08,2.74e+08,2.06e+08,1.26e+08,6.38e+07,2.73e+07,1.1e+07,5.2e+06,3.12e+06,1.87e+06,9.35e+05,3.64e+05,1.1e+05,2.64e+04,5.76e+03,1.53e+03,594,278,131,59.8,26,10.8,4.29,1.62,0.587,0.203,0.0669,0.0211,0.00633,0.00182,0.000498,0.00013,3.26e-05,7.77e-06,1.77e-06,3.85e-07,7.99e-08,1.58e-08,3e-09,5.43e-10], - "ICHEP2016_JSON_4.0fb_xSec71.3mb" : [1.78e+03,2.69e+04,1.78e+05,4.71e+05,7.61e+05,1.02e+06,1.48e+06,7.35e+06,2.3e+07,3.75e+07,6.01e+07,9.32e+07,1.41e+08,2.09e+08,2.88e+08,3.53e+08,3.93e+08,4.09e+08,4e+08,3.69e+08,3.23e+08,2.69e+08,2.12e+08,1.57e+08,1.09e+08,6.96e+07,4.09e+07,2.19e+07,1.07e+07,4.8e+06,1.99e+06,7.76e+05,2.9e+05,1.07e+05,4.22e+04,1.95e+04,1.16e+04,8.73e+03,7.5e+03,6.85e+03,6.44e+03,6.16e+03,5.96e+03,5.81e+03,5.67e+03,5.53e+03,5.38e+03,5.21e+03,5.01e+03,4.78e+03], - "ICHEP2016_JSON_5.7fb_xSec69.0mb" : [2.34e+03,7.7e+04,3.71e+05,7.77e+05,1.17e+06,1.64e+06,2.75e+06,1.34e+07,3.91e+07,8e+07,1.38e+08,1.94e+08,2.57e+08,3.41e+08,4.32e+08,5.08e+08,5.53e+08,5.63e+08,5.42e+08,4.98e+08,4.35e+08,3.6e+08,2.79e+08,2.01e+08,1.33e+08,8.23e+07,4.75e+07,2.58e+07,1.33e+07,6.59e+06,3.16e+06,1.47e+06,6.65e+05,2.91e+05,1.24e+05,5.3e+04,2.4e+04,1.28e+04,8.59e+03,7.04e+03,6.42e+03,6.13e+03,5.95e+03,5.79e+03,5.64e+03,5.47e+03,5.27e+03,5.04e+03,4.79e+03,4.51e+03], - "ICHEP2016_JSON_12.9fb_xSec63.0mb": [5.05e+03,2.41e+05,7.83e+05,1.74e+06,2.37e+06,3.41e+06,6.12e+06,2.43e+07,6.78e+07,1.45e+08,2.57e+08,4.06e+08,5.63e+08,7.06e+08,8.41e+08,9.54e+08,1.03e+09,1.06e+09,1.06e+09,1.02e+09,9.47e+08,8.51e+08,7.41e+08,6.19e+08,4.93e+08,3.72e+08,2.67e+08,1.82e+08,1.18e+08,7.18e+07,4.13e+07,2.24e+07,1.15e+07,5.57e+06,2.56e+06,1.12e+06,4.7e+05,1.92e+05,7.78e+04,3.3e+04,1.61e+04,9.87e+03,7.67e+03,6.92e+03,6.66e+03,6.56e+03,6.49e+03,6.4e+03,6.28e+03,6.12e+03], - "MORIOND2017_JSON_36fb_xSec69.2mb": [2.39e+05,8.38e+05,2.31e+06,3.12e+06,4.48e+06,6e+06,7e+06,1.29e+07,3.53e+07,7.87e+07,1.77e+08,3.6e+08,6.03e+08,8.77e+08,1.17e+09,1.49e+09,1.76e+09,1.94e+09,2.05e+09,2.1e+09,2.13e+09,2.15e+09,2.13e+09,2.06e+09,1.96e+09,1.84e+09,1.7e+09,1.55e+09,1.4e+09,1.24e+09,1.09e+09,9.37e+08,7.92e+08,6.57e+08,5.34e+08,4.27e+08,3.35e+08,2.58e+08,1.94e+08,1.42e+08,1.01e+08,6.9e+07,4.55e+07,2.88e+07,1.75e+07,1.02e+07,5.64e+06,2.99e+06,1.51e+06,7.32e+05,3.4e+05,1.53e+05,6.74e+04,3.05e+04,1.52e+04,8.98e+03,6.5e+03,5.43e+03,4.89e+03,4.52e+03,4.21e+03,3.91e+03,3.61e+03,3.32e+03,3.03e+03,2.75e+03,2.47e+03,2.21e+03,1.97e+03,1.74e+03,1.52e+03,1.32e+03,1.14e+03,983,839], - } - - -pileupProducer = cms.EDProducer("PileupWeightProducer", - #hardcodedWeights = cms.untracked.bool(True), - pileupInfoTag = cms.InputTag("slimmedAddPileupInfo"), - PileupMC = cms.vdouble(pu_distribs["80X_mcRun2_asymptotic_v2"]), - PileupData = cms.vdouble(data_pu_distribs["MORIOND2017_JSON_36fb_xSec69.2mb"]), - ) diff --git a/ratiotest.py b/ratiotest.py new file mode 100644 index 00000000000..8d466269c7d --- /dev/null +++ b/ratiotest.py @@ -0,0 +1,101 @@ +import ROOT +from ROOT import TCanvas, TColor, TGaxis, TH1F, TPad +from ROOT import kBlack, kBlue, kRed + +fileName1 = ROOT.TFile.Open("TnPTree_mc_80.root","READ") +fileName2 = ROOT.TFile.Open("TnPTree_mc_81.root","READ") +tree1 = fileName1.Get("tnpEleTrig/fitter_tree") +tree2 = fileName2.Get("tnpEleTrig/fitter_tree") +m1= ROOT.TH1D ("2016postVFP_NLO_amc","2016postVFP_NLO_amc",100,0,100) +m2= ROOT.TH1D ("2016postVFP_NLO_ptbinned","2016postVFP_NLO_ptbinned",100,0,100) + +for entryNum in range (0,tree1.GetEntries()): + tree1.GetEntry(entryNum) + pt = getattr(tree1,"pair_pt") + weight= getattr(tree1,"totWeight") + m1.Fill(pt,weight) +for entryNum in range (0,tree2.GetEntries()): + tree2.GetEntry(entryNum) + pt = getattr(tree2,"pair_pt") + weight= getattr(tree2,"totWeight") + m2.Fill(pt,weight) + +def createRatio(h1, h2): + h3 = h1.Clone("h3") + h3.SetLineColor(kBlack) + h3.SetMarkerStyle(21) + h3.SetTitle("") + h3.SetMinimum(0.8) + h3.SetMaximum(1.35) + # Set up plot for markers and errors + h3.Sumw2() + h3.SetStats(0) + h3.Divide(h2) + + # Adjust y-axis settings + y = h3.GetYaxis() + y.SetTitle("ratio h1/h2 ") + y.SetNdivisions(505) + y.SetTitleSize(20) + y.SetTitleFont(43) + y.SetTitleOffset(1.55) + y.SetLabelFont(43) + y.SetLabelSize(15) + + # Adjust x-axis settings + x = h3.GetXaxis() + x.SetTitleSize(20) + x.SetTitleFont(43) + x.SetTitleOffset(4.0) + x.SetLabelFont(43) + x.SetLabelSize(15) + + return h3 + + +def createCanvasPads(): + c = TCanvas("c", "canvas", 800, 800) + c.cd() + # Upper histogram plot is pad1 + pad1 = TPad("pad1", "pad1", 0, 0.3, 1, 1.0) + pad1.SetBottomMargin(0) # joins upper and lower plot + pad1.SetGridx() + pad1.Draw() + # Lower ratio plot is pad2 + c.cd() # returns to main canvas before defining pad2 + pad2 = TPad("pad2", "pad2", 0, 0.05, 1, 0.3) + pad2.SetTopMargin(0) # joins upper and lower plot + pad2.SetBottomMargin(0.2) + pad2.SetGridx() + pad2.Draw() + c.Modified() + c.Update() + return c, pad1, pad2 + + +def ratioplot(): + # create required parts + h1 = m1 + h2 = m2 + h3 = createRatio(h1, h2) +# h3=ROOT.TGraphAsymmErrors() + c, pad1, pad2 = createCanvasPads() + + # draw everything + pad1.cd() + h1.Draw() + h2.Draw("same") + h2.Scale(h1.Integral()/h2.Integral()) + h1.SetLineColor (kRed) + h2.SetLineColor (kBlack) + # to avoid clipping the bottom zero, redraw a small axis + h1.GetYaxis().SetLabelSize(0.0) + axis = TGaxis(-5, 20, -5, 220, 20, 220, 510, "") + axis.SetLabelFont(43) + axis.SetLabelSize(15) + axis.Draw() + pad2.cd() + h3.Draw("ep") + +#if __name__ == "__main__": +ratioplot() diff --git a/scripts/crab/tnpCrabSubmitAOD.py b/scripts/crab/tnpCrabSubmitAOD.py deleted file mode 100644 index 708b1b209af..00000000000 --- a/scripts/crab/tnpCrabSubmitAOD.py +++ /dev/null @@ -1,120 +0,0 @@ -from CRABClient.UserUtilities import config, getUsernameFromSiteDB -import sys -config = config() - -submitVersion = "RECOSFs_2016" - -doEleTree = 'doEleID=False' -doPhoTree = 'doPhoID=False' -doHLTTree = 'doTrigger=False' -doRECO = 'doRECO=True' - -mainOutputDir = '/store/group/phys_egamma/tnp/80X/RecoSF/%s' % submitVersion - -config.General.transferLogs = False - -config.JobType.pluginName = 'Analysis' - -# Name of the CMSSW configuration file -config.JobType.psetName = 'TnPTreeProducer_cfg.py' -config.Data.allowNonValidInputDataset = False - -config.Data.inputDBS = 'global' -config.Data.publication = False - -#config.Data.publishDataName = -config.Site.storageSite = 'T2_CH_CERN' - - -if __name__ == '__main__': - - from CRABAPI.RawCommand import crabCommand - from CRABClient.ClientExceptions import ClientException - from httplib import HTTPException - - # We want to put all the CRAB project directories from the tasks we submit here into one common directory. - # That's why we need to set this parameter (here or above in the configuration file, it does not matter, we will not overwrite it). - config.General.workArea = 'crab_%s' % submitVersion - - def submit(config): - try: - crabCommand('submit', config = config) - except HTTPException as hte: - print "Failed submitting task: %s" % (hte.headers) - except ClientException as cle: - print "Failed submitting task: %s" % (cle) - - - ##### submit MC - config.Data.outLFNDirBase = '%s/%s/' % (mainOutputDir,'mc') - config.Data.splitting = 'FileBased' - config.Data.unitsPerJob = 20 - config.JobType.pyCfgParams = ['isMC=True','isAOD=True',doEleTree,doPhoTree,doHLTTree,doRECO] - - -# config.General.requestName = 'DYToLL_mcAtNLO' -# config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/RunIISpring16DR80-PUSpring16_80X_mcRun2_asymptotic_2016_v3-v1/AODSIM' -# submit(config) -# config.General.requestName = 'DYToLL_madgraph' -# config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISpring16DR80-PUSpring16_80X_mcRun2_asymptotic_2016_v3_ext1-v1/AODSIM' -# submit(config) - - config.General.requestName = 'DYToLL_madgraph_Winter2017' - config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISummer16DR80Premix-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v1/AODSIM' - submit(config) - -# config.General.requestName = 'WJets_madgraph' -# config.Data.inputDataset = '/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISpring16MiniAODv1-PUSpring16_80X_mcRun2_asymptotic_2016_v3-v2/MINIAODSIM' -# submit(config) - -# config.General.requestName = 'ttbar_madgraph' -# config.Data.inputDataset = '/TTJets_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIIFall15MiniAODv2-PU25nsData2015v1_76X_mcRun2_asymptotic_v12-v1/MINIAODSIM' -# submit(config) - - ##### now submit DATA - config.Data.outLFNDirBase = '%s/%s/' % (mainOutputDir,'data') - config.Data.splitting = 'LumiBased' - config.Data.lumiMask = 'https://cms-service-dqm.web.cern.ch/cms-service-dqm/CAF/certification/Collisions16/13TeV/ReReco/Cert_271036-284044_13TeV_23Sep2016ReReco_Collisions16_JSON.txt' - config.Data.unitsPerJob = 100 - config.JobType.pyCfgParams = ['isMC=False','isAOD=True',doEleTree,doPhoTree,doHLTTree,doRECO,'GT=80X_dataRun2_2016SeptRepro_v4'] - - config.General.requestName = '2016rereco_RunB' - config.Data.inputDataset = '/SingleElectron/Run2016B-23Sep2016-v3/AOD' - submit(config) - - config.General.requestName = '2016rereco_RunC' - config.Data.inputDataset = '/SingleElectron/Run2016C-23Sep2016-v1/AOD' - submit(config) - - config.General.requestName = '2016rereco_RunD' - config.Data.inputDataset = '/SingleElectron/Run2016D-23Sep2016-v1/AOD' - submit(config) - - config.General.requestName = '2016rereco_RunE' - config.Data.inputDataset = '/SingleElectron/Run2016E-23Sep2016-v1/AOD' - submit(config) - - config.General.requestName = '2016rereco_RunF' - config.Data.inputDataset = '/SingleElectron/Run2016F-23Sep2016-v1/AOD' - submit(config) - - config.General.requestName = '2016rereco_RunG' - config.Data.inputDataset = '/SingleElectron/Run2016G-23Sep2016-v1/AOD' - submit(config) - - config.General.requestName = '2016prompt_RunHv1' - config.Data.inputDataset = '/SingleElectron/Run2016H-PromptReco-v1/AOD' - submit(config) - - config.General.requestName = '2016prompt_RunHv2' - config.Data.inputDataset = '/SingleElectron/Run2016H-PromptReco-v2/AOD' - submit(config) - - config.General.requestName = '2016prompt_RunHv3' - config.Data.inputDataset = '/SingleElectron/Run2016H-PromptReco-v3/AOD' - submit(config) - - - - - diff --git a/scripts/crab/tnpCrabSubmitMiniAOD.py b/scripts/crab/tnpCrabSubmitMiniAOD.py deleted file mode 100644 index 05e16ed6943..00000000000 --- a/scripts/crab/tnpCrabSubmitMiniAOD.py +++ /dev/null @@ -1,137 +0,0 @@ -from CRABClient.UserUtilities import config, getUsernameFromSiteDB -import sys -config = config() - -submitVersion = "Moriond17_GainSwitch_newTnP_v3" -doEleTree = 'doEleID=True' -doPhoTree = 'doPhoID=True' -doHLTTree = 'doTrigger=False' -calibEn = 'useCalibEn=False' - -mainOutputDir = '/store/group/phys_egamma/tnp/80X/PhoEleIDs/%s' % submitVersion - -config.General.transferLogs = False - -config.JobType.pluginName = 'Analysis' - -# Name of the CMSSW configuration file -config.JobType.psetName = 'TnPTreeProducer_cfg.py' -config.Data.allowNonValidInputDataset = False -config.JobType.sendExternalFolder = True - -config.Data.inputDBS = 'global' -config.Data.publication = False - -#config.Data.publishDataName = - -config.Site.storageSite = 'T2_CH_CERN' - - - -if __name__ == '__main__': - - from CRABAPI.RawCommand import crabCommand - from CRABClient.ClientExceptions import ClientException - from httplib import HTTPException - - # We want to put all the CRAB project directories from the tasks we submit here into one common directory. - # That's why we need to set this parameter (here or above in the configuration file, it does not matter, we will not overwrite it). - config.General.workArea = 'crab_%s' % submitVersion - - def submit(config): - try: - crabCommand('submit', config = config) - except HTTPException as hte: - print "Failed submitting task: %s" % (hte.headers) - except ClientException as cle: - print "Failed submitting task: %s" % (cle) - - - ##### submit MC - config.Data.outLFNDirBase = '%s/%s/' % (mainOutputDir,'mc') - config.Data.splitting = 'FileBased' - config.Data.unitsPerJob = 8 - config.JobType.pyCfgParams = ['isMC=True',doEleTree,doPhoTree,doHLTTree,calibEn,'GT=80X_mcRun2_asymptotic_2016_TrancheIV_v6'] - - config.General.requestName = 'ttbar_madgraph' - config.Data.inputDataset = '/TTJets_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - # sys.exit(0) - - - config.General.requestName = 'DYToLL_mcAtNLO' - config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/RunIISpring16MiniAODv2-PUSpring16_80X_mcRun2_asymptotic_2016_miniAODv2_v0-v1/MINIAODSIM' - # submit(config) - - - config.General.requestName = 'DYToLL_madgraph_Moriond17' - config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/MINIAODSIM' - submit(config) - - config.General.requestName = 'WJets_madgraph' - config.Data.inputDataset = '/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISpring16MiniAODv1-PUSpring16_80X_mcRun2_asymptotic_2016_v3-v2/MINIAODSIM' -# submit(config) - - - config.General.requestName = 'DYToEE_powheg_m50_120' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_50_120/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - config.General.requestName = 'DYToEE_powheg_m120_200' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_120_200/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - config.General.requestName = 'DYToEE_powheg_m200_400' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_200_400/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - config.General.requestName = 'DYToEE_powheg_m400_800' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_400_800/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - config.General.requestName = 'DYToEE_powheg_m800_1400' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_800_1400/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - - config.General.requestName = 'DYToEE_powheg_m1400_2300' - config.Data.inputDataset = '/ZToEE_NNPDF30_13TeV-powheg_M_1400_2300/RunIISummer16MiniAODv2-PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/MINIAODSIM' - submit(config) - -# sys.exit(0) - - ##### now submit DATA - config.Data.outLFNDirBase = '%s/%s/' % (mainOutputDir,'data') - config.Data.splitting = 'LumiBased' - config.Data.lumiMask = '/afs/cern.ch/cms/CAF/CMSCOMM/COMM_DQM/certification/Collisions16/13TeV/ReReco/Final/Cert_271036-284044_13TeV_23Sep2016ReReco_Collisions16_JSON.txt' - config.Data.unitsPerJob = 100 - config.JobType.pyCfgParams = ['isMC=False',doEleTree,doPhoTree,doHLTTree,calibEn,'GT=80X_dataRun2_2016SeptRepro_v7'] - - config.General.requestName = '2016rereco_RunB' - config.Data.inputDataset = '/SingleElectron/Run2016B-03Feb2017_ver2-v2/MINIAOD' - submit(config) - config.General.requestName = '2016rereco_RunC' - config.Data.inputDataset = '/SingleElectron/Run2016C-03Feb2017-v1/MINIAOD' - submit(config) - config.General.requestName = '2016rereco_RunD' - config.Data.inputDataset = '/SingleElectron/Run2016D-03Feb2017-v1/MINIAOD' - submit(config) - config.General.requestName = '2016rereco_RunE' - config.Data.inputDataset = '/SingleElectron/Run2016E-03Feb2017-v1/MINIAOD' - submit(config) - config.General.requestName = '2016rereco_RunF' - config.Data.inputDataset = '/SingleElectron/Run2016F-03Feb2017-v1/MINIAOD' - submit(config) - - config.JobType.pyCfgParams = ['isMC=False',doEleTree,doPhoTree,doHLTTree,calibEn,'GT=80X_dataRun2_Prompt_v16'] - config.General.requestName = '2016rereco_RunG' - config.Data.inputDataset = '/SingleElectron/Run2016G-03Feb2017-v1/MINIAOD' - submit(config) - config.General.requestName = '2016prompt_RunHv2' - config.Data.inputDataset = '/SingleElectron/Run2016H-03Feb2017_ver2-v1/MINIAOD' - submit(config) - config.General.requestName = '2016prompt_RunHv3' - config.Data.inputDataset = '/SingleElectron/Run2016H-03Feb2017_ver3-v1/MINIAOD' - submit(config) - - diff --git a/sumofweight.py b/sumofweight.py new file mode 100644 index 00000000000..10cc44e609b --- /dev/null +++ b/sumofweight.py @@ -0,0 +1,16 @@ +import glob +import ROOT +tot=0 +files=open("list.txt","r") +filenames=files.readlines() +files.close() + +tc=ROOT.TChain("Runs") +for name in filenames: +# ifile=glob.glob(name)[0] +# print(ifile) + tc.Add(name) + for iev in tc: + print(iev.genEventSumw) + tot+=iev.genEventSumw +print(tot) diff --git a/test/commitNewReferenceVersion.py b/test/commitNewReferenceVersion.py new file mode 100755 index 00000000000..d64d9f12555 --- /dev/null +++ b/test/commitNewReferenceVersion.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +import subprocess, shutil, os, glob + +# System command and retrieval of its output +def system(command): + try: + return subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + print e.output + +# Move the newly run files as the new reference +for file in glob.glob('rootfiles/*AOD.root'): + shutil.move(file, file.replace('AOD.root', 'AOD_ref.root')) + +# Commit to git +system('git add rootfiles/*AOD_ref.root') +system('git add log/*.log') +system('git commit -m"New test run finished"') diff --git a/scripts/compareTrees b/test/compareTrees similarity index 74% rename from scripts/compareTrees rename to test/compareTrees index 121f4693183..818cd020664 100755 --- a/scripts/compareTrees +++ b/test/compareTrees @@ -14,7 +14,7 @@ Setup argument parser parser = argparse.ArgumentParser(description="The program goes through the target and reference files and compare all of the branches in the given directory and tree. A branch is compared with another by going through all events and calculate the mean squared error of the values. Whether the resulting mean squared error tagges the branch as different from the reference can be controlled by the 'cut' argument. NOTE: It is assumed that the number of events of the given input ROOT files are identical!") parser.add_argument("filenameTarget", help="Path to the Tag-And-Probe ROOT file which is compared against the reference") parser.add_argument("filenameReference", help="Path to the Tag-And-Probe ROOT file which serves as reference") -parser.add_argument("-d", "--directory", default="tpTree", help="Directory in the input ROOT files which contains the Tag-And-Probe tree") +parser.add_argument("-d", "--directory", default="tnpEleTrig", help="Directory in the input ROOT files which contains the Tag-And-Probe tree") parser.add_argument("-t", "--tree", default="fitter_tree", help="Name of the tree holding the variables which shall be compared") parser.add_argument("-v", "--verbosity", default=0, action="count", help="Increase output verbosity by printing names of branches which do not differ") parser.add_argument("-c", "--cut", default=0, help="Branches with a difference below this cut will not be treated as different") @@ -63,8 +63,8 @@ if treeTarget.GetEntries() != treeReference.GetEntries(): print " -- comparing nEvts: " , numEvents # Compare the trees -branchesReference = treeReference.GetListOfBranches() -branchesTarget = treeTarget.GetListOfBranches() +branchesReference = [i.GetName() for i in treeReference.GetListOfBranches()] +branchesTarget = [i.GetName() for i in treeTarget.GetListOfBranches()] branchesNotInTarget = [] # branches found in reference but not in target branchesNotInReference = [] # branches found in target but not in reference branchesSame = [] # branches found in both and do not differ @@ -72,68 +72,51 @@ branchesDiffer = [] # branches found in both but differ branchesTargetSingleVal = [] # branches in target filled with a single value branchesRefSingleVal = [] # branches in reference filled with a single value -for branchRef in branchesReference: - # Compare branches in reference with branches in target -# print " -- comparing branch ", branchRef.GetName() - if treeTarget.GetBranch(branchRef.GetName()): - # Check whether the branches differ by going through branch event by event - branchTarget = treeTarget.GetBranch(branchRef.GetName()) - leafTarget = branchTarget.GetLeaf(branchRef.GetListOfLeaves()[0].GetName()) - leafRef = branchRef.GetLeaf(branchRef.GetListOfLeaves()[0].GetName()) - - if not leafTarget : print ' - null target pointer for branch ', branchRef.GetName() - if not leafRef : print ' - null ref pointer for branch ', branchRef.GetName() - - if not leafTarget : - branchTarget.Print() - for leaf in branchTarget.GetListOfLeaves(): - leaf.Print() +# Check whether the branches differ by going through branch event by event +for branch in branchesReference: + if branch in branchesTarget: mse = 0 for iEvent in range(numEvents): - branchTarget.GetEntry(iEvent) - branchRef.GetEntry(iEvent) - if leafTarget and leafRef: - mse += (leafTarget.GetValue()-leafRef.GetValue())**2 + treeTarget.GetEntry(iEvent) + treeReference.GetEntry(iEvent) + if hasattr(treeTarget, branch) and hasattr(treeReference, branch): + mse += (getattr(treeTarget, branch)-getattr(treeReference, branch))**2 mse /= numEvents - if mse>args.cut: - branchesDiffer.append({'name' : branchRef.GetName(), 'MSE' : mse}) - else: - branchesSame.append({'name' : branchRef.GetName()}) + if mse>args.cut: branchesDiffer.append({'name' : branch, 'MSE' : mse}) + else: branchesSame.append({'name' : branch}) else: - branchesNotInTarget.append({'name' : branchRef.GetName()}) + branchesNotInTarget.append({'name' : branch}) # Check whether all branches in target are as well in reference -for branchTarget in branchesTarget: - if not treeReference.GetBranch(branchTarget.GetName()): - branchesNotInReference.append({'name' : branchTarget.GetName()}) +for branch in branchesTarget: + if not branch in branchesReference: + branchesNotInReference.append({'name' : branch}) # Check for single values in branches if args.singleValue: for branch in branchesTarget: - leaf = branch.GetLeaf(branch.GetName()) refVal = None hasMultVals = False for iEvent in range(numEvents): - branch.GetEntry(iEvent) + treeTarget.GetEntry(iEvent) if iEvent==0: - refVal = leaf.GetValue() - else: - if refVal != leaf.GetValue(): hasMultVals = True + refVal = getattr(treeTarget, branch) + elif refVal != getattr(treeTarget, branch): + hasMultVals = True if not hasMultVals: - branchesTargetSingleVal.append({'name' : branch.GetName(), 'value' : refVal}) + branchesTargetSingleVal.append({'name' : branch, 'value' : refVal}) for branch in branchesReference: - leaf = branch.GetLeaf(branch.GetName()) refVal = None hasMultVals = False for iEvent in range(numEvents): - branch.GetEntry(iEvent) + treeReference.GetEntry(iEvent) if iEvent==0: - refVal = leaf.GetValue() - else: - if refVal != leaf.GetValue(): hasMultVals = True + refVal = getattr(treeReference, branch) + elif refVal != getattr(treeReference, branch): + hasMultVals = True if not hasMultVals: - branchesRefSingleVal.append({'name' : branch.GetName(), 'value' : refVal}) + branchesRefSingleVal.append({'name' : branch, 'value' : refVal}) """ Print summary diff --git a/test/log/report_data_2016_miniAOD_tnpEleIDs.log b/test/log/report_data_2016_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..58a450ff55b --- /dev/null +++ b/test/log/report_data_2016_miniAOD_tnpEleIDs.log @@ -0,0 +1,97 @@ + -- comparing nEvts: 33 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2016_miniAOD.root +Reference file: rootfiles/TnPTree_data_2016_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 33/33 +Number of branches (target/reference): 200/200 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 200 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 26 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 26 + diff --git a/test/log/report_data_2016_miniAOD_tnpEleTrig.log b/test/log/report_data_2016_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..3d7d8be8922 --- /dev/null +++ b/test/log/report_data_2016_miniAOD_tnpEleTrig.log @@ -0,0 +1,97 @@ + -- comparing nEvts: 30 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2016_miniAOD.root +Reference file: rootfiles/TnPTree_data_2016_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 30/30 +Number of branches (target/reference): 205/205 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 205 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 26 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleEInverseMinusPInverseCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 26 + diff --git a/test/log/report_data_2016_miniAOD_tnpPhoIDs.log b/test/log/report_data_2016_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..66abf3742b9 --- /dev/null +++ b/test/log/report_data_2016_miniAOD_tnpPhoIDs.log @@ -0,0 +1,71 @@ + -- comparing nEvts: 32 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2016_miniAOD.root +Reference file: rootfiles/TnPTree_data_2016_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 32/32 +Number of branches (target/reference): 106/106 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 106 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 13 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 274335 +lumi : value 951 +truePU : value 0 +event_BeamSpot_x : value 0.0641769096255 +event_BeamSpot_y : value 0.0964255258441 +event_BeamSpot_z : value 0.216581016779 + +Entries: 13 + diff --git a/test/log/report_data_2017_miniAOD_tnpEleIDs.log b/test/log/report_data_2017_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..cba5ea568f6 --- /dev/null +++ b/test/log/report_data_2017_miniAOD_tnpEleIDs.log @@ -0,0 +1,79 @@ + -- comparing nEvts: 61 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2017_miniAOD.root +Reference file: rootfiles/TnPTree_data_2017_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 61/61 +Number of branches (target/reference): 200/200 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 200 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 + +Entries: 17 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 + +Entries: 17 + diff --git a/test/log/report_data_2017_miniAOD_tnpEleTrig.log b/test/log/report_data_2017_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..faf5a76b12c --- /dev/null +++ b/test/log/report_data_2017_miniAOD_tnpEleTrig.log @@ -0,0 +1,83 @@ + -- comparing nEvts: 53 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2017_miniAOD.root +Reference file: rootfiles/TnPTree_data_2017_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 53/53 +Number of branches (target/reference): 206/206 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 206 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 +tag_Ele_3charge : value 1.0 + +Entries: 19 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_ecalIso : value 0.0 +el_hcalIso : value 0.0 +el_relPfLepIso03 : value 0.0 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 +tag_Ele_3charge : value 1.0 + +Entries: 19 + diff --git a/test/log/report_data_2017_miniAOD_tnpPhoIDs.log b/test/log/report_data_2017_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..83751ddaeeb --- /dev/null +++ b/test/log/report_data_2017_miniAOD_tnpPhoIDs.log @@ -0,0 +1,71 @@ + -- comparing nEvts: 70 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2017_miniAOD.root +Reference file: rootfiles/TnPTree_data_2017_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 70/70 +Number of branches (target/reference): 106/106 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 106 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 + +Entries: 13 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 297219 +lumi : value 1045 +truePU : value 0 +event_BeamSpot_x : value 0.0853551775217 +event_BeamSpot_y : value -0.034735031426 +event_BeamSpot_z : value 0.357958525419 + +Entries: 13 + diff --git a/test/log/report_data_2018_miniAOD_tnpEleIDs.log b/test/log/report_data_2018_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..b81621a5ccf --- /dev/null +++ b/test/log/report_data_2018_miniAOD_tnpEleIDs.log @@ -0,0 +1,85 @@ + -- comparing nEvts: 48 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2018_miniAOD.root +Reference file: rootfiles/TnPTree_data_2018_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 48/48 +Number of branches (target/reference): 200/200 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 200 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 +tag_Ele_3charge : value 1.0 + +Entries: 20 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 +tag_Ele_3charge : value 1.0 + +Entries: 20 + diff --git a/test/log/report_data_2018_miniAOD_tnpEleTrig.log b/test/log/report_data_2018_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..2e5ca7001ac --- /dev/null +++ b/test/log/report_data_2018_miniAOD_tnpEleTrig.log @@ -0,0 +1,85 @@ + -- comparing nEvts: 43 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2018_miniAOD.root +Reference file: rootfiles/TnPTree_data_2018_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 43/43 +Number of branches (target/reference): 205/205 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 205 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 +tag_Ele_3charge : value 1.0 + +Entries: 20 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 +tag_Ele_3charge : value 1.0 + +Entries: 20 + diff --git a/test/log/report_data_2018_miniAOD_tnpPhoIDs.log b/test/log/report_data_2018_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..d3e8fc4b11f --- /dev/null +++ b/test/log/report_data_2018_miniAOD_tnpPhoIDs.log @@ -0,0 +1,71 @@ + -- comparing nEvts: 49 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_data_2018_miniAOD.root +Reference file: rootfiles/TnPTree_data_2018_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 49/49 +Number of branches (target/reference): 106/106 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 106 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 + +Entries: 13 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 316271 +lumi : value 51 +truePU : value 0 +event_BeamSpot_x : value 0.0961619243026 +event_BeamSpot_y : value -0.0662731900811 +event_BeamSpot_z : value 0.0355891361833 + +Entries: 13 + diff --git a/test/log/report_data_UL2017_AOD_tnpEleReco.log b/test/log/report_data_UL2017_AOD_tnpEleReco.log new file mode 100644 index 00000000000..857a1af1e7d --- /dev/null +++ b/test/log/report_data_UL2017_AOD_tnpEleReco.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2017_AOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2017_AOD_ref.root diff --git a/test/log/report_data_UL2017_miniAOD_tnpEleIDs.log b/test/log/report_data_UL2017_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..db7d692d9c8 --- /dev/null +++ b/test/log/report_data_UL2017_miniAOD_tnpEleIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2017_miniAOD_ref.root diff --git a/test/log/report_data_UL2017_miniAOD_tnpEleTrig.log b/test/log/report_data_UL2017_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..db7d692d9c8 --- /dev/null +++ b/test/log/report_data_UL2017_miniAOD_tnpEleTrig.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2017_miniAOD_ref.root diff --git a/test/log/report_data_UL2017_miniAOD_tnpPhoIDs.log b/test/log/report_data_UL2017_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..db7d692d9c8 --- /dev/null +++ b/test/log/report_data_UL2017_miniAOD_tnpPhoIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2017_miniAOD_ref.root diff --git a/test/log/report_data_UL2018_AOD_tnpEleReco.log b/test/log/report_data_UL2018_AOD_tnpEleReco.log new file mode 100644 index 00000000000..f99e13dce9e --- /dev/null +++ b/test/log/report_data_UL2018_AOD_tnpEleReco.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2018_AOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2018_AOD_ref.root diff --git a/test/log/report_data_UL2018_miniAOD_tnpEleIDs.log b/test/log/report_data_UL2018_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..77eeae7e665 --- /dev/null +++ b/test/log/report_data_UL2018_miniAOD_tnpEleIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2018_miniAOD_ref.root diff --git a/test/log/report_data_UL2018_miniAOD_tnpEleTrig.log b/test/log/report_data_UL2018_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..77eeae7e665 --- /dev/null +++ b/test/log/report_data_UL2018_miniAOD_tnpEleTrig.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2018_miniAOD_ref.root diff --git a/test/log/report_data_UL2018_miniAOD_tnpPhoIDs.log b/test/log/report_data_UL2018_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..77eeae7e665 --- /dev/null +++ b/test/log/report_data_UL2018_miniAOD_tnpPhoIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_data_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_data_UL2018_miniAOD_ref.root diff --git a/test/log/report_mc_2016_miniAOD_tnpEleIDs.log b/test/log/report_mc_2016_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..af2bf5cd188 --- /dev/null +++ b/test/log/report_mc_2016_miniAOD_tnpEleIDs.log @@ -0,0 +1,73 @@ + -- comparing nEvts: 114 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2016_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2016_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 114/114 +Number of branches (target/reference): 210/210 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 210 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 14 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 14 + diff --git a/test/log/report_mc_2016_miniAOD_tnpEleTrig.log b/test/log/report_mc_2016_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..90a43571bb4 --- /dev/null +++ b/test/log/report_mc_2016_miniAOD_tnpEleTrig.log @@ -0,0 +1,73 @@ + -- comparing nEvts: 109 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2016_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2016_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 109/109 +Number of branches (target/reference): 215/215 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 215 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 14 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 14 + diff --git a/test/log/report_mc_2016_miniAOD_tnpPhoIDs.log b/test/log/report_mc_2016_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..ad943533ae4 --- /dev/null +++ b/test/log/report_mc_2016_miniAOD_tnpPhoIDs.log @@ -0,0 +1,69 @@ + -- comparing nEvts: 118 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2016_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2016_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 118/118 +Number of branches (target/reference): 116/116 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 116 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 12 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.104794003069 +event_BeamSpot_y : value 0.168645992875 +event_BeamSpot_z : value -1.00376999378 +mc_probe_flag : value 1 + +Entries: 12 + diff --git a/test/log/report_mc_2017_miniAOD_tnpEleIDs.log b/test/log/report_mc_2017_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..efc04de0d3a --- /dev/null +++ b/test/log/report_mc_2017_miniAOD_tnpEleIDs.log @@ -0,0 +1,85 @@ + -- comparing nEvts: 108 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2017_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2017_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 108/108 +Number of branches (target/reference): 210/210 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 210 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 20 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 20 + diff --git a/test/log/report_mc_2017_miniAOD_tnpEleTrig.log b/test/log/report_mc_2017_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..44fa8ca8473 --- /dev/null +++ b/test/log/report_mc_2017_miniAOD_tnpEleTrig.log @@ -0,0 +1,85 @@ + -- comparing nEvts: 107 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2017_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2017_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 107/107 +Number of branches (target/reference): 216/216 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 216 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 20 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2GsfEleDPhiInCut : value 1 +passingCutBasedLoose94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleDPhiInCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 20 + diff --git a/test/log/report_mc_2017_miniAOD_tnpPhoIDs.log b/test/log/report_mc_2017_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..f1622b4d9f3 --- /dev/null +++ b/test/log/report_mc_2017_miniAOD_tnpPhoIDs.log @@ -0,0 +1,71 @@ + -- comparing nEvts: 117 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2017_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2017_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 117/117 +Number of branches (target/reference): 116/116 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 116 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 13 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +lumi : value 41653 +event_BeamSpot_x : value -0.0247936006635 +event_BeamSpot_y : value 0.0692861005664 +event_BeamSpot_z : value 0.789894998074 +mc_probe_flag : value 1 + +Entries: 13 + diff --git a/test/log/report_mc_2018_miniAOD_tnpEleIDs.log b/test/log/report_mc_2018_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..28af7d1a497 --- /dev/null +++ b/test/log/report_mc_2018_miniAOD_tnpEleIDs.log @@ -0,0 +1,83 @@ + -- comparing nEvts: 114 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2018_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2018_miniAOD_ref.root +Directory name: tnpEleIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 114/114 +Number of branches (target/reference): 210/210 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 210 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 19 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 19 + diff --git a/test/log/report_mc_2018_miniAOD_tnpEleTrig.log b/test/log/report_mc_2018_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..1b98133659f --- /dev/null +++ b/test/log/report_mc_2018_miniAOD_tnpEleTrig.log @@ -0,0 +1,83 @@ + -- comparing nEvts: 113 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2018_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2018_miniAOD_ref.root +Directory name: tnpEleTrig +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 113/113 +Number of branches (target/reference): 215/215 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 215 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 19 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +el_convVtxFitProb : value -1.0 +passingCutBasedLoose94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedLoose94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedMedium94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedTight94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedTight94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedVeto94XV2GsfEleConversionVetoCut : value 1 +passingCutBasedVeto94XV2GsfEleMissingHitsCut : value 1 +passingCutBasedVeto94XV2GsfEleSCEtaMultiRangeCut : value 1 +passingCutBasedVeto94XV2MinPtCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 19 + diff --git a/test/log/report_mc_2018_miniAOD_tnpPhoIDs.log b/test/log/report_mc_2018_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..52ed9bb8fc6 --- /dev/null +++ b/test/log/report_mc_2018_miniAOD_tnpPhoIDs.log @@ -0,0 +1,69 @@ + -- comparing nEvts: 116 +Used parameters: +---------------- +Target file: rootfiles/TnPTree_mc_2018_miniAOD.root +Reference file: rootfiles/TnPTree_mc_2018_miniAOD_ref.root +Directory name: tnpPhoIDs +Tree name: fitter_tree +Cut value: 0 + +Trees properties: +----------------- +Number of events (target/reference): 116/116 +Number of branches (target/reference): 116/116 + +Branches which do not differ: +----------------------------- +Increase verbosity (-v) to show this + +Entries: 116 + +Branches which differ: +---------------------- + +Entries: 0 + +Branches found in reference but not in target: +---------------------------------------------- + +Entries: 0 + +Branches found in target but not in reference: +---------------------------------------------- + +Entries: 0 + +Branches in target with a single value in all entries: +------------------------------------------------------ +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 12 + +Branches in reference with a single value in all entries: +--------------------------------------------------------- +passingCutBasedLoose94XV2MinPtCut : value 1 +passingCutBasedLoose94XV2PhoAnyPFIsoWithEAAndQuadScalingCut : value 1 +passingCutBasedLoose94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedMedium94XV2MinPtCut : value 1 +passingCutBasedMedium94XV2PhoSCEtaMultiRangeCut : value 1 +passingCutBasedTight94XV2MinPtCut : value 1 +passingCutBasedTight94XV2PhoSCEtaMultiRangeCut : value 1 +run : value 1 +event_BeamSpot_x : value 0.0107795996591 +event_BeamSpot_y : value 0.0418930016458 +event_BeamSpot_z : value 0.0248754993081 +mc_probe_flag : value 1 + +Entries: 12 + diff --git a/test/log/report_mc_UL2017_AOD_tnpEleReco.log b/test/log/report_mc_UL2017_AOD_tnpEleReco.log new file mode 100644 index 00000000000..7b023bdc2bc --- /dev/null +++ b/test/log/report_mc_UL2017_AOD_tnpEleReco.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2017_AOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2017_AOD_ref.root diff --git a/test/log/report_mc_UL2017_miniAOD_tnpEleIDs.log b/test/log/report_mc_UL2017_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..f17e56778e8 --- /dev/null +++ b/test/log/report_mc_UL2017_miniAOD_tnpEleIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root diff --git a/test/log/report_mc_UL2017_miniAOD_tnpEleTrig.log b/test/log/report_mc_UL2017_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..f17e56778e8 --- /dev/null +++ b/test/log/report_mc_UL2017_miniAOD_tnpEleTrig.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root diff --git a/test/log/report_mc_UL2017_miniAOD_tnpPhoIDs.log b/test/log/report_mc_UL2017_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..f17e56778e8 --- /dev/null +++ b/test/log/report_mc_UL2017_miniAOD_tnpPhoIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root diff --git a/test/log/report_mc_UL2018_AOD_tnpEleReco.log b/test/log/report_mc_UL2018_AOD_tnpEleReco.log new file mode 100644 index 00000000000..f25ce7ebc3a --- /dev/null +++ b/test/log/report_mc_UL2018_AOD_tnpEleReco.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2018_AOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2018_AOD_ref.root diff --git a/test/log/report_mc_UL2018_miniAOD_tnpEleIDs.log b/test/log/report_mc_UL2018_miniAOD_tnpEleIDs.log new file mode 100644 index 00000000000..6e3144a4c9e --- /dev/null +++ b/test/log/report_mc_UL2018_miniAOD_tnpEleIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root diff --git a/test/log/report_mc_UL2018_miniAOD_tnpEleTrig.log b/test/log/report_mc_UL2018_miniAOD_tnpEleTrig.log new file mode 100644 index 00000000000..6e3144a4c9e --- /dev/null +++ b/test/log/report_mc_UL2018_miniAOD_tnpEleTrig.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root diff --git a/test/log/report_mc_UL2018_miniAOD_tnpPhoIDs.log b/test/log/report_mc_UL2018_miniAOD_tnpPhoIDs.log new file mode 100644 index 00000000000..6e3144a4c9e --- /dev/null +++ b/test/log/report_mc_UL2018_miniAOD_tnpPhoIDs.log @@ -0,0 +1,2 @@ +Error in : file rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root does not exist +[ERROR] Reference file does not exist: rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root diff --git a/test/rootfiles/TnPTree_data_2016_miniAOD_ref.root b/test/rootfiles/TnPTree_data_2016_miniAOD_ref.root new file mode 100644 index 00000000000..1dbead7394c Binary files /dev/null and b/test/rootfiles/TnPTree_data_2016_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_2017_miniAOD_ref.root b/test/rootfiles/TnPTree_data_2017_miniAOD_ref.root new file mode 100644 index 00000000000..539f9f97abe Binary files /dev/null and b/test/rootfiles/TnPTree_data_2017_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_2018_miniAOD_ref.root b/test/rootfiles/TnPTree_data_2018_miniAOD_ref.root new file mode 100644 index 00000000000..75d07dadfdb Binary files /dev/null and b/test/rootfiles/TnPTree_data_2018_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_UL2017_AOD_ref.root b/test/rootfiles/TnPTree_data_UL2017_AOD_ref.root new file mode 100644 index 00000000000..1ddf88d7445 Binary files /dev/null and b/test/rootfiles/TnPTree_data_UL2017_AOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_UL2017_miniAOD_ref.root b/test/rootfiles/TnPTree_data_UL2017_miniAOD_ref.root new file mode 100644 index 00000000000..a1ca22dca44 Binary files /dev/null and b/test/rootfiles/TnPTree_data_UL2017_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_UL2018_AOD_ref.root b/test/rootfiles/TnPTree_data_UL2018_AOD_ref.root new file mode 100644 index 00000000000..ea101f8d44c Binary files /dev/null and b/test/rootfiles/TnPTree_data_UL2018_AOD_ref.root differ diff --git a/test/rootfiles/TnPTree_data_UL2018_miniAOD_ref.root b/test/rootfiles/TnPTree_data_UL2018_miniAOD_ref.root new file mode 100644 index 00000000000..26e65503d41 Binary files /dev/null and b/test/rootfiles/TnPTree_data_UL2018_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_2016_miniAOD_ref.root b/test/rootfiles/TnPTree_mc_2016_miniAOD_ref.root new file mode 100644 index 00000000000..3c052105a26 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_2016_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_2017_miniAOD_ref.root b/test/rootfiles/TnPTree_mc_2017_miniAOD_ref.root new file mode 100644 index 00000000000..0cb1d0198da Binary files /dev/null and b/test/rootfiles/TnPTree_mc_2017_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_2018_miniAOD_ref.root b/test/rootfiles/TnPTree_mc_2018_miniAOD_ref.root new file mode 100644 index 00000000000..9b0574b9d93 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_2018_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_UL2017_AOD_ref.root b/test/rootfiles/TnPTree_mc_UL2017_AOD_ref.root new file mode 100644 index 00000000000..602f2788cf9 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_UL2017_AOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root b/test/rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root new file mode 100644 index 00000000000..cc5f12ae391 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_UL2017_miniAOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_UL2018_AOD_ref.root b/test/rootfiles/TnPTree_mc_UL2018_AOD_ref.root new file mode 100644 index 00000000000..dcfd5aac586 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_UL2018_AOD_ref.root differ diff --git a/test/rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root b/test/rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root new file mode 100644 index 00000000000..efe9117bc51 Binary files /dev/null and b/test/rootfiles/TnPTree_mc_UL2018_miniAOD_ref.root differ diff --git a/test/runTests.py b/test/runTests.py new file mode 100755 index 00000000000..d6479f42493 --- /dev/null +++ b/test/runTests.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +import subprocess, shutil, os + +if not 'CMSSW_BASE' in os.environ or os.environ['CMSSW_BASE'].replace('/storage_mnt/storage','') not in os.getcwd(): + print('\033[1m\033[91mPlease do cmsenv first!') + exit(0) + +try: os.makedirs('log') +except: pass + +# System command and retrieval of its output +def system(command): + try: + return subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + print e.output + +from EgammaAnalysis.TnPTreeProducer.cmssw_version import isReleaseAbove +if isReleaseAbove(10, 6): erasToTest = ['UL2017', 'UL2018'] +else: erasToTest = ['2016', '2017', '2018'] + + +# +# Simply run a test for both data/MC for 2016, 2017 and 2018 +# +for isAOD in [True, False]: + if isAOD: treesToRun = ['tnpEleReco'] + else: treesToRun = ['tnpEleIDs', 'tnpPhoIDs', 'tnpEleTrig'] + + for isMC in [False, True]: + for era in erasToTest: + if isAOD and not 'UL' in era: continue # don't have specified AOD test files yet for rereco + + options = ['era=%s' % era, 'maxEvents=1000'] + options += ['isAOD=True', 'doRECO=True', 'doEleID=False', 'doPhoID=False', 'doTrigger=False'] if isAOD else ['doRECO=False', 'doEleID=True', 'doPhoID=True', 'doTrigger=True'] + options += ['isMC=True'] if isMC else [] + system('source /cvmfs/cms.cern.ch/cmsset_default.sh;eval `scram runtime -sh`;cmsRun ../python/TnPTreeProducer_cfg.py %s' % ' '.join(options)) + + outFile = 'rootfiles/TnPTree_%s_%s_%s.root' % ('mc' if isMC else 'data', era, 'AOD' if isAOD else 'miniAOD') + shutil.move('TnPTree_%s.root' % ('mc' if isMC else 'data'), outFile) + + for tree in treesToRun: + + report = 'log/report_%s_%s_%s_%s.log' % ('mc' if isMC else 'data', era, 'AOD' if isAOD else 'miniAOD', tree) + + print ('Testing for options %s and tree %s...' % (' '.join(options), tree)), + system('./compareTrees %s %s -s -d %s &> %s' % (outFile, outFile.replace('.root', '_ref.root'), tree, report)) + print ' report saved in %s' % report + + with open(report) as f: + scanSection=True + section=[] + for line in f.readlines(): + if 'Branches' in line: + scanSection=False + if any(['Entries' in line and not 'Entries: 0' in line for line in section]): + for line in section: + print line, + section=[] + if 'Branches which differ' in line or 'Branches found' in line: + scanSection=True + if scanSection: + section.append(line) + print '\n\n\n'