Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ECAL for Time dependent MC. Premix option C. Handle for APD/PN tag for time dependence #28214

Merged
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
0b3c752
commit without new class needed for apdpnMC
amassiro Oct 18, 2019
9091ebc
commit without new class needed for apdpnMC
amassiro Oct 18, 2019
a871be0
fix white spaces
amassiro Oct 18, 2019
c031b54
Merge branch 'master' into amassiro_premix_OptionC_2tags_ECAL_11_0_X
amassiro Oct 18, 2019
a7ea04f
code format
amassiro Oct 18, 2019
80b042e
Merge branch 'amassiro_premix_OptionC_2tags_ECAL_11_0_X' of github.co…
amassiro Oct 18, 2019
e0f9f5e
missing file
amassiro Oct 21, 2019
56ee7eb
code check
amassiro Oct 21, 2019
978ae06
just configuration cleaning, as per PR comment
amassiro Oct 21, 2019
1835a55
fix of forgotten comment cout/edm logger
amassiro Oct 22, 2019
5a1eca5
Addition of flag to trigger time dependent MC on demand
amassiro Oct 22, 2019
22c10ca
from untracked to tracked and code-check
amassiro Oct 23, 2019
3f00eb4
new workflow for 2018 and time dependent MC
amassiro Oct 23, 2019
47062b0
suggestions during PR implemented. Mainly commented code removed, a s…
amassiro Oct 29, 2019
658f29d
code format
amassiro Oct 29, 2019
c8ab979
double to float, as per PR suggestion
amassiro Nov 4, 2019
b68e88b
fix of usage of time and run number
amassiro Nov 8, 2019
7d89f4d
code format
amassiro Nov 8, 2019
609c424
new workflow for time dependent conditions, 250202.183
amassiro Nov 18, 2019
2a9f99c
update according to discussion on the PR. Workflow 250202.184 has big…
amassiro Nov 19, 2019
3b063f5
update according to discussion on the PR. Workflow 250202.184 has big…
amassiro Nov 19, 2019
8600d68
change in naming conventions as suggested in PR
amassiro Nov 21, 2019
6027981
fix run and ls
amassiro Nov 21, 2019
f1c74bc
fix for timeDependent flag setting to true
amassiro Dec 17, 2019
c420815
tiny fix for step3
amassiro Dec 18, 2019
e4810f5
remove of sim configuration in reco step
amassiro Dec 18, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -0,0 +1,23 @@
//
// Toyoko Orimoto (Caltech), 10 July 2007
//

#ifndef ECALLASERCORRECTION_ECALLASERDBRECORDMC_H
#define ECALLASERCORRECTION_ECALLASERDBRECORDMC_H

#include "boost/mpl/vector.hpp"
#include "FWCore/Framework/interface/DependentRecordImplementation.h"

#include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h"
#include "CondFormats/DataRecord/interface/EcalLinearCorrectionsRcd.h"

class EcalLaserDbRecordMC
: public edm::eventsetup::DependentRecordImplementation<EcalLaserDbRecordMC,
boost::mpl::vector<EcalLaserAlphasRcd,
EcalLaserAPDPNRatiosRefRcd,
EcalLaserAPDPNRatiosMCRcd,
EcalLinearCorrectionsRcd> > {};

#endif /* ECALLASERCORRECTION_ECALLASERDBRECORDMC_H */
@@ -0,0 +1,87 @@
//
// Toyoko Orimoto (Caltech), 10 July 2007
// Andrea Massironi, 3 Aug 2019
//

// system include files
#include <iostream>
#include <fstream>
#include <memory>

#include "FWCore/Framework/interface/ModuleFactory.h"
#include "FWCore/Framework/interface/ESProducer.h"
#include "FWCore/Framework/interface/ESProductHost.h"
#include "FWCore/Utilities/interface/ReusableObjectHolder.h"
#include "FWCore/Framework/interface/ESHandle.h"

#include "CalibCalorimetry/EcalLaserCorrection/interface/EcalLaserDbService.h"
#include "CalibCalorimetry/EcalLaserCorrection/interface/EcalLaserDbRecordMC.h"

#include "CondFormats/DataRecord/interface/EcalLaserAlphasRcd.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRefRcd.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h"
#include "CondFormats/DataRecord/interface/EcalLinearCorrectionsRcd.h"

