From 506c9c5863f562e368bb6bc5a52e2e66ecd06c40 Mon Sep 17 00:00:00 2001 From: vmariani Date: Tue, 3 Nov 2015 16:45:14 +0100 Subject: [PATCH] adding Dstar filter for enriched MC production --- .../ExternalDecays/data/Dstar_D0_K3pi.dec | 22 +++ .../ExternalDecays/data/Dstar_D0_Kpi.dec | 22 +++ .../GenFilters/interface/PythiaMomDauFilter.h | 74 ++++++++ .../GenFilters/src/PythiaMomDauFilter.cc | 161 ++++++++++++++++++ .../test/test_d0k2pi_ptdstarcut_gen_13TeV.py | 147 ++++++++++++++++ .../test/test_d0k4pi_ptdstarcut_gen_13TeV.py | 147 ++++++++++++++++ 6 files changed, 573 insertions(+) create mode 100644 GeneratorInterface/ExternalDecays/data/Dstar_D0_K3pi.dec create mode 100644 GeneratorInterface/ExternalDecays/data/Dstar_D0_Kpi.dec create mode 100644 GeneratorInterface/GenFilters/interface/PythiaMomDauFilter.h create mode 100644 GeneratorInterface/GenFilters/src/PythiaMomDauFilter.cc create mode 100644 GeneratorInterface/GenFilters/test/test_d0k2pi_ptdstarcut_gen_13TeV.py create mode 100644 GeneratorInterface/GenFilters/test/test_d0k4pi_ptdstarcut_gen_13TeV.py diff --git a/GeneratorInterface/ExternalDecays/data/Dstar_D0_K3pi.dec b/GeneratorInterface/ExternalDecays/data/Dstar_D0_K3pi.dec new file mode 100644 index 0000000000000..49730dee5dfac --- /dev/null +++ b/GeneratorInterface/ExternalDecays/data/Dstar_D0_K3pi.dec @@ -0,0 +1,22 @@ +# Dstar_D0_K3pi.dec +# +# This is the decay file for the decay D*+ -> D0(K-pi+pi+pi-) pi+ +# +Alias MyD0 D0 +Alias Myanti-D0 anti-D0 +ChargeConj Myanti-D0 MyD0 +Alias MyD*+ D*+ +Alias MyD*- D*- +ChargeConj MyD*- MyD*+ +# +Decay MyD*+ +1.000 MyD0 pi+ VSS; +Enddecay +CDecay MyD*- +# +Decay MyD0 +1.000 K- pi+ pi+ pi- PHSP; +Enddecay +CDecay Myanti-D0 +# +End diff --git a/GeneratorInterface/ExternalDecays/data/Dstar_D0_Kpi.dec b/GeneratorInterface/ExternalDecays/data/Dstar_D0_Kpi.dec new file mode 100644 index 0000000000000..c9d8e6df989b8 --- /dev/null +++ b/GeneratorInterface/ExternalDecays/data/Dstar_D0_Kpi.dec @@ -0,0 +1,22 @@ +# Dstar_D0_Kpi.dec +# +# This is the decay file for the decay D*+ -> D0(K-pi+) pi+ +# +Alias MyD0 D0 +Alias Myanti-D0 anti-D0 +ChargeConj Myanti-D0 MyD0 +Alias MyD*+ D*+ +Alias MyD*- D*- +ChargeConj MyD*- MyD*+ +# +Decay MyD*+ +1.000 MyD0 pi+ VSS; +Enddecay +CDecay MyD*- +# +Decay MyD0 +1.000 K- pi+ PHSP; +Enddecay +CDecay Myanti-D0 +# +End diff --git a/GeneratorInterface/GenFilters/interface/PythiaMomDauFilter.h b/GeneratorInterface/GenFilters/interface/PythiaMomDauFilter.h new file mode 100644 index 0000000000000..b4ee5a2fbde20 --- /dev/null +++ b/GeneratorInterface/GenFilters/interface/PythiaMomDauFilter.h @@ -0,0 +1,74 @@ +#ifndef PYTHIAMOMDAUFILTER_h +#define PYTHIAMOMDAUFILTER_h +// -*- C++ -*- +// +// Package: PythiaMomDauFilter +// Class: PythiaMomDauFilter +// +/**\class PythiaMomDauFilter PythiaMomDauFilter.cc + + Description: Filter events using MotherId and ChildrenIds infos + + Implementation: + +*/ +// +// Original Author: Daniele Pedrini +// Created: Oct 27 2015 +// $Id: PythiaMomDauFilter.h,v 1.1 2015/10/27 pedrini Exp $ +// +// + + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/EDFilter.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/ParameterSet/interface/ParameterSet.h" + + +// +// class decleration +// + +class PythiaMomDauFilter : public edm::EDFilter { + public: + explicit PythiaMomDauFilter(const edm::ParameterSet&); + ~PythiaMomDauFilter(); + + + virtual bool filter(edm::Event&, const edm::EventSetup&); + private: + // ----------memeber function---------------------- + + // ----------member data --------------------------- + + std::string label_; + std::vector dauIDs; + std::vector desIDs; + int particleID; + int daughterID; + bool chargeconju; + int ndaughters; + int ndescendants; + double minptcut; + double maxptcut; + double minetacut; + double maxetacut; + double mom_minptcut; + double mom_maxptcut; + double mom_minetacut; + double mom_maxetacut; +}; +#define PYCOMP pycomp_ +extern "C" { + int PYCOMP(int& ip); +} +#endif +DEFINE_FWK_MODULE(PythiaMomDauFilter); diff --git a/GeneratorInterface/GenFilters/src/PythiaMomDauFilter.cc b/GeneratorInterface/GenFilters/src/PythiaMomDauFilter.cc new file mode 100644 index 0000000000000..a195e01b9910c --- /dev/null +++ b/GeneratorInterface/GenFilters/src/PythiaMomDauFilter.cc @@ -0,0 +1,161 @@ + +#include "GeneratorInterface/GenFilters/interface/PythiaMomDauFilter.h" + + +#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "HepMC/PythiaWrapper6_4.h" +#include + +using namespace edm; +using namespace std; + + +PythiaMomDauFilter::PythiaMomDauFilter(const edm::ParameterSet& iConfig) : +label_(iConfig.getUntrackedParameter("moduleLabel",std::string("generator"))), +particleID(iConfig.getUntrackedParameter("ParticleID", 0)), +daughterID(iConfig.getUntrackedParameter("DaughterID", 0)), +chargeconju(iConfig.getUntrackedParameter("ChargeConjugation", true)), +ndaughters(iConfig.getUntrackedParameter("NumberDaughters", 0)), +ndescendants(iConfig.getUntrackedParameter("NumberDescendants", 0)), +minptcut(iConfig.getUntrackedParameter("MinPt", 0.)), +maxptcut(iConfig.getUntrackedParameter("MaxPt", 14000.)), +minetacut(iConfig.getUntrackedParameter("MinEta", -10.)), +maxetacut(iConfig.getUntrackedParameter("MaxEta", 10.)), +mom_minptcut(iConfig.getUntrackedParameter("MomMinPt", 0.)), +mom_maxptcut(iConfig.getUntrackedParameter("MomMaxPt", 14000.)), +mom_minetacut(iConfig.getUntrackedParameter("MomMinEta", -10.)), +mom_maxetacut(iConfig.getUntrackedParameter("MomMaxEta", 10.)) +{ + //now do what ever initialization is needed + vector defdauID; + defdauID.push_back(0); + vector defdesID; + defdesID.push_back(0); + dauIDs = iConfig.getUntrackedParameter< vector >("DaughterIDs", defdauID); + desIDs = iConfig.getUntrackedParameter< vector >("DescendantsIDs", defdesID); +} + + +PythiaMomDauFilter::~PythiaMomDauFilter() +{ + + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + +} + + +// +// member functions +// + +// ------------ method called to produce the data ------------ +bool PythiaMomDauFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) +{ + using namespace edm; + bool accepted = false; + bool mom_accepted = false; + Handle evt; + iEvent.getByLabel(label_, evt); + + const HepMC::GenEvent * myGenEvent = evt->GetEvent(); + int ndauac = 0; + int ndau = 0; + int ndesac = 0; + int ndes = 0; + + for ( HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end(); ++p ) { + + if( (*p)->pdg_id() != particleID ) continue ; + if( (*p)->momentum().perp() > mom_minptcut && (*p)->momentum().perp() < mom_maxptcut && (*p)->momentum().eta() > mom_minetacut && (*p)->momentum().eta() < mom_maxetacut ){ + mom_accepted = true; + ndauac = 0; + ndau = 0; + ndesac = 0; + ndes = 0; + if ( (*p)->end_vertex() ) { + for ( HepMC::GenVertex::particle_iterator dau =(*p)->end_vertex()->particles_begin(HepMC::children); dau != (*p)->end_vertex()->particles_end(HepMC::children); ++dau ) { + ++ndau; + for( unsigned int i=0; ipdg_id() != dauIDs[i] ) continue ; + ++ndauac; + break; + } + if((*dau)->pdg_id() == daughterID){ + for(HepMC::GenVertex::particle_iterator des = (*dau)->end_vertex()->particles_begin(HepMC::children); des != (*des)->end_vertex()->particles_end(HepMC::children); ++des ){ + ++ndes; + for( unsigned int i=0; ipdg_id() != desIDs[i] ) continue ; + if( (*des)->momentum().perp() > minptcut && (*des)->momentum().perp() < maxptcut && (*des)->momentum().eta() > minetacut && (*des)->momentum().eta() < maxetacut ) { + ++ndesac; + break; + } + } + } + } + } + } + } + if( ndau == ndaughters && ndauac == ndaughters && mom_accepted && ndes == ndescendants && ndesac == ndescendants ) { + accepted = true; + break; + } + + } + + + if( !accepted && chargeconju ) { + + mom_accepted = false; + for ( HepMC::GenEvent::particle_const_iterator p = myGenEvent->particles_begin(); p != myGenEvent->particles_end(); ++p ) { + + if( (*p)->pdg_id() != -particleID ) continue ; + if( (*p)->momentum().perp() > mom_minptcut && (*p)->momentum().perp() < mom_maxptcut && (*p)->momentum().eta() > mom_minetacut && (*p)->momentum().eta() < mom_maxetacut ){ + mom_accepted = true; + ndauac = 0; + ndau = 0; + ndesac = 0; + ndes = 0; + if ( (*p)->end_vertex() ) { + for ( HepMC::GenVertex::particle_iterator dau =(*p)->end_vertex()->particles_begin(HepMC::children); dau != (*p)->end_vertex()->particles_end(HepMC::children); ++dau ) { + ++ndau; + for( unsigned int i=0; ipdg_id() != IDanti ) continue ; + ++ndauac; + break; + } + if((*dau)->pdg_id() == -daughterID) { + for( HepMC::GenVertex::particle_iterator des = (*dau)->end_vertex()->particles_begin(HepMC::children); des != (*des)->end_vertex()->particles_end(HepMC::children); ++des ){ + ++ndes; + for( unsigned int i=0; ipdg_id() != IDanti ) continue ; + if( (*des)->momentum().perp() > minptcut && (*des)->momentum().perp() < maxptcut && (*des)->momentum().eta() > minetacut && (*des)->momentum().eta() < maxetacut ) { + ++ndesac; + break; + } + } + } + } + } + } + } + if( ndau == ndaughters && ndauac == ndaughters && mom_accepted && ndes == ndescendants && ndesac == ndescendants ) { + accepted = true; + break; + } + } + + } + + if (accepted){ + return true; } else {return false;} + +} diff --git a/GeneratorInterface/GenFilters/test/test_d0k2pi_ptdstarcut_gen_13TeV.py b/GeneratorInterface/GenFilters/test/test_d0k2pi_ptdstarcut_gen_13TeV.py new file mode 100644 index 0000000000000..9f4892163b098 --- /dev/null +++ b/GeneratorInterface/GenFilters/test/test_d0k2pi_ptdstarcut_gen_13TeV.py @@ -0,0 +1,147 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process('GEN') + +# import of standard configurations +process.load('Configuration.StandardSequences.Services_cff') +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load('Configuration.Geometry.GeometrySimDB_cff') +process.load('Configuration.StandardSequences.MagneticField_38T_PostLS1_cff') +process.load('Configuration.StandardSequences.Generator_cff') +process.load('IOMC.EventVertexGenerators.VtxSmearedRealistic8TeVCollision_cfi') +process.load('GeneratorInterface.Core.genFilterSummary_cff') +process.load('Configuration.StandardSequences.SimIdeal_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(10000) +) + +# Input source +process.source = cms.Source("EmptySource") + +process.options = cms.untracked.PSet( + +) + +# Production Info +process.configurationMetadata = cms.untracked.PSet( + version = cms.untracked.string('$Revision: 1.1 $'), + annotation = cms.untracked.string('D*+ -> D0 pi+ -> (K-pi+) pi+ at 13TeV'), + name = cms.untracked.string('$Source: test_d0k2pi_ptdstarcut_gen_13TeV.py,v $') +) + +# Output definition + +process.RAWSIMoutput = cms.OutputModule("PoolOutputModule", + splitLevel = cms.untracked.int32(0), + eventAutoFlushCompressedSize = cms.untracked.int32(5242880), + outputCommands = process.RAWSIMEventContent.outputCommands, + fileName = cms.untracked.string('2pi_ptdstarcut_gen.root'), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string(''), + dataTier = cms.untracked.string('GEN') + ), + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('generation_step') + ) +) + + +# Additional output definition + +# Other statements +process.genstepfilter.triggerConditions=cms.vstring("generation_step") +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_mc', '') +#process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:startup', '') +#from Configuration.Generator.PythiaUESettings_cfi import * #for 8 TeV +from Configuration.Generator.PythiaUEZ2starSettings_cfi import * #for 13 TeV +################# +process.generator = cms.EDFilter("Pythia6GeneratorFilter", + pythiaPylistVerbosity = cms.untracked.int32(1), + filterEfficiency = cms.untracked.double(1.0), + pythiaHepMCVerbosity = cms.untracked.bool(False), + maxEventsToPrint = cms.untracked.int32(2), + comEnergy = cms.double(13000.0), + ExternalDecays = cms.PSet( + EvtGen = cms.untracked.PSet( + operates_on_particles = cms.vint32( 0 ), # 0 (zero) means default list (hardcoded) + # you can put here the list of particles (PDG IDs) + # that you want decayed by EvtGen + use_default_decay = cms.untracked.bool(False), + decay_table = cms.FileInPath('GeneratorInterface/ExternalDecays/data/DECAY_NOLONGLIFE.DEC'), + # decay_table = cms.FileInPath('GeneratorInterface/ExternalDecays/data/DECAY.DEC'), + particle_property_file = cms.FileInPath('GeneratorInterface/ExternalDecays/data/evt.pdl'), + user_decay_file = cms.FileInPath('GeneratorInterface/ExternalDecays/data/Dstar_D0_Kpi.dec'), + list_forced_decays = cms.vstring('MyD*+','MyD*-') + ), + parameterSets = cms.vstring('EvtGen') + ), + PythiaParameters = cms.PSet( + #process.pythiaUESettingsBlock, + pythiaUESettingsBlock, + ccbarSettings= cms.vstring('MSEL=4 ! ccbar '), + # This is a vector of ParameterSet names to be read, in this order + parameterSets = cms.vstring('pythiaUESettings','ccbarSettings') + ) +) + +#process.D0DecayFilter = cms.EDFilter("PythiaDauFilter", +# ParticleID = cms.untracked.int32(421), +# ChargeConjugation = cms.untracked.bool(True), +# MinEta = cms.untracked.double(-100.), +# MaxEta = cms.untracked.double(100.), +# DaughterIDs = cms.untracked.vint32(-321,211,211,-211), +# NumberDaughters = cms.untracked.int32(4) +#) + +process.DstarFilter = cms.EDFilter("PythiaMomDauFilter", + ParticleID = cms.untracked.int32(413), + DaughterID = cms.untracked.int32(421), + ChargeConjugation = cms.untracked.bool(True), + MinEta = cms.untracked.double(-100.), + MaxEta = cms.untracked.double(100.), + DaughterIDs = cms.untracked.vint32(421,211), + NumberDaughters = cms.untracked.int32(2), + MomMinPt = cms.untracked.double(3.9), + NumberDescendants = cms.untracked.int32(2), + DescendantsIDs = cms.untracked.vint32(-321,211) +) + +################# + +#process.ProductionFilterSequence = cms.Sequence(process.generator*process.DstarFilter*process.D0DecayFilter) +process.ProductionFilterSequence = cms.Sequence(process.generator*process.DstarFilter) + +# Path and EndPath definitions +process.generation_step = cms.Path(process.pgen) +#process.simulation_step = cms.Path(process.psim) +process.genfiltersummary_step = cms.EndPath(process.genFilterSummary) +process.endjob_step = cms.EndPath(process.endOfProcess) +process.RAWSIMoutput_step = cms.EndPath(process.RAWSIMoutput) + +# Schedule definition +#process.schedule = cms.Schedule(process.generation_step,process.genfiltersummary_step,process.simulation_step,process.endjob_step,process.RAWSIMoutput_step) +process.schedule = cms.Schedule(process.generation_step,process.genfiltersummary_step,process.endjob_step,process.RAWSIMoutput_step) +# filter all path with the production filter sequence +for path in process.paths: + getattr(process,path)._seq = process.ProductionFilterSequence * getattr(process,path)._seq + +# customisation of the process. + +# Automatic addition of the customisation function from SLHCUpgradeSimulations.Configuration.postLS1Customs +from SLHCUpgradeSimulations.Configuration.postLS1Customs import customisePostLS1 + +#call to customisation function customisePostLS1 imported from SLHCUpgradeSimulations.Configuration.postLS1Customs +process = customisePostLS1(process) + +# End of customisation functions + + + diff --git a/GeneratorInterface/GenFilters/test/test_d0k4pi_ptdstarcut_gen_13TeV.py b/GeneratorInterface/GenFilters/test/test_d0k4pi_ptdstarcut_gen_13TeV.py new file mode 100644 index 0000000000000..2e08290ba8e0c --- /dev/null +++ b/GeneratorInterface/GenFilters/test/test_d0k4pi_ptdstarcut_gen_13TeV.py @@ -0,0 +1,147 @@ +import FWCore.ParameterSet.Config as cms + +process = cms.Process('GEN') + +# import of standard configurations +process.load('Configuration.StandardSequences.Services_cff') +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load('Configuration.Geometry.GeometrySimDB_cff') +process.load('Configuration.StandardSequences.MagneticField_38T_PostLS1_cff') +process.load('Configuration.StandardSequences.Generator_cff') +process.load('IOMC.EventVertexGenerators.VtxSmearedRealistic8TeVCollision_cfi') +process.load('GeneratorInterface.Core.genFilterSummary_cff') +process.load('Configuration.StandardSequences.SimIdeal_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(10000) +) + +# Input source +process.source = cms.Source("EmptySource") + +process.options = cms.untracked.PSet( + +) + +# Production Info +process.configurationMetadata = cms.untracked.PSet( + version = cms.untracked.string('$Revision: 1.1 $'), + annotation = cms.untracked.string('D*+ -> D0 pi+ -> (K-pi+pi+pi-) pi+ at 13TeV'), + name = cms.untracked.string('$Source: test_d0k4pi_ptdstarcut_gen_13TeV.py,v $') +) + +# Output definition + +process.RAWSIMoutput = cms.OutputModule("PoolOutputModule", + splitLevel = cms.untracked.int32(0), + eventAutoFlushCompressedSize = cms.untracked.int32(5242880), + outputCommands = process.RAWSIMEventContent.outputCommands, + fileName = cms.untracked.string('4pi_ptdstarcut_gen.root'), + dataset = cms.untracked.PSet( + filterName = cms.untracked.string(''), + dataTier = cms.untracked.string('GEN') + ), + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('generation_step') + ) +) + + +# Additional output definition + +# Other statements +process.genstepfilter.triggerConditions=cms.vstring("generation_step") +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_mc', '') +#process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:startup', '') +#from Configuration.Generator.PythiaUESettings_cfi import * #for 8 TeV +from Configuration.Generator.PythiaUEZ2starSettings_cfi import * #for 13 TeV +################# +process.generator = cms.EDFilter("Pythia6GeneratorFilter", + pythiaPylistVerbosity = cms.untracked.int32(1), + filterEfficiency = cms.untracked.double(1.0), + pythiaHepMCVerbosity = cms.untracked.bool(False), + maxEventsToPrint = cms.untracked.int32(2), + comEnergy = cms.double(13000.0), + ExternalDecays = cms.PSet( + EvtGen = cms.untracked.PSet( + operates_on_particles = cms.vint32( 0 ), # 0 (zero) means default list (hardcoded) + # you can put here the list of particles (PDG IDs) + # that you want decayed by EvtGen + use_default_decay = cms.untracked.bool(False), + decay_table = cms.FileInPath('GeneratorInterface/ExternalDecays/data/DECAY_NOLONGLIFE.DEC'), + # decay_table = cms.FileInPath('GeneratorInterface/ExternalDecays/data/DECAY.DEC'), + particle_property_file = cms.FileInPath('GeneratorInterface/ExternalDecays/data/evt.pdl'), + user_decay_file = cms.FileInPath('Dati13/TrackEfficiency/Dstar_D0_K3pi.dec'), + list_forced_decays = cms.vstring('MyD*+','MyD*-') + ), + parameterSets = cms.vstring('EvtGen') + ), + PythiaParameters = cms.PSet( + #process.pythiaUESettingsBlock, + pythiaUESettingsBlock, + ccbarSettings= cms.vstring('MSEL=4 ! ccbar '), + # This is a vector of ParameterSet names to be read, in this order + parameterSets = cms.vstring('pythiaUESettings','ccbarSettings') + ) +) + +#process.D0DecayFilter = cms.EDFilter("PythiaDauFilter", +# ParticleID = cms.untracked.int32(421), +# ChargeConjugation = cms.untracked.bool(True), +# MinEta = cms.untracked.double(-100.), +# MaxEta = cms.untracked.double(100.), +# DaughterIDs = cms.untracked.vint32(-321,211,211,-211), +# NumberDaughters = cms.untracked.int32(4) +#) + +process.DstarFilter = cms.EDFilter("PythiaMomDauFilter", + ParticleID = cms.untracked.int32(413), + DaughterID = cms.untracked.int32(421), + ChargeConjugation = cms.untracked.bool(True), + MinEta = cms.untracked.double(-100.), + MaxEta = cms.untracked.double(100.), + DaughterIDs = cms.untracked.vint32(421,211), + NumberDaughters = cms.untracked.int32(2), + MomMinPt = cms.untracked.double(3.9), + NumberDescendants = cms.untracked.int32(4), + DescendantsIDs = cms.untracked.vint32(-321,211,211,-211) +) + +################# + +#process.ProductionFilterSequence = cms.Sequence(process.generator*process.DstarFilter*process.D0DecayFilter) +process.ProductionFilterSequence = cms.Sequence(process.generator*process.DstarFilter) + +# Path and EndPath definitions +process.generation_step = cms.Path(process.pgen) +#process.simulation_step = cms.Path(process.psim) +process.genfiltersummary_step = cms.EndPath(process.genFilterSummary) +process.endjob_step = cms.EndPath(process.endOfProcess) +process.RAWSIMoutput_step = cms.EndPath(process.RAWSIMoutput) + +# Schedule definition +#process.schedule = cms.Schedule(process.generation_step,process.genfiltersummary_step,process.simulation_step,process.endjob_step,process.RAWSIMoutput_step) +process.schedule = cms.Schedule(process.generation_step,process.genfiltersummary_step,process.endjob_step,process.RAWSIMoutput_step) +# filter all path with the production filter sequence +for path in process.paths: + getattr(process,path)._seq = process.ProductionFilterSequence * getattr(process,path)._seq + +# customisation of the process. + +# Automatic addition of the customisation function from SLHCUpgradeSimulations.Configuration.postLS1Customs +from SLHCUpgradeSimulations.Configuration.postLS1Customs import customisePostLS1 + +#call to customisation function customisePostLS1 imported from SLHCUpgradeSimulations.Configuration.postLS1Customs +process = customisePostLS1(process) + +# End of customisation functions + + +