class EcalLaserCorrectionServiceMC : public edm::ESProducer {
public:
EcalLaserCorrectionServiceMC(const edm::ParameterSet&);
~EcalLaserCorrectionServiceMC() override;

std::shared_ptr<EcalLaserDbService> produce(const EcalLaserDbRecordMC&);

private:
using HostType = edm::ESProductHost<EcalLaserDbService,
EcalLaserAlphasRcd,
EcalLaserAPDPNRatiosRefRcd,
EcalLaserAPDPNRatiosMCRcd,
EcalLinearCorrectionsRcd>;

// ----------member data ---------------------------
edm::ReusableObjectHolder<HostType> holder_;

edm::ESGetToken<EcalLaserAlphas, EcalLaserAlphasRcd> alphaToken_;
edm::ESGetToken<EcalLaserAPDPNRatiosRef, EcalLaserAPDPNRatiosRefRcd> apdpnRefToken_;
edm::ESGetToken<EcalLaserAPDPNRatios, EcalLaserAPDPNRatiosMCRcd> apdpnToken_;
edm::ESGetToken<EcalLinearCorrections, EcalLinearCorrectionsRcd> linearToken_;
};

EcalLaserCorrectionServiceMC::EcalLaserCorrectionServiceMC(const edm::ParameterSet& fConfig) : ESProducer() {
// the following line is needed to tell the framework what
// data is being produced
// setWhatProduced (this, (dependsOn (&EcalLaserCorrectionServiceMC::apdpnCallback)));

setWhatProduced(this)
.setConsumes(alphaToken_)
.setConsumes(apdpnRefToken_)
.setConsumes(apdpnToken_)
.setConsumes(linearToken_);

//now do what ever other initialization is needed
}

EcalLaserCorrectionServiceMC::~EcalLaserCorrectionServiceMC() {}

//
// member functions
//

// ------------ method called to produce the data ------------
std::shared_ptr<EcalLaserDbService> EcalLaserCorrectionServiceMC::produce(const EcalLaserDbRecordMC& record) {
auto host = holder_.makeOrGet([]() { return new HostType; });

host->ifRecordChanges<EcalLinearCorrectionsRcd>(
record, [this, h = host.get()](auto const& rec) { h->setLinearCorrectionsData(&rec.get(linearToken_)); });

host->ifRecordChanges<EcalLaserAPDPNRatiosMCRcd>(
record, [this, h = host.get()](auto const& rec) { h->setAPDPNData(&rec.get(apdpnToken_)); });

host->ifRecordChanges<EcalLaserAPDPNRatiosRefRcd>(
record, [this, h = host.get()](auto const& rec) { h->setAPDPNRefData(&rec.get(apdpnRefToken_)); });

host->ifRecordChanges<EcalLaserAlphasRcd>(
record, [this, h = host.get()](auto const& rec) { h->setAlphaData(&rec.get(alphaToken_)); });

return host; // automatically converts to std::shared_ptr<EcalLaserDbService>
}

DEFINE_FWK_EVENTSETUP_MODULE(EcalLaserCorrectionServiceMC);
@@ -0,0 +1,5 @@

#include "CalibCalorimetry/EcalLaserCorrection/interface/EcalLaserDbRecordMC.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalLaserDbRecordMC);
2 changes: 2 additions & 0 deletions CondCore/EcalPlugins/src/plugin.cc
Expand Up @@ -58,6 +58,7 @@

#include "CondFormats/EcalObjects/interface/EcalLaserAPDPNRatios.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosRcd.h"
#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h"

#include "CondFormats/EcalObjects/interface/EcalChannelStatus.h"
#include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
Expand Down Expand Up @@ -172,6 +173,7 @@ REGISTER_PLUGIN(EcalIntercalibErrorsRcd, EcalCondObjectContainer<float>);
REGISTER_PLUGIN(EcalADCToGeVConstantRcd, EcalADCToGeVConstant);
REGISTER_PLUGIN(EcalLaserAlphasRcd, EcalCondObjectContainer<float>);
REGISTER_PLUGIN(EcalLaserAPDPNRatiosRcd, EcalLaserAPDPNRatios);
REGISTER_PLUGIN(EcalLaserAPDPNRatiosMCRcd, EcalLaserAPDPNRatios);
REGISTER_PLUGIN(EcalLaserAPDPNRatiosRefRcd, EcalCondObjectContainer<float>);
REGISTER_PLUGIN(EcalChannelStatusRcd, EcalCondObjectContainer<EcalChannelStatusCode>);
REGISTER_PLUGIN(EcalPFRecHitThresholdsRcd, EcalCondObjectContainer<float>);
Expand Down
26 changes: 26 additions & 0 deletions CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h
@@ -0,0 +1,26 @@
#ifndef DataRecord_EcalLaserAPDPNRatiosMCRcd_h
#define DataRecord_EcalLaserAPDPNRatiosMCRcd_h
// -*- C++ -*-
//
// Package: DataRecord
// Class : EcalLaserAPDPNRatiosMCRcd
//
/**\class EcalLaserAPDPNRatiosMCRcd EcalLaserAPDPNRatiosMCRcd.h CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h
*
* Description: <one line class summary>
*
* Usage:
* <usage>
*
*/
//
// Author:
// Created: Fri Jun 1 12:30:43 CEST 2007
// $Id$
//

#include "FWCore/Framework/interface/EventSetupRecordImplementation.h"

class EcalLaserAPDPNRatiosMCRcd : public edm::eventsetup::EventSetupRecordImplementation<EcalLaserAPDPNRatiosMCRcd> {};

#endif
16 changes: 16 additions & 0 deletions CondFormats/DataRecord/src/EcalLaserAPDPNRatiosMCRcd.cc
@@ -0,0 +1,16 @@
// -*- C++ -*-
//
// Package: DataRecord
// Class : EcalLaserAPDPNRatiosMCRcd
//
// Implementation:
// <Notes on implementation>
//
// Author:
// Created: Fri Jun 1 12:30:43 CEST 2019
// $Id$

#include "CondFormats/DataRecord/interface/EcalLaserAPDPNRatiosMCRcd.h"
#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h"

EVENTSETUP_RECORD_REG(EcalLaserAPDPNRatiosMCRcd);
2 changes: 2 additions & 0 deletions Configuration/PyReleaseValidation/python/relval_premix.py
Expand Up @@ -35,6 +35,7 @@
workflows[250200.17]=['',['ZEE_13UP17','DIGIPRMXUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250202.17]=['',['TTbar_13UP17','DIGIPRMXUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250202.171]=['',['TTbar_13UP17','PREMIXUP17_PU25','DIGIPRMXLOCALUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250202.172]=['',['TTbar_13UP17','DIGIPRMXUP17_PU25_RD','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250203.17]=['',['H125GGgluonfusion_13UP17','DIGIPRMXUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250204.17]=['',['QQH1352T_13UP17','DIGIPRMXUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
workflows[250205.17]=['',['ZTT_13UP17','DIGIPRMXUP17_PU25','RECOPRMXUP17_PU25','HARVESTUP17_PU25']]
Expand All @@ -46,6 +47,7 @@
workflows[250200.18]=['',['ZEE_13UP18','DIGIPRMXUP18_PU25','RECOPRMXUP18_PU25_L1TEgDQM','HARVESTUP18_PU25_L1TEgDQM']]
workflows[250202.18]=['',['TTbar_13UP18','DIGIPRMXUP18_PU25','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
workflows[250202.181]=['',['TTbar_13UP18','PREMIXUP18_PU25','DIGIPRMXLOCALUP18_PU25','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
workflows[250202.182]=['',['TTbar_13UP18','DIGIPRMXUP18_PU25_RD','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
workflows[250203.18]=['',['H125GGgluonfusion_13UP18','DIGIPRMXUP18_PU25','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
workflows[250204.18]=['',['QQH1352T_13UP18','DIGIPRMXUP18_PU25','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
workflows[250205.18]=['',['ZTT_13UP18','DIGIPRMXUP18_PU25','RECOPRMXUP18_PU25','HARVESTUP18_PU25']]
Expand Down
20 changes: 11 additions & 9 deletions Configuration/PyReleaseValidation/python/relval_steps.py
Expand Up @@ -644,8 +644,8 @@ def identitySim(wf):
'CMSSW_10_6_0-106X_upgrade2018_realistic_v4-v1', # 18 - GENSIM input for 2018 fullSim premix workflows
'CMSSW_10_6_0-106X_upgrade2018_realistic_v4_FastSim-v1', # 19 - fastSim MinBias for mixing UP18
'CMSSW_10_6_0-PU25ns_106X_upgrade2018_realistic_v4_FastSim-v1',# 20 - fastSim premix library UP18
'CMSSW_10_6_0-106X_mc2017_realistic_v3-v1', # 21 - GEN-SIM inputs for LHE-GEN-SIM 2017 workflows
'CMSSW_10_6_0-106X_upgrade2018_realistic_v4-v1', # 22 - GEN-SIM inputs for LHE-GEN-SIM 2018 workflows
'CMSSW_10_6_0-106X_mc2017_realistic_v3-v1', # 21 - GEN-SIM inputs for LHE-GEN-SIM 2017 workflows
'CMSSW_10_6_0-106X_upgrade2018_realistic_v4-v1', # 22 - GEN-SIM inputs for LHE-GEN-SIM 2018 workflows
]

# note: INPUT commands to be added once GEN-SIM w/ 13TeV+PostLS1Geo will be available
Expand Down Expand Up @@ -1745,8 +1745,10 @@ def lhegensim2018ml(fragment,howMuch):

steps['DIGIPRMXUP15_PU50']=merge([digiPremixUp2015Defaults50ns])
steps['DIGIPRMXUP17_PU25']=merge([digiPremixUp2017Defaults25ns])
steps['DIGIPRMXUP17_PU25_RD']=merge([digiPremixUp2017Defaults25ns, { '--customise_commands':"\"process.EcalLaserCorrectionServiceMC = cms.ESProducer('EcalLaserCorrectionServiceMC') \\n process.GlobalTag.toGet = cms.VPSet( cms.PSet( record = cms.string('EcalLaserAPDPNRatiosMCRcd'), tag = cms.string('EcalLaserAPDPNRatios_UL_2017_mc'), connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS') ) ) \\n process.ecal_sim_parameter_map.timeDependent=cms.bool(True)\"" } ])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't you also need to specify a run number from the 2017 era to be used in the simulation? Otherwise how do you get the laser corrections from the appropriate IOV?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently this is a test, and it is using only 1 IOV.

As shown in the slides linked, in order to have the time dependent I did, for my private production, the following:

setRunNumberForEachLumi = cms.untracked.vuint32(
                                                  298475,
                                                  298486, 
                                                  298615,
                                                  303454
                                                 ),  

in the digipremixing, and

numberEventsInLuminosityBlock = cms.untracked.uint32(250)

in the sim step.

Would you like me to prepare the workflow as this?
Is this how things will be produced centrally?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't you also need to include a time-dependent EcalLaserAPDPNRatiosRcd in these tests? For example, I would have expected you to need to use something like: EcalLaserAPDPNRatios_Run_Dep_MC. For example, for a ten-event relval for a test covering five 2018 IOVs, you would need in the GEN step:

process.source.numberEventsInLuminosityBlock = cms.untracked.uint32(2)

and in the DIGIPRMX step:

process.source.setRunNumberForEachLumi =  cms.untracked.vuint32(316082, 316720, 317527, 320917, 321414)
process.GlobalTag.toGet = cms.VPSet(
  cms.PSet(record = cms.string("EcalLaserAPDPNRatiosRcd"),
           tag = cms.string("EcalLaserAPDPNRatios_Run_Dep_MC_cleaned"),
           connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
          ),
  cms.PSet(record = cms.string("EcalLaserAPDPNRatiosMCRcd"),
           tag = cms.string("EcalLaserAPDPNRatios_UL_2018_mc_3sigma_v2"),
           connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
          )
)

I can't comment on the plans for central production but I think that the relval workflow should test the use of multi-IOV tags in MC. As far as I can tell, it does not. Or have I misunderstood?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't you also need to include a time-dependent EcalLaserAPDPNRatiosRcd in these tests? For example, I would have expected you to need to use something like: EcalLaserAPDPNRatios_Run_Dep_MC. For example, for a ten-event relval for a test covering five 2018 IOVs, you would need in the GEN step:

process.source.numberEventsInLuminosityBlock = cms.untracked.uint32(2)

and in the DIGIPRMX step:

process.source.setRunNumberForEachLumi =  cms.untracked.vuint32(316082, 316720, 317527, 320917, 321414)
process.GlobalTag.toGet = cms.VPSet(
  cms.PSet(record = cms.string("EcalLaserAPDPNRatiosRcd"),
           tag = cms.string("EcalLaserAPDPNRatios_Run_Dep_MC_cleaned"),
           connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
          ),
  cms.PSet(record = cms.string("EcalLaserAPDPNRatiosMCRcd"),
           tag = cms.string("EcalLaserAPDPNRatios_UL_2018_mc_3sigma_v2"),
           connect = cms.string("frontier://FrontierProd/CMS_CONDITIONS")
          )
)

I can't comment on the plans for central production but I think that the relval workflow should test the use of multi-IOV tags in MC. As far as I can tell, it does not. Or have I misunderstood?

ok, I will prepare the worflow to use more IOVs, meaning I will prepare the python configuration, but the c++ code here in this PR is independent from it.

Question to relval experts: where is the number of events per workflow defined? Is it handled with some configuration?
At the end we will ask for a "big relval" sample of Zee to estimate the performance of the time dependent MC, and since we have a fixed number of IOVs we can handle, I need to set properly the "numberEventsInLuminosityBlock".
Should this be part of this PR?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amassiro : sorry I have missed your question. The number of events per workflow is set here (

steps['TTbar_13UP17']=gen2017('TTbar_13TeV_TuneCUETP8M1_cfi',Kby(9,50))
). Kby(9,50) means 9x1000 event will be produced and 50 events per job. By default we set it to 9k events by default for normal statistics. If you need "big relval", you can change these two values properly.

For "numberEventsInLuminosityBlock", you can add this parameter similarly to this line

return merge([{'cfg':fragment},howMuch,{'--customise_commands': '"process.source.numberEventsInLuminosityBlock=cms.untracked.uint32(5)"'},concurrentLumis,step1LHEGenSimUp2018Default])

Chayanit for PdmV

steps['DIGIPRMXLOCALUP17_PU25']=merge([digiPremixLocalPileupUp2017Defaults25ns])
steps['DIGIPRMXUP18_PU25']=merge([digiPremixUp2018Defaults25ns])
steps['DIGIPRMXUP18_PU25_RD']=merge([digiPremixUp2018Defaults25ns, { '--customise_commands':"\"process.EcalLaserCorrectionServiceMC = cms.ESProducer('EcalLaserCorrectionServiceMC') \\n process.GlobalTag.toGet = cms.VPSet( cms.PSet( record = cms.string('EcalLaserAPDPNRatiosMCRcd'), tag = cms.string('EcalLaserAPDPNRatios_UL_2018_mc_3sigma_v2'), connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS') ) ) \\n process.ecal_sim_parameter_map.timeDependent=cms.bool(True)\"" } ])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same question as in L1748 applies here.

steps['DIGIPRMXLOCALUP18_PU25']=merge([digiPremixLocalPileupUp2018Defaults25ns])

premixProd25ns = {'-s' : 'DIGI,DATAMIX,L1,DIGI2RAW,HLT:@relval2016',
Expand Down Expand Up @@ -1882,7 +1884,7 @@ def lhegensim2018ml(fragment,howMuch):
'--datatier':'AOD,DQMIO',
'--eventcontent':'AOD,DQM',
'--era':'Run2_2018_pp_on_AA',
'--customise':'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018_pp_on_AA',
'--customise':'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018_pp_on_AA',
'-n':'10'
},steps['RECOHID15']])

Expand Down Expand Up @@ -3077,7 +3079,7 @@ def gen2018HiMix(fragment,howMuch):
baseDataSetReleaseBetter={}
for gen in upgradeFragments:
for ds in defaultDataSets:
key=gen[:-4]+'_'+ds
key=gen[:-4]+'_'+ds
version='1'
if key in versionOverrides:
version = versionOverrides[key]
Expand All @@ -3088,15 +3090,15 @@ def gen2018HiMix(fragment,howMuch):
key='MinBias_14TeV_pythia8_TuneCUETP8M1'+'_'+ds
name=baseDataSetReleaseBetter[key]
if '2017' in ds:
PUDataSets[ds]={'-n':10,'--pileup':'AVE_35_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
PUDataSets[ds]={'-n':10,'--pileup':'AVE_35_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
elif '2018' in ds:
PUDataSets[ds]={'-n':10,'--pileup':'AVE_50_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
PUDataSets[ds]={'-n':10,'--pileup':'AVE_50_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
elif '2021' in ds:
PUDataSets[ds]={'-n':10,'--pileup':'Run3_Flat55To75_PoissonOOTPU','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)}
elif 'postLS2' in ds:
PUDataSets[ds]={'-n':10,'--pileup':'AVE_50_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
PUDataSets[ds]={'-n':10,'--pileup':'AVE_50_BX_25ns','--pileup_input':'das:/RelValMinBias_13/%s/GEN-SIM'%(name,)}
elif '2026' in ds:
PUDataSets[ds]={'-n':10,'--pileup':'AVE_200_BX_25ns','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)}
PUDataSets[ds]={'-n':10,'--pileup':'AVE_200_BX_25ns','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)}
else:
PUDataSets[ds]={'-n':10,'--pileup':'AVE_35_BX_25ns','--pileup_input':'das:/RelValMinBias_14TeV/%s/GEN-SIM'%(name,)}

Expand Down Expand Up @@ -3249,7 +3251,7 @@ def gen2018HiMix(fragment,howMuch):
'--datatier':'NANOAODSIM',
'-n':'10',
'--eventcontent':'NANOEDMAODSIM',
'--filein':'file:step3_inMINIAODSIM.root',
'--filein':'file:step3_inMINIAODSIM.root',
'--geometry' : geom
}

Expand Down