diff --git a/Generators/BeamHaloGenerator/CMakeLists.txt b/Generators/BeamHaloGenerator/CMakeLists.txt index 89013188628dbe80b906a2a7063ee434509c9212..2a09a44e9e121ff4898d500f2496645860701198 100644 --- a/Generators/BeamHaloGenerator/CMakeLists.txt +++ b/Generators/BeamHaloGenerator/CMakeLists.txt @@ -34,5 +34,5 @@ atlas_add_component( BeamHaloGenerator LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel GeneratorModulesLib AthenaKernel BeamHaloGeneratorLib ) # Install files from the package: -atlas_install_joboptions( share/*.py ) +atlas_install_joboptions( share/common/*.py ) diff --git a/Generators/BeamHaloGenerator/share/common/BeamHaloGenerator_Common.py b/Generators/BeamHaloGenerator/share/common/BeamHaloGenerator_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..3f9f4368754dce310d40bda1311b82100abc7866 --- /dev/null +++ b/Generators/BeamHaloGenerator/share/common/BeamHaloGenerator_Common.py @@ -0,0 +1,12 @@ + +from BeamHaloGenerator.BeamHaloGeneratorConf import BeamHaloGeneratorAlg +genSeq +=BeamHaloGeneratorAlg() +evgenConfig.generators += ["BeamHaloGenerator"] +genSeq.BeamHaloGeneratorAlg.doMonitoringPlots = True +genSeq.BeamHaloGeneratorAlg.inputFile="beamhalogen.events" + +############################################################### +## Beamhalo default. Redefine in JO if used for cavern background +############################################################### +genSeq.BeamHaloGeneratorAlg.inputType="FLUKA-RB" +genSeq.BeamHaloGeneratorAlg.interfacePlane = 22600.0 diff --git a/Generators/BeamHaloGenerator/share/jobOptions_CavernBackground.py b/Generators/BeamHaloGenerator/share/common/jobOptions_CavernBackground.py similarity index 100% rename from Generators/BeamHaloGenerator/share/jobOptions_CavernBackground.py rename to Generators/BeamHaloGenerator/share/common/jobOptions_CavernBackground.py diff --git a/Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHalo.py b/Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHalo.py similarity index 100% rename from Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHalo.py rename to Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHalo.py diff --git a/Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHalo2.py b/Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHalo2.py similarity index 100% rename from Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHalo2.py rename to Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHalo2.py diff --git a/Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHaloFiltered.py b/Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHaloFiltered.py similarity index 100% rename from Generators/BeamHaloGenerator/share/jobOptions_FlukaBeamHaloFiltered.py rename to Generators/BeamHaloGenerator/share/common/jobOptions_FlukaBeamHaloFiltered.py diff --git a/Generators/BeamHaloGenerator/share/jobOptions_MarsBeamHalo.py b/Generators/BeamHaloGenerator/share/common/jobOptions_MarsBeamHalo.py similarity index 100% rename from Generators/BeamHaloGenerator/share/jobOptions_MarsBeamHalo.py rename to Generators/BeamHaloGenerator/share/common/jobOptions_MarsBeamHalo.py diff --git a/Generators/BeamHaloGenerator/share/formatFlukaFile.pl b/Generators/BeamHaloGenerator/share/script/formatFlukaFile.pl similarity index 100% rename from Generators/BeamHaloGenerator/share/formatFlukaFile.pl rename to Generators/BeamHaloGenerator/share/script/formatFlukaFile.pl diff --git a/Generators/BeamHaloGenerator/share/splitFlukaFile.pl b/Generators/BeamHaloGenerator/share/script/splitFlukaFile.pl similarity index 100% rename from Generators/BeamHaloGenerator/share/splitFlukaFile.pl rename to Generators/BeamHaloGenerator/share/script/splitFlukaFile.pl diff --git a/Generators/Epos_i/CMakeLists.txt b/Generators/Epos_i/CMakeLists.txt index df94dbba212d7a7abdb082cfcd9251cea62e1a16..839e33717a52269cf19b67bed327f27b715e74be 100644 --- a/Generators/Epos_i/CMakeLists.txt +++ b/Generators/Epos_i/CMakeLists.txt @@ -40,8 +40,16 @@ atlas_add_component( Epos_i LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils Epos_iLib ) # Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/epos_crmc.param ) +atlas_install_joboptions( share/common/*.py ) +atlas_install_runtime( share/file/epos_crmc.param + ${CRMC_ROOT}/tabs/dpmjet.dat + ${CRMC_ROOT}/tabs/epos.initl + ${CRMC_ROOT}/tabs/epos.iniev + ${CRMC_ROOT}/tabs/epos.inirj + ${CRMC_ROOT}/tabs/epos.inirj.lhc + ${CRMC_ROOT}/tabs/epos.inics + ${CRMC_ROOT}/tabs/epos.inics.lhc + ${CRMC_ROOT}/tabs/epos.inidi ) set( EposEnvironment_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Location of EposEnvironment.cmake" ) diff --git a/Generators/Epos_i/EposEnvironmentConfig.cmake b/Generators/Epos_i/EposEnvironmentConfig.cmake index a44dffcdb5fe380bbb70439445d060a7175a98ed..a642a0f2af8720972a8e84537694a7c3b8266e34 100644 --- a/Generators/Epos_i/EposEnvironmentConfig.cmake +++ b/Generators/Epos_i/EposEnvironmentConfig.cmake @@ -5,7 +5,7 @@ # # Set the environment variable(s): -find_package( CRMC ) +find_package( Crmc ) if( CRMC_FOUND ) set( EPOSENVIRONMENT_ENVIRONMENT diff --git a/Generators/Epos_i/share/common/Epos_Base_Fragment.py b/Generators/Epos_i/share/common/Epos_Base_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..6fa00b996b84eec5c3e02dd28d415e0e5f53ec87 --- /dev/null +++ b/Generators/Epos_i/share/common/Epos_Base_Fragment.py @@ -0,0 +1,28 @@ +## Base config for Epos +from Epos_i.Epos_iConf import Epos +genSeq += Epos("Epos") +evgenConfig.generators += ["Epos"] + +genSeq.Epos.BeamMomentum = -runArgs.ecmEnergy/2.0 +genSeq.Epos.TargetMomentum = runArgs.ecmEnergy/2.0 +genSeq.Epos.PrimaryParticle = 1 +genSeq.Epos.TargetParticle = 1 +genSeq.Epos.Model = 0 +genSeq.Epos.ParamFile = "epos_crmc.param" + +## Get files from the InstallArea +import os +os.system("get_files %s" % genSeq.Epos.ParamFile) +inputFiles = "qgsjet.dat \ + qgsjet.ncs \ + sectnu-II-03 \ + epos.initl \ + epos.iniev \ + epos.inirj \ + epos.inics \ + epos.inirj.lhc \ + epos.inics.lhc" +if not os.path.exists("tabs"): + os.mkdir("tabs") +os.system("get_files %s" % inputFiles) +os.system("mv %s tabs/" % inputFiles) diff --git a/Generators/Epos_i/share/jobOptions.crmc.py b/Generators/Epos_i/share/common/jobOptions.crmc.py similarity index 100% rename from Generators/Epos_i/share/jobOptions.crmc.py rename to Generators/Epos_i/share/common/jobOptions.crmc.py diff --git a/Generators/Epos_i/share/epos_crmc.param b/Generators/Epos_i/share/file/epos_crmc.param similarity index 100% rename from Generators/Epos_i/share/epos_crmc.param rename to Generators/Epos_i/share/file/epos_crmc.param diff --git a/Generators/EvgenProdTools/CMakeLists.txt b/Generators/EvgenProdTools/CMakeLists.txt index b7de7408052892816101a5013331fb093a6495c1..2f695faa734acf91ec2301eb57b021b8d4fddcb9 100644 --- a/Generators/EvgenProdTools/CMakeLists.txt +++ b/Generators/EvgenProdTools/CMakeLists.txt @@ -35,6 +35,6 @@ atlas_add_component( EvgenProdTools # Install files from the package: atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/*.txt ) +atlas_install_joboptions( share/common/*.py ) +atlas_install_runtime( share/file/*.txt ) diff --git a/Generators/EvgenProdTools/share/EnableFixHepMC.py b/Generators/EvgenProdTools/share/common/EnableFixHepMC.py similarity index 100% rename from Generators/EvgenProdTools/share/EnableFixHepMC.py rename to Generators/EvgenProdTools/share/common/EnableFixHepMC.py diff --git a/Generators/EvgenProdTools/share/common/find_unique_file.py b/Generators/EvgenProdTools/share/common/find_unique_file.py new file mode 100644 index 0000000000000000000000000000000000000000..dc37297d4569fb14a79168f110c216be5d60c8d8 --- /dev/null +++ b/Generators/EvgenProdTools/share/common/find_unique_file.py @@ -0,0 +1,12 @@ +## Helper functions for input file handling +def find_unique_file(pattern): + "Return a matching file, provided it is unique" + import glob + files = glob.glob(pattern) + ## Check that there is exactly 1 match + if not files: + raise RuntimeError("No '%s' file found" % pattern) + elif len(files) > 1: + raise RuntimeError("More than one '%s' file found" % pattern) + return files[0] + diff --git a/Generators/EvgenProdTools/share/common/merge_lhe_files.py b/Generators/EvgenProdTools/share/common/merge_lhe_files.py new file mode 100644 index 0000000000000000000000000000000000000000..c91c809a17315c03c3e6a119841a636fe40c8232 --- /dev/null +++ b/Generators/EvgenProdTools/share/common/merge_lhe_files.py @@ -0,0 +1,48 @@ +# This function merges a list of input LHE file to make one outputFile. The header is taken from the first +# file, but the number of events is updated to equal the total number of events in all the input files +def merge_lhe_files(listOfFiles,outputFile): + if(os.path.exists(outputFile)): + print "outputFile ",outputFile," already exists. Will rename to ",outputFile,".OLD" + os.rename(outputFile,outputFile+".OLD") + output = open(outputFile,'w') + holdHeader = "" + nevents=0 + for file in listOfFiles: + cmd = "grep /event "+file+" | wc -l" + nevents+=int(subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)) + + for file in listOfFiles: + inHeader = True + header = "" + print "*** Starting file ",file + for line in open(file,"r"): +## Reading first event signals that we are done with all the header information +## Using this approach means the script will properly handle any metadata stored +## at the beginning of the file. Note: aside from the number of events, no metadata +## is updated after the first header is read (eg the random number seed recorded will be +## that of the first file. + if("<event" in line and inHeader): + inHeader = False + if(len(holdHeader)<1): + holdHeader = header + output.write(header) + output.write(line) +## each input file ends with "</LesHouchesEvents>". We don't want to write this out until all +## the files have been read. The elif below writes out all the events. + elif(not inHeader and not ("</LesHouchesEvents>" in line)): + output.write(line) + if(inHeader): +## Format for storing number of events different in MG and Powheg + if("nevents" in line and "Required accuracy" not in line): +## MG5 format is "n = nevents" + tmp = line.split("=") + line = line.replace(tmp[0],str(nevents)) + elif("numevts" in line): +## Powheg format is numevts n + tmp = line.split(" ") + nnn = str(nevents) + line = line.replace(tmp[1],nnn) + header+=line + output.write("</LesHouchesEvents>\n") + output.close() + diff --git a/Generators/EvgenProdTools/share/common/mult_lhe_input.py b/Generators/EvgenProdTools/share/common/mult_lhe_input.py new file mode 100644 index 0000000000000000000000000000000000000000..a35fe52b89a6aa00bfec4c742b1ddb4792e230b6 --- /dev/null +++ b/Generators/EvgenProdTools/share/common/mult_lhe_input.py @@ -0,0 +1,38 @@ +include("MC15JobOptions/merge_lhe_files.py") +include("MC15JobOptions/find_unique_file.py") + +myInputFiles = runArgs.inputGeneratorFile +genInputFiles = myInputFiles.split(',') +numberOfFiles = len(genInputFiles) + +if numberOfFiles > 1: + allFiles = [] + for file in genInputFiles: + print "input file name ",file +# Since we can have multiple files from the same task, inputroot must include more of the filename +# to make it unique + if ".tar" in os.path.basename(file): + inputroot = os.path.basename(file).split(".tar.")[0] + else: + input0 = os.path.basename(file).split("._")[0] + input1 = (os.path.basename(file).split("._")[1]).split(".")[0] + inputroot = input0+"._"+input1 +# print "inputroot ",inputroot + realEventsFile = find_unique_file('*%s.*ev*ts' % inputroot) +# The only input format where merging is permitted is LHE + with open(realEventsFile, 'r') as f: + first_line = f.readline() + if(not ("LesHouche" in first_line)): + raise RuntimeError("%s is NOT a LesHouche file" % realEventsFile) + allFiles.append(realEventsFile) + + print ("Found more than one LHE file: {}".format(numberOfFiles)) +# my_lhe_file = "merged_lhef.events" +# skeleton.GENtoEVGEN splits the file name on "._" (in rel. 20.7.9.9.6,MCProd, +# so insert this in the merged file name - to make it run also for this release) + my_lhe_file = "merged_lhef._0.events" + merge_lhe_files(allFiles, my_lhe_file ) + print ("Using uncompressed LHE file '{}' as inputGeneratorFile".format(my_lhe_file)) + runArgs.inputGeneratorFile = my_lhe_file + + diff --git a/Generators/EvgenProdTools/share/G4particle_whitelist.txt b/Generators/EvgenProdTools/share/file/G4particle_whitelist.txt similarity index 100% rename from Generators/EvgenProdTools/share/G4particle_whitelist.txt rename to Generators/EvgenProdTools/share/file/G4particle_whitelist.txt diff --git a/Generators/EvgenProdTools/share/susyParticlePdgid.txt b/Generators/EvgenProdTools/share/file/susyParticlePdgid.txt similarity index 100% rename from Generators/EvgenProdTools/share/susyParticlePdgid.txt rename to Generators/EvgenProdTools/share/file/susyParticlePdgid.txt diff --git a/Generators/EvtGen_i/CMakeLists.txt b/Generators/EvtGen_i/CMakeLists.txt index 21e1f4b07ed6cd50fa868cd80af9ad78eba799e6..a586696de54cb387c5a1db0537374cddaa808f9e 100644 --- a/Generators/EvtGen_i/CMakeLists.txt +++ b/Generators/EvtGen_i/CMakeLists.txt @@ -64,8 +64,8 @@ atlas_add_component( EvtGen_i LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${PYTHIA8_LIBRARIES} ${PHOTOSPP_LIBRARIES} ${TAUOLAPP_LIBRARIES} ${HEPMC_LIBRARIES} ${EVTGEN_LIBRARIES} StoreGateLib SGtests GaudiKernel GeneratorModulesLib GeneratorObjects AthenaKernel PathResolver EvtGen_iLib ) # Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/*.DEC share/*.table share/*.dec share/*.pdt share/*.dat ) +atlas_install_joboptions( share/common/*.py ) +atlas_install_runtime( share/file/*.DEC share/file/*.table share/file/*.dec share/file/*.pdt share/file/*.dat ) set( EvtGenEnvironment_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Location of EvtGenEnvironment.cmake" ) diff --git a/Generators/EvtGen_i/share/BsJpsiphi.py b/Generators/EvtGen_i/share/common/BsJpsiphi.py similarity index 100% rename from Generators/EvtGen_i/share/BsJpsiphi.py rename to Generators/EvtGen_i/share/common/BsJpsiphi.py diff --git a/Generators/EvtGen_i/share/common/EvtGen_Fragment.py b/Generators/EvtGen_i/share/common/EvtGen_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..7588ef0da49431e448ad832feddb78730ce13881 --- /dev/null +++ b/Generators/EvtGen_i/share/common/EvtGen_Fragment.py @@ -0,0 +1,38 @@ +## base fragment for EvtGen using 2014 decay tables. + +evgenConfig.generators += ["EvtGen"] +evgenConfig.auxfiles += ['2014Inclusive.dec'] + +from EvtGen_i.EvtGen_iConf import EvtInclusiveDecay +genSeq += EvtInclusiveDecay() +genSeq.EvtInclusiveDecay.OutputLevel = INFO +genSeq.EvtInclusiveDecay.decayFile = "2014Inclusive.dec" +genSeq.EvtInclusiveDecay.allowAllKnownDecays=False +genSeq.EvtInclusiveDecay.whiteList+=[-411, -421, -10411, -10421, -413, -423, + -10413, -10423, -20413, -20423, -415, -425, -431, -10431, -433, -10433, -20433, + -435, -511, -521, -10511, -10521, -513, -523, -10513, -10523, -20513, -20523, + -515, -525, -531, -10531, -533, -10533, -20533, -535, -541, -10541, -543, + -10543, -20543, -545, -441, -10441, -100441, -443, -10443, -20443, -100443, + -30443, -9000443, -9010443, -9020443, -445, -100445, -551, -10551, -100551, + -110551, -200551, -210551, -553, -10553, -20553, -30553, -100553, -110553, + -120553, -130553, -200553, -210553, -220553, -300553, -9000553, -9010553, -555, + -10555, -20555, -100555, -110555, -120555, -200555, -557, -100557, -4122, -4222, + -4212, -4112, -4224, -4214, -4114, -4232, -4132, -4322, -4312, -4324, -4314, + -4332, -4334, -4412, -4422, -4414, -4424, -4432, -4434, -4444, -5122, -5112, + -5212, -5222, -5114, -5214, -5224, -5132, -5232, -5312, -5322, -5314, -5324, + -5332, -5142, -5242, -5412, -5422, -5414, -5424, -5342, -5432, -5434, -5442, + -5444, -5512, -5522, -5514, -5524, -5532, -5534, -5542, -5544, -5554, -204126, + -104312, -104322, -105122, -105312, -105322, -104124, -104314, -104324, 411, + 421, 10411, 10421, 413, 423, 10413, 10423, 20413, 20423, 415, 425, 431, 10431, + 433, 10433, 20433, 435, 511, 521, 10511, 10521, 513, 523, 10513, 10523, 20513, + 20523, 515, 525, 531, 10531, 533, 10533, 20533, 535, 541, 10541, 543, 10543, + 20543, 545, 441, 10441, 100441, 443, 10443, 20443, 100443, 30443, 9000443, + 9010443, 9020443, 445, 100445, 551, 10551, 100551, 110551, 200551, 210551, 553, + 10553, 20553, 30553, 100553, 110553, 120553, 130553, 200553, 210553, 220553, + 300553, 9000553, 9010553, 555, 10555, 20555, 100555, 110555, 120555, 200555, + 557, 100557, 4122, 4222, 4212, 4112, 4224, 4214, 4114, 4232, 4132, 4322, 4312, + 4324, 4314, 4332, 4334, 4412, 4422, 4414, 4424, 4432, 4434, 4444, 5122, 5112, + 5212, 5222, 5114, 5214, 5224, 5132, 5232, 5312, 5322, 5314, 5324, 5332, 5142, + 5242, 5412, 5422, 5414, 5424, 5342, 5432, 5434, 5442, 5444, 5512, 5522, 5514, + 5524, 5532, 5534, 5542, 5544, 5554, 204126, 104312, 104322, 105122, 105312, + 105322, 104124, 104314, 104324 ] diff --git a/Generators/EvtGen_i/share/Lb2Lll.py b/Generators/EvtGen_i/share/common/Lb2Lll.py similarity index 100% rename from Generators/EvtGen_i/share/Lb2Lll.py rename to Generators/EvtGen_i/share/common/Lb2Lll.py diff --git a/Generators/EvtGen_i/share/LbJpsiL.py b/Generators/EvtGen_i/share/common/LbJpsiL.py similarity index 100% rename from Generators/EvtGen_i/share/LbJpsiL.py rename to Generators/EvtGen_i/share/common/LbJpsiL.py diff --git a/Generators/EvtGen_i/share/PythiaBEvtGen.py b/Generators/EvtGen_i/share/common/PythiaBEvtGen.py similarity index 100% rename from Generators/EvtGen_i/share/PythiaBEvtGen.py rename to Generators/EvtGen_i/share/common/PythiaBEvtGen.py diff --git a/Generators/EvtGen_i/share/PythiaBEvtGen_Signal.py b/Generators/EvtGen_i/share/common/PythiaBEvtGen_Signal.py similarity index 100% rename from Generators/EvtGen_i/share/PythiaBEvtGen_Signal.py rename to Generators/EvtGen_i/share/common/PythiaBEvtGen_Signal.py diff --git a/Generators/EvtGen_i/share/PythiaEvtGen.py b/Generators/EvtGen_i/share/common/PythiaEvtGen.py similarity index 100% rename from Generators/EvtGen_i/share/PythiaEvtGen.py rename to Generators/EvtGen_i/share/common/PythiaEvtGen.py diff --git a/Generators/EvtGen_i/share/StopPytWeakBdecays.py b/Generators/EvtGen_i/share/common/StopPytWeakBdecays.py similarity index 100% rename from Generators/EvtGen_i/share/StopPytWeakBdecays.py rename to Generators/EvtGen_i/share/common/StopPytWeakBdecays.py diff --git a/Generators/EvtGen_i/share/bTosllAli.py b/Generators/EvtGen_i/share/common/bTosllAli.py similarity index 100% rename from Generators/EvtGen_i/share/bTosllAli.py rename to Generators/EvtGen_i/share/common/bTosllAli.py diff --git a/Generators/EvtGen_i/share/2014Inclusive.dec b/Generators/EvtGen_i/share/file/2014Inclusive.dec similarity index 100% rename from Generators/EvtGen_i/share/2014Inclusive.dec rename to Generators/EvtGen_i/share/file/2014Inclusive.dec diff --git a/Generators/EvtGen_i/share/Bdecays0.dat b/Generators/EvtGen_i/share/file/Bdecays0.dat similarity index 100% rename from Generators/EvtGen_i/share/Bdecays0.dat rename to Generators/EvtGen_i/share/file/Bdecays0.dat diff --git a/Generators/EvtGen_i/share/Bplus_Kplus_mu6mu4.DEC b/Generators/EvtGen_i/share/file/Bplus_Kplus_mu6mu4.DEC similarity index 100% rename from Generators/EvtGen_i/share/Bplus_Kplus_mu6mu4.DEC rename to Generators/EvtGen_i/share/file/Bplus_Kplus_mu6mu4.DEC diff --git a/Generators/EvtGen_i/share/Bplus_Kplus_star_K0s_pi_mu6mu4.DEC b/Generators/EvtGen_i/share/file/Bplus_Kplus_star_K0s_pi_mu6mu4.DEC similarity index 100% rename from Generators/EvtGen_i/share/Bplus_Kplus_star_K0s_pi_mu6mu4.DEC rename to Generators/EvtGen_i/share/file/Bplus_Kplus_star_K0s_pi_mu6mu4.DEC diff --git a/Generators/EvtGen_i/share/Bs2Jpsiphi.DEC b/Generators/EvtGen_i/share/file/Bs2Jpsiphi.DEC similarity index 100% rename from Generators/EvtGen_i/share/Bs2Jpsiphi.DEC rename to Generators/EvtGen_i/share/file/Bs2Jpsiphi.DEC diff --git a/Generators/EvtGen_i/share/DECAY.DEC b/Generators/EvtGen_i/share/file/DECAY.DEC similarity index 100% rename from Generators/EvtGen_i/share/DECAY.DEC rename to Generators/EvtGen_i/share/file/DECAY.DEC diff --git a/Generators/EvtGen_i/share/DstarP2D0PiP_D02Kpi_evtgen.DEC b/Generators/EvtGen_i/share/file/DstarP2D0PiP_D02Kpi_evtgen.DEC similarity index 100% rename from Generators/EvtGen_i/share/DstarP2D0PiP_D02Kpi_evtgen.DEC rename to Generators/EvtGen_i/share/file/DstarP2D0PiP_D02Kpi_evtgen.DEC diff --git a/Generators/EvtGen_i/share/HerwigppInclusiveP8.pdt b/Generators/EvtGen_i/share/file/HerwigppInclusiveP8.pdt similarity index 100% rename from Generators/EvtGen_i/share/HerwigppInclusiveP8.pdt rename to Generators/EvtGen_i/share/file/HerwigppInclusiveP8.pdt diff --git a/Generators/EvtGen_i/share/MYDECAY.DEC b/Generators/EvtGen_i/share/file/MYDECAY.DEC similarity index 100% rename from Generators/EvtGen_i/share/MYDECAY.DEC rename to Generators/EvtGen_i/share/file/MYDECAY.DEC diff --git a/Generators/EvtGen_i/share/MYDECAY_Lb2Lll.DEC b/Generators/EvtGen_i/share/file/MYDECAY_Lb2Lll.DEC similarity index 100% rename from Generators/EvtGen_i/share/MYDECAY_Lb2Lll.DEC rename to Generators/EvtGen_i/share/file/MYDECAY_Lb2Lll.DEC diff --git a/Generators/EvtGen_i/share/MYDECAY_antiLb2Lll.DEC b/Generators/EvtGen_i/share/file/MYDECAY_antiLb2Lll.DEC similarity index 100% rename from Generators/EvtGen_i/share/MYDECAY_antiLb2Lll.DEC rename to Generators/EvtGen_i/share/file/MYDECAY_antiLb2Lll.DEC diff --git a/Generators/EvtGen_i/share/inclusive.dec b/Generators/EvtGen_i/share/file/inclusive.dec similarity index 100% rename from Generators/EvtGen_i/share/inclusive.dec rename to Generators/EvtGen_i/share/file/inclusive.dec diff --git a/Generators/EvtGen_i/share/inclusive.pdt b/Generators/EvtGen_i/share/file/inclusive.pdt similarity index 100% rename from Generators/EvtGen_i/share/inclusive.pdt rename to Generators/EvtGen_i/share/file/inclusive.pdt diff --git a/Generators/EvtGen_i/share/inclusiveP8.dec b/Generators/EvtGen_i/share/file/inclusiveP8.dec similarity index 100% rename from Generators/EvtGen_i/share/inclusiveP8.dec rename to Generators/EvtGen_i/share/file/inclusiveP8.dec diff --git a/Generators/EvtGen_i/share/inclusiveP8.pdt b/Generators/EvtGen_i/share/file/inclusiveP8.pdt similarity index 100% rename from Generators/EvtGen_i/share/inclusiveP8.pdt rename to Generators/EvtGen_i/share/file/inclusiveP8.pdt diff --git a/Generators/EvtGen_i/share/inclusiveP8DsDPlus.pdt b/Generators/EvtGen_i/share/file/inclusiveP8DsDPlus.pdt similarity index 100% rename from Generators/EvtGen_i/share/inclusiveP8DsDPlus.pdt rename to Generators/EvtGen_i/share/file/inclusiveP8DsDPlus.pdt diff --git a/Generators/EvtGen_i/share/pdt.table b/Generators/EvtGen_i/share/file/pdt.table similarity index 100% rename from Generators/EvtGen_i/share/pdt.table rename to Generators/EvtGen_i/share/file/pdt.table diff --git a/Generators/GeneratorFilters/CMakeLists.txt b/Generators/GeneratorFilters/CMakeLists.txt index 6ed699b734a9c848a95acf494dd11d0c2da40a38..c57cc8bd9c12b05b11f29dec1c061264f4f1b33f 100644 --- a/Generators/GeneratorFilters/CMakeLists.txt +++ b/Generators/GeneratorFilters/CMakeLists.txt @@ -43,5 +43,5 @@ atlas_add_component( GeneratorFilters LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} StoreGateLib SGtests GaudiKernel GeneratorModulesLib AthenaKernel CxxUtils EventInfo xAODJet xAODTruth TruthUtils ParticleEvent McParticleEvent MissingETEvent GeneratorFiltersLib ) # Install files from the package: -atlas_install_joboptions( share/*.py ) +atlas_install_joboptions( share/common/*.py ) diff --git a/Generators/GeneratorFilters/share/common/AntiKt10TruthJets.py b/Generators/GeneratorFilters/share/common/AntiKt10TruthJets.py new file mode 100644 index 0000000000000000000000000000000000000000..52fc0380ff83eb73324c3e12d76a3c7ec446cb1c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt10TruthJets.py @@ -0,0 +1,17 @@ +## Configure jet container for anti-kT R=1.0 truth jets + +evgenConfig.findJets = True + +## Turn off ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = [] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt10TruthJets", "AntiKt", 1.0, "truth", + modifiersin="none", + ptmin=50000.) \ No newline at end of file diff --git a/Generators/GeneratorFilters/share/common/AntiKt4TruthJets.py b/Generators/GeneratorFilters/share/common/AntiKt4TruthJets.py new file mode 100644 index 0000000000000000000000000000000000000000..9d16cfb20249ebac49ccaac5de5f0a9bc6f54e79 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt4TruthJets.py @@ -0,0 +1,17 @@ +## Configure jet container for anti-kT R=0.4 truth jets + +evgenConfig.findJets = True + +## Turn off ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = [] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt4TruthJets", "AntiKt", 0.4, "truth", + modifiersin="none", + ptmin=7000.) diff --git a/Generators/GeneratorFilters/share/common/AntiKt4TruthJets_pileup.py b/Generators/GeneratorFilters/share/common/AntiKt4TruthJets_pileup.py new file mode 100644 index 0000000000000000000000000000000000000000..7a7565bd0d7da5185657f7886793581550035add --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt4TruthJets_pileup.py @@ -0,0 +1,27 @@ +## Configure jet container for anti-kT R=0.4 truth jets with flavour labels + +## Note: this cannot be used simultaneously with a non-labelled jet container +## since jetFlags.truthFlavorTags is a global variable + +evgenConfig.findJets = True + +## Turn on ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = ["BHadronsInitial", "BHadronsFinal", "BQuarksFinal", + "CHadronsInitial", "CHadronsFinal", "CQuarksFinal", + "TausFinal", + "Partons", + ] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + +## truthpartondr => adds cone-based label +## partontruthlabel => adds ghost-based label +## removeconstit => empties container of jet constituents to reduce filesize +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt4TruthJets", "AntiKt", 0.4, "truth", + modifiersin=[jtm.truthpartondr, jtm.partontruthlabel, jtm.removeconstit], + ptmin=7000.) diff --git a/Generators/GeneratorFilters/share/common/AntiKt4TruthWZJets.py b/Generators/GeneratorFilters/share/common/AntiKt4TruthWZJets.py new file mode 100644 index 0000000000000000000000000000000000000000..f74edcf8eff5b9646a4bb7518f70df78b72b8b3c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt4TruthWZJets.py @@ -0,0 +1,17 @@ +## Configure jet container for anti-kT R=0.4 truth jets + +evgenConfig.findJets = True + +## Turn off ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = [] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt4TruthWZJets", "AntiKt", 0.4, "truthwz", + modifiersin="none", + ptmin=7000.) diff --git a/Generators/GeneratorFilters/share/common/AntiKt6TruthJets.py b/Generators/GeneratorFilters/share/common/AntiKt6TruthJets.py new file mode 100644 index 0000000000000000000000000000000000000000..8446c31be4f19da964f323ce8d6bd36aee03c6ef --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt6TruthJets.py @@ -0,0 +1,18 @@ +## Configure jet container for anti-kT R=0.6 truth jets + +evgenConfig.findJets = True + +## Turn off ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = [] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + + +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt6TruthJets", "AntiKt", 0.6, "truth", + modifiersin="none", + ptmin=7000.) diff --git a/Generators/GeneratorFilters/share/common/AntiKt6TruthJets_pileup.py b/Generators/GeneratorFilters/share/common/AntiKt6TruthJets_pileup.py new file mode 100644 index 0000000000000000000000000000000000000000..be9d2156d641d4c12abcaf930b1f1ff94393f2b7 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/AntiKt6TruthJets_pileup.py @@ -0,0 +1,27 @@ +## Configure jet container for anti-kT R=0.6 truth jets with flavour labels + +## Note: this cannot be used simultaneously with a non-labelled jet container +## since jetFlags.truthFlavorTags is a global variable + +evgenConfig.findJets = True + +## Turn on ghost association algorithms +from JetRec.JetRecFlags import jetFlags +jetFlags.truthFlavorTags = ["BHadronsInitial", "BHadronsFinal", "BQuarksFinal", + "CHadronsInitial", "CHadronsFinal", "CQuarksFinal", + "TausFinal", + "Partons", + ] +# Turning off tracks which are otherwise on by default +# If you wish to use tracks, simply add the following two lines to you JOs BEFORE including this fragment, do not alter this fragment. +# from JetRec.JetRecFlags import jetFlags +# jetFlags.useTracks.set_Value_and_Lock(True) +jetFlags.useTracks = False + +## truthpartondr => adds cone-based label +## partontruthlabel => adds ghost-based label +## removeconstit => empties container of jet constituents to reduce filesize +from JetRec.JetRecStandard import jtm +jtm.addJetFinder("AntiKt6TruthJets", "AntiKt", 0.6, "truth", + modifiersin=[jtm.truthpartondr, jtm.partontruthlabel, jtm.removeconstit], + ptmin=7000.) diff --git a/Generators/GeneratorFilters/share/common/BHadronFilter.py b/Generators/GeneratorFilters/share/common/BHadronFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..716ec8d20df5d76209c70130ed287b57e324c03d --- /dev/null +++ b/Generators/GeneratorFilters/share/common/BHadronFilter.py @@ -0,0 +1,18 @@ +## +## Make a HeavyFlavorHadronFilter and steer it to select B Hadrons +## with any pT within |eta| < 4 +## +if not hasattr(filtSeq, "HeavyFlavorBHadronFilter"): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + HeavyFlavorBHadronFilter = HeavyFlavorHadronFilter(name="HeavyFlavorBHadronFilter") + +## Default cut params +HeavyFlavorBHadronFilter.RequestBottom=True +HeavyFlavorBHadronFilter.RequestCharm=False +HeavyFlavorBHadronFilter.Request_cQuark=False +HeavyFlavorBHadronFilter.Request_bQuark=False +HeavyFlavorBHadronFilter.RequestSpecificPDGID=False +HeavyFlavorBHadronFilter.RequireTruthJet=False +HeavyFlavorBHadronFilter.BottomPtMin=0*GeV +HeavyFlavorBHadronFilter.BottomEtaMax=4.0 + diff --git a/Generators/GeneratorFilters/share/common/BSignalFilter.py b/Generators/GeneratorFilters/share/common/BSignalFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..4fc335b8a88ea0748e503a9b52858c5dc78a7dda --- /dev/null +++ b/Generators/GeneratorFilters/share/common/BSignalFilter.py @@ -0,0 +1,15 @@ +## Example configuration for MultiLeptonFilter setting up defaults + +if not hasattr( filtSeq, "BSignalFilter" ): + from GeneratorFilters.GeneratorFiltersConf import BSignalFilter + filtSeq += BSignalFilter() + pass + +""" +BSignalFilter.LVL1MuonCutOn = True +BSignalFilter.LVL2MuonCutOn = True +BSignalFilter.LVL1MuonCutPT = 3500 +BSignalFilter.LVL1MuonCutEta = 2.6 +BSignalFilter.LVL2MuonCutPT = 3500 +BSignalFilter.LVL2MuonCutEta = 2.6 +""" diff --git a/Generators/GeneratorFilters/share/common/BSubtractFilter.py b/Generators/GeneratorFilters/share/common/BSubtractFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..becf29e983cce571a760ac7cb006b320e2834258 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/BSubtractFilter.py @@ -0,0 +1,21 @@ +## Example configuration for BSubtract filter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "BSubstrcut" ): + from GeneratorFilters.GeneratorFiltersConf import BSubstruct + filtSeq += BSubstruct() + pass + +""" +BSubstructFilter = filtSeq.BSubstruct +BSubstructFilter.JetKey = "AntiKt4TruthJets" +BSubstructFilter.pTMin = 180 +BSubstructFilter.pTMax = -1 +BSubstructFilter.filterB = True +BSubstructFilter.filterC = True +BSubstructFilter.dRMatch = 1.2 +BSubstructFilter.doHistos = False +""" diff --git a/Generators/GeneratorFilters/share/common/BoostedHadTopAndTopPair.py b/Generators/GeneratorFilters/share/common/BoostedHadTopAndTopPair.py new file mode 100644 index 0000000000000000000000000000000000000000..91cbf50c4c654d7adfcf3ae837a70ffa1870e00b --- /dev/null +++ b/Generators/GeneratorFilters/share/common/BoostedHadTopAndTopPair.py @@ -0,0 +1,14 @@ +if not hasattr(filtSeq, "BoostedHadTopAndTopPair"): + from GeneratorFilters.GeneratorFiltersConf import BoostedHadTopAndTopPair + filtSeq += BoostedHadTopAndTopPair("BoostedHadTopAndTopPair") + + +## Choose to cut on the pT of the top on the list for m_cutPtOf = 0, +## or to cut on the pT of the top decay products (b, q, q'bar) on the list for m_cutPtOf = 1 +filtSeq.BoostedHadTopAndTopPair.cutPtOf = 1 + +## Default cut params (in MeV) +filtSeq.BoostedHadTopAndTopPair.tHadPtMin = 0.0 # if -1 : all decay modes, if >= 0 : at least 1 hadronic top +filtSeq.BoostedHadTopAndTopPair.tHadPtMax = 6000000.0 +filtSeq.BoostedHadTopAndTopPair.tPairPtMin = 0.0 +filtSeq.BoostedHadTopAndTopPair.tPairPtMax = 6000000.0 diff --git a/Generators/GeneratorFilters/share/common/CHadronFilter.py b/Generators/GeneratorFilters/share/common/CHadronFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..f318190c1f7abedea55483b5bfe1c345540a35ed --- /dev/null +++ b/Generators/GeneratorFilters/share/common/CHadronFilter.py @@ -0,0 +1,17 @@ +## +## Make a HeavyFlavorHadronFilter and steer it to select C Hadrons +## with any pT within |eta| < 4 +## +if not hasattr(filtSeq, "HeavyFlavorCHadronFilter"): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + HeavyFlavorCHadronFilter = HeavyFlavorHadronFilter(name="HeavyFlavorCHadronFilter") + +## Default cut params +HeavyFlavorCHadronFilter.RequestBottom=False +HeavyFlavorCHadronFilter.RequestCharm=True +HeavyFlavorCHadronFilter.Request_cQuark=False +HeavyFlavorCHadronFilter.Request_bQuark=False +HeavyFlavorCHadronFilter.RequestSpecificPDGID=False +HeavyFlavorCHadronFilter.RequireTruthJet=False +HeavyFlavorCHadronFilter.CharmPtMin=0*GeV +HeavyFlavorCHadronFilter.CharmEtaMax=4.0 diff --git a/Generators/GeneratorFilters/share/common/CHadronPt4Eta3_Filter.py b/Generators/GeneratorFilters/share/common/CHadronPt4Eta3_Filter.py new file mode 100644 index 0000000000000000000000000000000000000000..ec87f443f189d8cb25f2d7b133c6cf9f061ef8c0 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/CHadronPt4Eta3_Filter.py @@ -0,0 +1,17 @@ +## +## Make a HeavyFlavorHadronFilter and steer it to select C Hadrons +## with pT>4 GeV within |eta| < 3 +## +if not hasattr(filtSeq, "HeavyFlavorCHadronPt4Eta3_Filter"): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + HeavyFlavorCHadronPt4Eta3_Filter = HeavyFlavorHadronFilter(name="HeavyFlavorCHadronPt4Eta3_Filter") + +## Default cut params +HeavyFlavorCHadronPt4Eta3_Filter.RequestBottom=False +HeavyFlavorCHadronPt4Eta3_Filter.RequestCharm=True +HeavyFlavorCHadronPt4Eta3_Filter.Request_cQuark=False +HeavyFlavorCHadronPt4Eta3_Filter.Request_bQuark=False +HeavyFlavorCHadronPt4Eta3_Filter.RequestSpecificPDGID=False +HeavyFlavorCHadronPt4Eta3_Filter.RequireTruthJet=False +HeavyFlavorCHadronPt4Eta3_Filter.CharmPtMin=4*GeV +HeavyFlavorCHadronPt4Eta3_Filter.CharmEtaMax=3.0 diff --git a/Generators/GeneratorFilters/share/common/CHadronPt4Eta4_JetFilter.py b/Generators/GeneratorFilters/share/common/CHadronPt4Eta4_JetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..6bcd354c2da548049d85a932d30b6e58f24fba6c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/CHadronPt4Eta4_JetFilter.py @@ -0,0 +1,26 @@ +## +## Make a HeavyFlavorHadronFilter and steer it to select at least +## one AntiKt jet with pT>15 GeV, |eta|<3 containing stable +## C Hadrons with pT>4 GeV matched within DR<0.5 +## +if not hasattr(filtSeq, "HeavyFlavorCHadronPt4Eta4_JetFilter"): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + HeavyFlavorCHadronPt4Eta4_JetFilter = HeavyFlavorHadronFilter(name="HeavyFlavorCHadronPt4Eta4_JetFilter") + +# Anti-kt truth jets with pt>7 GeV and R=0.4 +include("GeneratorFilters/AntiKt4TruthJets.py") +# +HeavyFlavorCHadronPt4Eta4_JetFilter.RequestBottom=False +HeavyFlavorCHadronPt4Eta4_JetFilter.RequestCharm=True +HeavyFlavorCHadronPt4Eta4_JetFilter.Request_cQuark=False +HeavyFlavorCHadronPt4Eta4_JetFilter.Request_bQuark=False +HeavyFlavorCHadronPt4Eta4_JetFilter.RequestSpecificPDGID=False +HeavyFlavorCHadronPt4Eta4_JetFilter.RequireTruthJet=True +HeavyFlavorCHadronPt4Eta4_JetFilter.CharmPtMin=4*GeV +HeavyFlavorCHadronPt4Eta4_JetFilter.CharmEtaMax=4.0 +# +HeavyFlavorCHadronPt4Eta4_JetFilter.DeltaRFromTruth=0.5 +HeavyFlavorCHadronPt4Eta4_JetFilter.JetPtMin=15.0*GeV +HeavyFlavorCHadronPt4Eta4_JetFilter.JetEtaMax=3.0 +HeavyFlavorCHadronPt4Eta4_JetFilter.TruthContainerName="AntiKt4TruthJets" + diff --git a/Generators/GeneratorFilters/share/common/ChargedTrackFilter.py b/Generators/GeneratorFilters/share/common/ChargedTrackFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..8cc52a4484bbfdd401ee0f662936895f972d4906 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/ChargedTrackFilter.py @@ -0,0 +1,10 @@ +## Default truth ncharged filter setup + +from GeneratorFilters.GeneratorFiltersConf import ChargedTracksFilter +if "ChargedTracksFilter" not in filtSeq: + filtSeq += ChargedTracksFilter() + +filtSeq.ChargedTracksFilter.Ptcut = 100. +filtSeq.ChargedTracksFilter.Etacut = 2.5 + + diff --git a/Generators/GeneratorFilters/share/common/DecayModeFilter.py b/Generators/GeneratorFilters/share/common/DecayModeFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..998ad2e64377a8257e2437586eb430d102a87537 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DecayModeFilter.py @@ -0,0 +1,6 @@ +if not hasattr(filtSeq, "DecayModeFilter"): + from GeneratorFilters.GeneratorFiltersConf import DecayModeFilter + filtSeq += DecayModeFilter() + pass + +filtSeq.DecayModeFilter.modeID = "E" diff --git a/Generators/GeneratorFilters/share/common/DecaysFinalStateFilter.py b/Generators/GeneratorFilters/share/common/DecaysFinalStateFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..7462154db62844c388d787123d36aa5bfbe7b010 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DecaysFinalStateFilter.py @@ -0,0 +1,13 @@ +# Example JO to filter with DecaysFinalStateFilter + +if not hasattr( filtSeq, "DecaysFinalStateFilter" ): + from GeneratorFilters.GeneratorFiltersConf import DecaysFinalStateFilter + filtSeq += DecaysFinalStateFilter() + pass + +""" +DecaysFinalStateFilter = filtSeq.DecaysFinalStateFilter +DecaysFinalStateFilter.NQuarks = 2 +DecaysFinalStateFilter.MinNChargedLeptons = 2 +DecaysFinalStateFilter.PDGAllowedParents = [ 23, 24, -24 ] +""" diff --git a/Generators/GeneratorFilters/share/common/DiBJetFilter.py b/Generators/GeneratorFilters/share/common/DiBJetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..bcb779399a98dd0e341e88f02b3a106854e4f533 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DiBJetFilter.py @@ -0,0 +1,24 @@ +## Example configuration for DiBJet filter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "DiBjetFilter" ): + from GeneratorFilters.GeneratorFiltersConf import DiBjetFilter + filtSeq += DiBjetFilter() + pass + +""" +DiBjetFilter = filtSeq.DiBjetFilter +DiBjetFilter.LeadJetPtMin = 0 +DiBjetFilter.LeadJetPtMax = 50000 +DiBjetFilter.BottomPtMin = 5.0 +DiBjetFilter.BottomEtaMax = 3.0 +DiBjetFilter.JetPtMin = 15.0 +DiBjetFilter.JetEtaMax = 2.7 +DiBjetFilter.DeltaRFromTruth = 0.3 +DiBjetFilter.TruthContainerName = "AntiKt4TruthJets" +DiBjetFilter.LightJetSuppressionFactor = 10 +DiBjetFilter.AcceptSomeLightEvents = False +""" diff --git a/Generators/GeneratorFilters/share/common/DiLeptonMassFilter.py b/Generators/GeneratorFilters/share/common/DiLeptonMassFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..4378f11caab767c2c989ca79e75842a7bc1dcbde --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DiLeptonMassFilter.py @@ -0,0 +1,16 @@ +## Example configuration for DiLeptonMassFilter setting up defaults + +if not hasattr( filtSeq, "DiLeptonMassFilter" ): + from GeneratorFilters.GeneratorFiltersConf import DiLeptonMassFilter + filtSeq += DiLeptonMassFilter() + pass + +""" +DiLeptonMassFilter = filtSeq.DiLeptonMassFilter +DiLeptonMassFilter.MinPt = 3500. +DiLeptonMassFilter.MaxEta = 3.0 +DiLeptonMassFilter.MinMass = 4000. +DiLeptonMassFilter.MaxMass = 10000. +DiLeptonMassFilter.AllowSameCharge = False +""" + diff --git a/Generators/GeneratorFilters/share/common/DiLeptonMassSliceFilter.py b/Generators/GeneratorFilters/share/common/DiLeptonMassSliceFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..9968fd2e13c0aa15d86efc88e4dcea766a6de0fe --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DiLeptonMassSliceFilter.py @@ -0,0 +1,17 @@ +## Example configuration for DiLeptonMassSliceFilter setting up defaults + +if not hasattr( filtSeq, "DiLeptonMassSliceFilter" ): + from GeneratorFilters.GeneratorFiltersConf import DiLeptonMassSliceFilter + filtSeq += DiLeptonMassSliceFilter() + pass + +""" +DiLeptonMassSliceFilter = filtSeq.DiLeptonMassSliceFilter +DiLeptonMassSliceFilter.MinPt = 3500. +DiLeptonMassSliceFilter.MaxEta = 3.0 +DiLeptonMassSliceFilter.MinMass = 4000. +DiLeptonMassSliceFilter.LowerThenMassCut = 86188. +DiLeptonMassSliceFilter.GreaterThenMassCut = 96188. +DiLeptonMassSliceFilter.AllowSameCharge = False +""" + diff --git a/Generators/GeneratorFilters/share/common/DirectPhotonFilter.py b/Generators/GeneratorFilters/share/common/DirectPhotonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..44e203da61538323a06443ff8c882cbebf713e69 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DirectPhotonFilter.py @@ -0,0 +1,19 @@ +## Example configuration for DirectPhotonFilter setting up defaults + +if not hasattr( filtSeq, "DirectPhotonFilter" ): + from GeneratorFilters.GeneratorFiltersConf import DirectPhotonFilter + filtSeq += DirectPhotonFilter() + pass + +""" +DirectPhotonFilter = filtSeq.DirectPhotonFilter + +# Old method of pt cut - maintained for backwards compatibility +# DirectPhotonFilter.Ptcut = 10000. + +DirectPhotonFilter.Ptmin = 10000. +DirectPhotonFilter.Ptmax = 100000000. +DirectPhotonFilter.Etacut = 2.50 +DirectPhotonFilter.NPhotons = 1 +DirectPhotonFilter.AllowSUSYDecay = False +""" diff --git a/Generators/GeneratorFilters/share/common/DstarMinusFilter.py b/Generators/GeneratorFilters/share/common/DstarMinusFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..0d09c6795d6a9def56d09217823d6ec0aae8038e --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DstarMinusFilter.py @@ -0,0 +1,18 @@ +## Filter on presence of Dstar hadrond + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.RequestCharm=FALSE +HeavyFlavorHadronFilter.RequestBottom=FALSE +HeavyFlavorHadronFilter.Request_cQuark=FALSE +HeavyFlavorHadronFilter.Request_bQuark=FALSE +HeavyFlavorHadronFilter.RequestSpecificPDGID=TRUE +HeavyFlavorHadronFilter.PDGID=-413 +HeavyFlavorHadronFilter.PDGAntiParticleToo=FALSE +HeavyFlavorHadronFilter.RequireTruthJet=FALSE +HeavyFlavorHadronFilter.PDGEtaMax=3.0 +HeavyFlavorHadronFilter.PDGPtMin=4.0*GeV +HeavyFlavorHadronFilter.RequireTruthJet = False diff --git a/Generators/GeneratorFilters/share/common/DstarMinusFilter_minPt1GeV.py b/Generators/GeneratorFilters/share/common/DstarMinusFilter_minPt1GeV.py new file mode 100644 index 0000000000000000000000000000000000000000..7ff263017b6ecc49e61a3138cc8620ac33576d2d --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DstarMinusFilter_minPt1GeV.py @@ -0,0 +1,18 @@ +## Filter on presence of Dstar hadrond + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.RequestCharm=FALSE +HeavyFlavorHadronFilter.RequestBottom=FALSE +HeavyFlavorHadronFilter.Request_cQuark=FALSE +HeavyFlavorHadronFilter.Request_bQuark=FALSE +HeavyFlavorHadronFilter.RequestSpecificPDGID=TRUE +HeavyFlavorHadronFilter.PDGID=-413 +HeavyFlavorHadronFilter.PDGAntiParticleToo=FALSE +HeavyFlavorHadronFilter.RequireTruthJet=FALSE +HeavyFlavorHadronFilter.PDGEtaMax=3.0 +HeavyFlavorHadronFilter.PDGPtMin=1.0*GeV +HeavyFlavorHadronFilter.RequireTruthJet = False diff --git a/Generators/GeneratorFilters/share/common/DstarPlusFilter.py b/Generators/GeneratorFilters/share/common/DstarPlusFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..c85546e7b277aa5f0eb4231d9ec96b28249b0eeb --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DstarPlusFilter.py @@ -0,0 +1,18 @@ +## Filter on presence of Dstar hadrond + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.RequestCharm=FALSE +HeavyFlavorHadronFilter.RequestBottom=FALSE +HeavyFlavorHadronFilter.Request_cQuark=FALSE +HeavyFlavorHadronFilter.Request_bQuark=FALSE +HeavyFlavorHadronFilter.RequestSpecificPDGID=TRUE +HeavyFlavorHadronFilter.PDGID=413 +HeavyFlavorHadronFilter.PDGAntiParticleToo=FALSE +HeavyFlavorHadronFilter.RequireTruthJet=FALSE +HeavyFlavorHadronFilter.PDGEtaMax=3.0 +HeavyFlavorHadronFilter.PDGPtMin=4.0*GeV +HeavyFlavorHadronFilter.RequireTruthJet = False diff --git a/Generators/GeneratorFilters/share/common/DstarPlusFilter_minPt1GeV.py b/Generators/GeneratorFilters/share/common/DstarPlusFilter_minPt1GeV.py new file mode 100644 index 0000000000000000000000000000000000000000..b8bcae7fdcf1eb4e30be63db034c15de869441b2 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DstarPlusFilter_minPt1GeV.py @@ -0,0 +1,18 @@ +## Filter on presence of Dstar hadrond + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.RequestCharm=FALSE +HeavyFlavorHadronFilter.RequestBottom=FALSE +HeavyFlavorHadronFilter.Request_cQuark=FALSE +HeavyFlavorHadronFilter.Request_bQuark=FALSE +HeavyFlavorHadronFilter.RequestSpecificPDGID=TRUE +HeavyFlavorHadronFilter.PDGID=413 +HeavyFlavorHadronFilter.PDGAntiParticleToo=FALSE +HeavyFlavorHadronFilter.RequireTruthJet=FALSE +HeavyFlavorHadronFilter.PDGEtaMax=3.0 +HeavyFlavorHadronFilter.PDGPtMin=1.0*GeV +HeavyFlavorHadronFilter.RequireTruthJet = False diff --git a/Generators/GeneratorFilters/share/common/DuplicateEventFilter.py b/Generators/GeneratorFilters/share/common/DuplicateEventFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..5c5b41ee4e045642c2626249075db2a0fc87c3db --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DuplicateEventFilter.py @@ -0,0 +1,8 @@ +## Filters out duplicate event(s) for use with the Afterburn steering, in which the +## first event seems to be duplicate +## @todo: should be part of TestHepMC? +if not hasattr(filtSeq, "DuplicateEventFilter"): + from GeneratorFilters.GeneratorFiltersConf import DuplicateEventFilter + filtSeq += DuplicateEventFilter() + + diff --git a/Generators/GeneratorFilters/share/common/DzeroFilter.py b/Generators/GeneratorFilters/share/common/DzeroFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..8d6ec653b78ffafcda6cc28e9db419eaadbbd566 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/DzeroFilter.py @@ -0,0 +1,18 @@ +## Filter on presence of Dzero hadrond + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.RequestCharm=FALSE +HeavyFlavorHadronFilter.RequestBottom=FALSE +HeavyFlavorHadronFilter.Request_cQuark=FALSE +HeavyFlavorHadronFilter.Request_bQuark=FALSE +HeavyFlavorHadronFilter.RequestSpecificPDGID=TRUE +HeavyFlavorHadronFilter.PDGID=421 +HeavyFlavorHadronFilter.PDGAntiParticleToo=FALSE +HeavyFlavorHadronFilter.RequireTruthJet=FALSE +HeavyFlavorHadronFilter.PDGEtaMax=3.0 +HeavyFlavorHadronFilter.PDGPtMin=4.0*GeV +HeavyFlavorHadronFilter.RequireTruthJet = False diff --git a/Generators/GeneratorFilters/share/common/FourLeptonInvMassFilter.py b/Generators/GeneratorFilters/share/common/FourLeptonInvMassFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..297926508c89355d32df07c423f3864c2c049d8c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/FourLeptonInvMassFilter.py @@ -0,0 +1,8 @@ +## Example configuration for FourLeptonMassFilter setting up defaults + + +if not hasattr( filtSeq, "FourLeptonInvMassFilter" ): + from GeneratorFilters.GeneratorFiltersConf import FourLeptonInvMassFilter + filtSeq += FourLeptonInvMassFilter() + pass + diff --git a/Generators/GeneratorFilters/share/common/FourLeptonMassFilter.py b/Generators/GeneratorFilters/share/common/FourLeptonMassFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..6421dad991fec46e876d93656fb7c41caad21444 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/FourLeptonMassFilter.py @@ -0,0 +1,20 @@ +## Example configuration for FourLeptonMassFilter setting up defaults + + +if not hasattr( filtSeq, "FourLeptonMassFilter" ): + from GeneratorFilters.GeneratorFiltersConf import FourLeptonMassFilter + filtSeq += FourLeptonMassFilter() + pass + +## Setup Defaults as example +""" +FourLeptonMassFilter = filtSeq.FourLeptonMassFilter +FourLeptonMassFilter.MinPt = 5000. +FourLeptonMassFilter.MaxEta = 3. +FourLeptonMassFilter.MinMass1 = 60000. +FourLeptonMassFilter.MaxMass1 = 14000000. +FourLeptonMassFilter.MinMass2 = 12000. +FourLeptonMassFilter.MaxMass2 = 14000000. +FourLeptonMassFilter.AllowElecMu = True +FourLeptonMassFilter.AllowSameCharge = True +""" diff --git a/Generators/GeneratorFilters/share/common/GapJetFilter.py b/Generators/GeneratorFilters/share/common/GapJetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..faa5b70bf68ba0807e8fa635bad6b93a0f3a2e63 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/GapJetFilter.py @@ -0,0 +1,34 @@ +## Example configuration for GapJetFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "GapJetFilter" ): + from GeneratorFilters.GeneratorFiltersConf import GapJetFilter + filtSeq += GapJetFilter() + pass + +""" +GapJetFilter = filtSeq.GapJetFilter +GapJetFilter.JetContainer = "AntiKt4TruthJets" + +#Allow a hard cut on the jet system +GapJetFilter.MinPt1 = 12.0 # In GeV +GapJetFilter.MaxPt1 = 70000.0 # In GeV +GapJetFilter.MinPt2 = 12.0 # In GeV +GapJetFilter.MaxPt2 = 70000.0 # In GeV + +GapJetFilter.MinPtparticle = 0. # In MeV +GapJetFilter.MaxEtaparticle = 0. + +GapJetFilter.c0 = 0. +GapJetFilter.c1 = 0. +GapJetFilter.c2 = 0. +GapJetFilter.c3 = 0. +GapJetFilter.c4 = 0. +GapJetFilter.c5 = 0. +GapJetFilter.c6 = 0. +GapJetFilter.c7 = 0. +GapJetFilter.gapf = 0. +""" diff --git a/Generators/GeneratorFilters/share/common/HTFilter.py b/Generators/GeneratorFilters/share/common/HTFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..46cdc56843d064487db71943b6501e2977891a4c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/HTFilter.py @@ -0,0 +1,14 @@ +## HT filter setup for anti-kT R=0.4 truth jets +include("GeneratorFilters/AntiKt4TruthWZJets.py") + +from GeneratorFilters.GeneratorFiltersConf import HTFilter +if "HTFilter" not in filtSeq: + filtSeq += HTFilter() + +filtSeq.HTFilter.MinJetPt = 20.*GeV # Min pT to consider jet in HT +filtSeq.HTFilter.MaxJetEta = 999. # Max eta to consider jet in HT +filtSeq.HTFilter.MinHT = 200.*GeV # Min HT to keep event +filtSeq.HTFilter.MaxHT = 1000.*GeV # Max HT to keep event +filtSeq.HTFilter.TruthJetContainer = "AntiKt4TruthWZJets" # Which jets to use for HT +filtSeq.HTFilter.UseNeutrinosFromWZTau = False # Include neutrinos from W/Z/tau in the HT +filtSeq.HTFilter.UseLeptonsFromWZTau = True # Include e/mu from W/Z/tau in the HT diff --git a/Generators/GeneratorFilters/share/common/HeavyFlavorHadronFilter.py b/Generators/GeneratorFilters/share/common/HeavyFlavorHadronFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..117eb72cc1536da44580288dc53d36a8444ed1e4 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/HeavyFlavorHadronFilter.py @@ -0,0 +1,37 @@ +## Example configuration for HeavyFlavorHadronFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "HeavyFlavorHadronFilter" ): + from GeneratorFilters.GeneratorFiltersConf import HeavyFlavorHadronFilter + filtSeq += HeavyFlavorHadronFilter() + pass + +# Setup defaults as example +""" +HeavyFlavorHadronFilter = filtSeq.HeavyFlavorHadronFilter +HeavyFlavorHadronFilter.CharmPtMin = 2.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.BottomPtMin = 5.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.CharmEtaMax = 3.0 +HeavyFlavorHadronFilter.BottomEtaMax = 3.0 +HeavyFlavorHadronFilter.cPtMin = 0.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.bPtMin = 0.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.cEtaMax = 5.0 +HeavyFlavorHadronFilter.bEtaMax = 5.0 +HeavyFlavorHadronFilter.JetPtMin = 20.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.JetEtaMax = 2.5 +HeavyFlavorHadronFilter.PDGPtMin = 2.0 * Gaudi::Units::GeV +HeavyFlavorHadronFilter.PDGEtaMax = 2.5 +HeavyFlavorHadronFilter.PDGID = 0 +HeavyFlavorHadronFilter.PDGAntiParticleToo = True +HeavyFlavorHadronFilter.RequestCharm = True +HeavyFlavorHadronFilter.RequestBottom = True +HeavyFlavorHadronFilter.Request_cQuark = True +HeavyFlavorHadronFilter.Request_bQuark = True +HeavyFlavorHadronFilter.RequestSpecificPDGID = False +HeavyFlavorHadronFilter.RequireTruthJet = False +HeavyFlavorHadronFilter.DeltaRFromTruth = 0.4 +HeavyFlavorHadronFilter.TruthContainerName = "AntiKt4TruthJets" +""" diff --git a/Generators/GeneratorFilters/share/common/HplusTauNu_Filter_Fragment.py b/Generators/GeneratorFilters/share/common/HplusTauNu_Filter_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..134cbbc54865111a800442e95f135ca84a7203d3 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/HplusTauNu_Filter_Fragment.py @@ -0,0 +1,93 @@ +#-------------------------------------------------------------- +# Filter on the H+->taunu process for either tau+jets (D1) +# or tau+lep (D2) channels. Can be used as an OR of the two +# if none of the above is specified. +# use: JO name must contain "filter" field and optionally +# either "D1" or "D2" +# pawel.bruckman.de.renstrom@cern.ch +#-------------------------------------------------------------- +# +# Setup Filters: +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +# if hasattr(runArgs,'filter'): +joboptparts = runArgs.jobConfig[0].strip('\.py').split('_') +# joboptparts = runArgs.jobConfig[0].split("_") +if 'filter' in joboptparts: + + from GeneratorFilters.GeneratorFiltersConf import TauFilter + tauFilterD1 = TauFilter("tauFilterD1") + filtSeq += tauFilterD1 + filtSeq.tauFilterD1.Ntaus = 1 + filtSeq.tauFilterD1.EtaMaxhad = 2.5 + filtSeq.tauFilterD1.Ptcuthad = 35000.0 #MeV + filtSeq.tauFilterD1.Ptcute = 10000000.0 # turn off tau->el + filtSeq.tauFilterD1.Ptcutmu = 10000000.0 # turn off tau->el + + tauFilterD2 = TauFilter("tauFilterD2") + filtSeq += tauFilterD2 + filtSeq.tauFilterD2.Ntaus = 1 + filtSeq.tauFilterD2.EtaMaxhad = 2.5 + filtSeq.tauFilterD2.Ptcuthad = 25000.0 #MeV + filtSeq.tauFilterD2.Ptcute = 10000000.0 # turn off tau->el + filtSeq.tauFilterD2.Ptcutmu = 10000000.0 # turn off tau->el + + + from GeneratorFilters.GeneratorFiltersConf import TruthJetFilter + jetFilterD1 = TruthJetFilter("jetFilterD1") + filtSeq += jetFilterD1 + filtSeq.jetFilterD1.TruthJetContainer = "AntiKt4TruthJets" + filtSeq.jetFilterD1.NjetMaxEta = 2.6 + filtSeq.jetFilterD1.NjetMinPt = 18000. + filtSeq.jetFilterD1.jet_pt1 = 18000. + filtSeq.jetFilterD1.Njet = 4 + + jetFilterD2e = TruthJetFilter("jetFilterD2e") + filtSeq += jetFilterD2e + filtSeq.jetFilterD2e.TruthJetContainer = "AntiKt4TruthJets" + filtSeq.jetFilterD2e.NjetMaxEta = 2.6 + filtSeq.jetFilterD2e.NjetMinPt = 18000. + filtSeq.jetFilterD2e.jet_pt1 = 18000. + filtSeq.jetFilterD2e.Njet = 3 + + jetFilterD2m = TruthJetFilter("jetFilterD2m") + filtSeq += jetFilterD2m + filtSeq.jetFilterD2m.TruthJetContainer = "AntiKt4TruthJets" + filtSeq.jetFilterD2m.NjetMaxEta = 2.6 + filtSeq.jetFilterD2m.NjetMinPt = 18000. + filtSeq.jetFilterD2m.jet_pt1 = 18000. + filtSeq.jetFilterD2m.Njet = 2 + + from GeneratorFilters.GeneratorFiltersConf import ParticleFilter + bFilter = ParticleFilter("bFilter") + filtSeq += bFilter + filtSeq.bFilter.Ptcut = 18000. + filtSeq.bFilter.Etacut = 2.6 + filtSeq.bFilter.PDG = 5 + filtSeq.bFilter.StatusReq =23 + filtSeq.bFilter.MinParts = 1 + + from GeneratorFilters.GeneratorFiltersConf import MissingEtFilter + METFilter = MissingEtFilter("METFilter") + filtSeq += METFilter + filtSeq.METFilter.METCut = 100000. + filtSeq.METFilter.UseNeutrinosFromHadrons = True + + from GeneratorFilters.GeneratorFiltersConf import ElectronFilter + elFilter = ElectronFilter("elFilter") + filtSeq += elFilter + filtSeq.elFilter.Ptcut = 25000. + filtSeq.elFilter.Etacut = 2.6 + + from GeneratorFilters.GeneratorFiltersConf import MuonFilter + muFilter = MuonFilter("muFilter") + filtSeq += muFilter + filtSeq.muFilter.Ptcut = 25000. + filtSeq.muFilter.Etacut = 2.6 + + + if 'D1' in joboptparts: + filtSeq.Expression = "tauFilterD1 and bFilter and jetFilterD1 and METFilter" + elif 'D2' in joboptparts: + filtSeq.Expression = "tauFilterD2 and bFilter and ((jetFilterD2e and elFilter) or (jetFilterD2m and muFilter))" + else: + filtSeq.Expression = "bFilter and ((tauFilterD1 and jetFilterD1 and METFilter) or (tauFilterD2 and jetFilterD2e and elFilter) or (tauFilterD2 and jetFilterD2m and muFilter))" diff --git a/Generators/GeneratorFilters/share/common/JetFilter.py b/Generators/GeneratorFilters/share/common/JetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..e9337beaf2097e2fa3cfcb0b344ada8ac3a5aa8b --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter.py @@ -0,0 +1,13 @@ +## Example configuration setting up JetFilter defaults + +if not hasattr( filtSeq, "JetFilter" ): + from GeneratorFilters.GeneratorFiltersConf import JetFilter + filtSeq += JetFilter() + pass + +filtSeq.JetFilter.JetNumber = 1 +filtSeq.JetFilter.EtaRange = 2.7 +filtSeq.JetFilter.JetThreshold = 17000. +filtSeq.JetFilter.JetType = False # True = cone, False = grid +filtSeq.JetFilter.GridSizeEta = 2 # Number of (approx 0.06 size) eta cells +filtSeq.JetFilter.GridSizePhi = 2 # Number of (approx 0.06 size) phi cells diff --git a/Generators/GeneratorFilters/share/common/JetFilterAkt10.py b/Generators/GeneratorFilters/share/common/JetFilterAkt10.py new file mode 100644 index 0000000000000000000000000000000000000000..9be559b9bb4a12646798143420e3e6bac00c1daa --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilterAkt10.py @@ -0,0 +1,6 @@ +## Truth jet filter setup for anti-kT R=1.0 truth jets + +include("GeneratorFilters/AntiKt10TruthJets.py") + +include("GeneratorFilters/JetFilter_Fragment.py") +filtSeq.QCDTruthJetFilter.TruthJetContainer = "AntiKt10TruthJets" diff --git a/Generators/GeneratorFilters/share/common/JetFilterAkt4.py b/Generators/GeneratorFilters/share/common/JetFilterAkt4.py new file mode 100644 index 0000000000000000000000000000000000000000..b4c2f871768601b567d0abdec3f7a735adbe3914 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilterAkt4.py @@ -0,0 +1,6 @@ +## Truth jet filter setup for anti-kT R=0.4 truth jets + +include("GeneratorFilters/AntiKt4TruthJets.py") + +include("GeneratorFilters/JetFilter_Fragment.py") +filtSeq.QCDTruthJetFilter.TruthJetContainer = "AntiKt4TruthJets" diff --git a/Generators/GeneratorFilters/share/common/JetFilterAkt6.py b/Generators/GeneratorFilters/share/common/JetFilterAkt6.py new file mode 100644 index 0000000000000000000000000000000000000000..1babfd6bba8ff257a788d534d99a011b14e1e370 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilterAkt6.py @@ -0,0 +1,6 @@ +## Truth jet filter setup for anti-kT R=0.4 truth jets + +include("GeneratorFilters/AntiKt6TruthJets.py") + +include("GeneratorFilters/JetFilter_Fragment.py") +filtSeq.QCDTruthJetFilter.TruthJetContainer = "AntiKt6TruthJets" diff --git a/Generators/GeneratorFilters/share/common/JetFilterFragment_MaxEta_m3p0.py b/Generators/GeneratorFilters/share/common/JetFilterFragment_MaxEta_m3p0.py new file mode 100644 index 0000000000000000000000000000000000000000..96d93b7e8f36a323414e949da73cd8aed1ab3de5 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilterFragment_MaxEta_m3p0.py @@ -0,0 +1,2 @@ +filtSeq.QCDTruthJetFilter.MaxEta=-3.0 +filtSeq.QCDTruthJetFilter.MinEta=-9.0 diff --git a/Generators/GeneratorFilters/share/common/JetFilter_Fragment.py b/Generators/GeneratorFilters/share/common/JetFilter_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..059ac20b8057e8fe922289cd33ccdc3fd33e817a --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_Fragment.py @@ -0,0 +1,10 @@ +## Default truth jet filter setup +## The specified truth jet container must exist + +from GeneratorFilters.GeneratorFiltersConf import QCDTruthJetFilter +if "QCDTruthJetFilter" not in filtSeq: + filtSeq += QCDTruthJetFilter() + +filtSeq.QCDTruthJetFilter.MaxPt = float(runArgs.ecmEnergy)*GeV + + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ0.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ0.py new file mode 100644 index 0000000000000000000000000000000000000000..d5718cff1bf0f7d0272868a5dc9c486dcc3bd9fc --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ0.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ0 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(0) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ0Mpt4R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ0Mpt4R04.py new file mode 100644 index 0000000000000000000000000000000000000000..2dda07bb145a89da640927efa33b78a4bfa59cd7 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ0Mpt4R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ0 with R=0.4 and MinPt=4GeV +include("GeneratorFilters/JetFilterAkt4.py") +filtSeq.QCDTruthJetFilter.MinPt = 4.*GeV +filtSeq.QCDTruthJetFilter.MaxPt = 20.*GeV diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ0R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ0R04.py new file mode 100644 index 0000000000000000000000000000000000000000..cc89a8eda334f2c929e53c07db9b5202e8d31329 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ0R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ0 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(0) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ0W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ0W.py new file mode 100644 index 0000000000000000000000000000000000000000..199077c89c103ae6e245887b6b3f4e95507dc895 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ0W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ0W +include("GeneratorFilters/JetFilter_JZ0.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ1.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ1.py new file mode 100644 index 0000000000000000000000000000000000000000..5ce58916be8f199e4bad2216d9c2674c2633a4de --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ1.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ1 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(1) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ10.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ10.py new file mode 100644 index 0000000000000000000000000000000000000000..48ef1acd0545284be695441ad1dca2681e1f6254 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ10.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ10 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(10) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ10W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ10W.py new file mode 100644 index 0000000000000000000000000000000000000000..e6b272944166a53f538cd5049424fc329a84acca --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ10W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ10W +include("GeneratorFilters/JetFilter_JZ10.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ11.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ11.py new file mode 100644 index 0000000000000000000000000000000000000000..3502259da0fe17d332312b665bfc826328ead7d6 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ11.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ11 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(11) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ11W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ11W.py new file mode 100644 index 0000000000000000000000000000000000000000..0641cb13fca0cbad63cfa0ba1cc8ae6a50126c6e --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ11W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ11W +include("GeneratorFilters/JetFilter_JZ11.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ12.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ12.py new file mode 100644 index 0000000000000000000000000000000000000000..2af546303410b2882c81dd96540e8249c52c0460 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ12.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ12 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(12) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ12W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ12W.py new file mode 100644 index 0000000000000000000000000000000000000000..60a298cf319649154df9a97dc21e235553eab567 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ12W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ12W +include("GeneratorFilters/JetFilter_JZ12.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ1R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ1R04.py new file mode 100644 index 0000000000000000000000000000000000000000..509bca33cc74427c4afaac2ebb233c42658fee95 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ1R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ1 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(1) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ1W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ1W.py new file mode 100644 index 0000000000000000000000000000000000000000..fc8108e0979e6a40798d81047ada26ddd564fd77 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ1W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ1W +include("GeneratorFilters/JetFilter_JZ1.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ2.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ2.py new file mode 100644 index 0000000000000000000000000000000000000000..e0bfa2cc03a9cd3732b45395bd4d907ac2f8646d --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ2.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ2 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(2) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ2R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ2R04.py new file mode 100644 index 0000000000000000000000000000000000000000..85ad2da97c65505418ec8b327f386e3880ecae38 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ2R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ2 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(2) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ2W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ2W.py new file mode 100644 index 0000000000000000000000000000000000000000..d189e91d5e80693c97235309920ac09e34ce05c0 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ2W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ2W +include("GeneratorFilters/JetFilter_JZ2.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ3.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ3.py new file mode 100644 index 0000000000000000000000000000000000000000..bd936244e9377f6ffd7e85eb55b207202e3fd2e1 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ3.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ3 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(3) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ3R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ3R04.py new file mode 100644 index 0000000000000000000000000000000000000000..8124ccd067a8f7f1bfd46277900d3c1927f946ba --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ3R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ3 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(3) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ3W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ3W.py new file mode 100644 index 0000000000000000000000000000000000000000..0d6b911639761e3d038338f72a21a187d4de5ad5 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ3W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ3W +include("GeneratorFilters/JetFilter_JZ3.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ4.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ4.py new file mode 100644 index 0000000000000000000000000000000000000000..ec54ec8587d30ff550f0f8319a8aa60cdc239ce1 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ4.py @@ -0,0 +1,5 @@ +## Truth jet filter config for JZ4 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(4) + + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ4R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ4R04.py new file mode 100644 index 0000000000000000000000000000000000000000..377ab89bd676b3696eb80fb9e38a810482619dcb --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ4R04.py @@ -0,0 +1,5 @@ +## Truth jet filter config for JZ4 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(4) + + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ4W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ4W.py new file mode 100644 index 0000000000000000000000000000000000000000..42dd8b2824ee7910a07811d698a094c0761af326 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ4W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ4W +include("GeneratorFilters/JetFilter_JZ4.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ5.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ5.py new file mode 100644 index 0000000000000000000000000000000000000000..711783d2ef5888709759ea04cf2bc05b1edb0abe --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ5.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ5 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(5) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ5R04.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ5R04.py new file mode 100644 index 0000000000000000000000000000000000000000..d42f89759ad0601791d8fb2f549fd8586b9aefdd --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ5R04.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ5 +include("GeneratorFilters/JetFilter_JZXR04_Fragment.py") +JZSlice(5) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ5W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ5W.py new file mode 100644 index 0000000000000000000000000000000000000000..ffcbbcc71a447e4b7e53ce48376bfed4dbd000f1 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ5W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ5W +include("GeneratorFilters/JetFilter_JZ5.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ6.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ6.py new file mode 100644 index 0000000000000000000000000000000000000000..a0c4ad258d30562bf278a91d1966118f6ce92459 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ6.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ6 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(6) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ6W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ6W.py new file mode 100644 index 0000000000000000000000000000000000000000..2fda0608b7abc1945055cb72577c6d63a13c1400 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ6W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ6W +include("GeneratorFilters/JetFilter_JZ6.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ7.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ7.py new file mode 100644 index 0000000000000000000000000000000000000000..817a1f6d850d1856f2b136063c42000e98a09773 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ7.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ7 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(7) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ7W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ7W.py new file mode 100644 index 0000000000000000000000000000000000000000..f921d9d8f888f37f65f2a1f0f1df9ba2e9cdf510 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ7W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ7W +include("GeneratorFilters/JetFilter_JZ7.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ8.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ8.py new file mode 100644 index 0000000000000000000000000000000000000000..6d8237dd436c9391803ed80133b46154e24da095 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ8.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ8 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(8) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ8W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ8W.py new file mode 100644 index 0000000000000000000000000000000000000000..713685e7d766816b54a468d2488e55198f89235e --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ8W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ8W +include("GeneratorFilters/JetFilter_JZ8.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ9.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ9.py new file mode 100644 index 0000000000000000000000000000000000000000..078e617a863b39ab3c09a22ec8a5cb790522ae0e --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ9.py @@ -0,0 +1,4 @@ +## Truth jet filter config for JZ9 +include("GeneratorFilters/JetFilter_JZX_Fragment.py") +JZSlice(9) + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZ9W.py b/Generators/GeneratorFilters/share/common/JetFilter_JZ9W.py new file mode 100644 index 0000000000000000000000000000000000000000..5dc229495acc887548c07667b5b12dc7e689ec02 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZ9W.py @@ -0,0 +1,3 @@ +## Truth jet filter config for JZ9W +include("GeneratorFilters/JetFilter_JZ9.py") +include("GeneratorFilters/JetFilter_JZXW_Fragment.py") diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZXR04_Fragment.py b/Generators/GeneratorFilters/share/common/JetFilter_JZXR04_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..8269c13986fddd4dfccc67b1101fb7502f588e37 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZXR04_Fragment.py @@ -0,0 +1,10 @@ +## Truth jet filter common config for all JZx and JZxW +include("GeneratorFilters/JetFilterAkt4.py") +# Min and max momenta for the slices +minDict = {0:-1,1:20,2:60,3:160,4:400,5:800,6:1300,7:1800,8:2500,9:3200,10:3900,11:4600,12:5300} +maxDict = {0:20,1:60,2:160,3:400,4:800,5:1300,6:1800,7:2500,8:3200,9:3900,10:4600,11:5300,12:7000} + +def JZSlice(x): + filtSeq.QCDTruthJetFilter.MinPt = minDict[x]*GeV + filtSeq.QCDTruthJetFilter.MaxPt = maxDict[x]*GeV + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZXW_Fragment.py b/Generators/GeneratorFilters/share/common/JetFilter_JZXW_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..06d60bcbb365ee7e2a72c279143fb3d0ea713397 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZXW_Fragment.py @@ -0,0 +1,9 @@ +## Extra chunk of config for JZxW slices, to be included in each JetFilter_JZxW.py file +## *after* the appropriate *_JZx.py fragment has been included. + +## Use pT shaping in the truth jet filter +assert hasattr(filtSeq, "QCDTruthJetFilter") +filtSeq.QCDTruthJetFilter.DoShape = True + +## Configure LogicalExpressionFilter to disable the default UseEventWeight setting +filtSeq.UseEventWeight = False diff --git a/Generators/GeneratorFilters/share/common/JetFilter_JZX_Fragment.py b/Generators/GeneratorFilters/share/common/JetFilter_JZX_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..87e10a40bc089b8b93dd97f13a3524445323746c --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_JZX_Fragment.py @@ -0,0 +1,13 @@ +## Truth jet filter common config for all JZx and JZxW +include("GeneratorFilters/JetFilterAkt6.py") +# Min and max momenta for the slices +minDict = {0:-1,1:20,2:60,3:160,4:400,5:800,6:1300,7:1800,8:2500,9:3200,10:3900,11:4600,12:5300} +maxDict = {0:20,1:60,2:160,3:400,4:800,5:1300,6:1800,7:2500,8:3200,9:3900,10:4600,11:5300,12:7000} + +def JZSlice(x): + filtSeq.QCDTruthJetFilter.MinPt = minDict[x]*GeV + filtSeq.QCDTruthJetFilter.MaxPt = maxDict[x]*GeV + + + + diff --git a/Generators/GeneratorFilters/share/common/JetFilter_MinbiasHigh.py b/Generators/GeneratorFilters/share/common/JetFilter_MinbiasHigh.py new file mode 100644 index 0000000000000000000000000000000000000000..a2d19c6afac5fe6f6834d59650e8f5ca033875ef --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_MinbiasHigh.py @@ -0,0 +1,9 @@ +## Min bias truth jet filter for min bias sample preparation (high slice) + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") + +include("GeneratorFilters/JetFilter_Fragment.py") +filtSeq.QCDTruthJetFilter.MinPt = 35.*GeV +filtSeq.QCDTruthJetFilter.TruthJetContainer = "AntiKt6TruthJets" +filtSeq.QCDTruthJetFilter.DoShape = False diff --git a/Generators/GeneratorFilters/share/common/JetFilter_MinbiasLow.py b/Generators/GeneratorFilters/share/common/JetFilter_MinbiasLow.py new file mode 100644 index 0000000000000000000000000000000000000000..f1812b867a9f339d6e791130bb2c07ef448dc252 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetFilter_MinbiasLow.py @@ -0,0 +1,9 @@ +## Min bias truth jet filter for min bias sample preparation (high slice) + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") + +include("GeneratorFilters/JetFilter_Fragment.py") +filtSeq.QCDTruthJetFilter.MaxPt = 35.*GeV +filtSeq.QCDTruthJetFilter.TruthJetContainer = "AntiKt6TruthJets" +filtSeq.QCDTruthJetFilter.DoShape = False diff --git a/Generators/GeneratorFilters/share/common/JetForwardFilter.py b/Generators/GeneratorFilters/share/common/JetForwardFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..31a2225af464749c1ae58137c8d02422a1659e61 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetForwardFilter.py @@ -0,0 +1,34 @@ +## Example configuration for JetForwardFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "JetForwardFilter" ): + from GeneratorFilters.GeneratorFiltersConf import JetForwardFilter + filtSeq += JetForwardFilter() + pass + +""" +JetForwardFilter = filtSeq.JetForwardFilter +# General Jets +JetForwardFilter.JetContainer = "AntiKt6TruthJets" + +# Allow a hard cut on the jet system +JetForwardFilter.MinDeltaY = 0.0 #absolute deltaY! +JetForwardFilter.MaxDeltaY = 100.0 +JetForwardFilter.MinPt1 = 12.0 # In CLHEP::GeV +JetForwardFilter.MaxPt1 = 70000.0 # In CLHEP::GeV +JetForwardFilter.MinPt2 = 12.0 # In CLHEP::GeV +JetForwardFilter.MaxPt2 = 70000.0 # In CLHEP::GeV + +# Allow an arbitrary number of Gaussian distributions to describe the delta(y)-pt distribution +#JetForwardFilter.muXs = empty +#JetForwardFilter.muYs = empty +#JetForwardFilter.sigmaXs = empty +#JetForwardFilter.sigmaYs = empty +#JetForwardFilter.rhos = empty +#JetForwardFilter.weights = empty + +JetForwardFilter.SuppressionFactor = 1.0 +""" diff --git a/Generators/GeneratorFilters/share/common/JetIntervalFilter.py b/Generators/GeneratorFilters/share/common/JetIntervalFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..cfd7bc702b71fa649391f175d8b70e8845330a3d --- /dev/null +++ b/Generators/GeneratorFilters/share/common/JetIntervalFilter.py @@ -0,0 +1,46 @@ +## Example configuration for JetIntervalFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "JetIntervalFilter" ): + from GeneratorFilters.GeneratorFiltersConf import JetIntervalFilter + filtSeq += JetIntervalFilter() + pass +""" +JetIntervalFilter = filtSeq.JetIntervalFilter +# General Jets +JetIntervalFilter.JetContainer = "AntiKt4TruthJets" +JetIntervalFilter.JetNumber = 2 +JetIntervalFilter.OppositeSideJets = False + +# Jet Energy Cuts (give choice of et or pt cutting) +JetIntervalFilter.JetCutByPt = True +JetIntervalFilter.Jet1MinEt = 10.0 * CLHEP::GeV +JetIntervalFilter.Jet1MaxEt = 1000.0 * CLHEP::GeV +JetIntervalFilter.Jet1MinPt = 10.0 * CLHEP::GeV +JetIntervalFilter.Jet1MaxPt = 1000.0 * CLHEP::GeV +JetIntervalFilter.Jet2MinEt = 10.0 * CLHEP::GeV +JetIntervalFilter.Jet2MaxEt = 1000.0 * CLHEP::GeV +JetIntervalFilter.Jet2MinPt = 10.0 * CLHEP::GeV +JetIntervalFilter.Jet2MaxPt = 1000.0 * CLHEP::GeV + +# Jet Position Cuts (absolute) +JetIntervalFilter.Jet1MaxEta = 100.0 +JetIntervalFilter.Jet1MinEta = 0.0 +JetIntervalFilter.Jet2MaxEta = 100.0 +JetIntervalFilter.Jet2MinEta = 0.0 + +# Jet delta eta cuts +JetIntervalFilter.MinDeltaEta = 0.0 +JetIntervalFilter.MaxDeltaEta = 100.0 + +# Allow filtering with weight storage +# Default only good for J2 sample +JetIntervalFilter.WeightEvents = False +JetIntervalFilter.UniformMaxWeightBelowGausMean = False +JetIntervalFilter.GausMean = 0.0611 +JetIntervalFilter.GausSigma = 2.33 +JetIntervalFilter.AbsDEtaCutOff = 8.5 # Above which keep all which are generated +""" diff --git a/Generators/GeneratorFilters/share/common/LeadingDiBjetFilter.py b/Generators/GeneratorFilters/share/common/LeadingDiBjetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..acce303417bbd98ce1a85177f64ecc18454a1dc9 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/LeadingDiBjetFilter.py @@ -0,0 +1,24 @@ +## Example configuration for LeadingDiBjetFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "LeadingDiBjetFilter" ): + from GeneratorFilters.GeneratorFiltersConf import LeadingDiBjetFilter + filtSeq += LeadingDiBjetFilter() + pass + +""" +LeadingDiBjetFilter = filtSeq.LeadingDiBjetFilter +LeadingDiBjetFilter.LeadJetPtMin = 0 * GeV +LeadingDiBjetFilter.LeadJetPtMax = 50000 *CLHEP::GeV +LeadingDiBjetFilter.BottomPtMin = 5.0 *CLHEP::GeV +LeadingDiBjetFilter.BottomEtaMax = 3.0 +LeadingDiBjetFilter.JetPtMin = 15.0 *CLHEP::GeV +LeadingDiBjetFilter.JetEtaMax = 2.7 +LeadingDiBjetFilter.DeltaRFromTruth = 0.3 +LeadingDiBjetFilter.TruthContainerName = "AntiKt4TruthJets" +LeadingDiBjetFilter.LightJetSuppressionFactor = 10 +LeadingDiBjetFilter.AcceptSomeLightEvents = False +""" diff --git a/Generators/GeneratorFilters/share/common/LeptonFilter.py b/Generators/GeneratorFilters/share/common/LeptonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..33a3212806e4e5d9f9f83651cc82e9f2101d257d --- /dev/null +++ b/Generators/GeneratorFilters/share/common/LeptonFilter.py @@ -0,0 +1,14 @@ +## Instantiate the lepton filter, including adding it to the stream +## Configuration of the filter cuts is left to the specific JO +if not hasattr(filtSeq, "LeptonFilter"): + from GeneratorFilters.GeneratorFiltersConf import LeptonFilter + filtSeq += LeptonFilter() + +## Add this filter to the algs required to be successful for streaming +#if "LeptonFilter" not in StreamEVGEN.RequireAlgs: +# StreamEVGEN.RequireAlgs += ["LeptonFilter"] + +## Default cut params +filtSeq.LeptonFilter.Ptcut = 10000. +filtSeq.LeptonFilter.Etacut = 2.8 + diff --git a/Generators/GeneratorFilters/share/LeptonPairFilterExample.py b/Generators/GeneratorFilters/share/common/LeptonPairFilterExample.py similarity index 100% rename from Generators/GeneratorFilters/share/LeptonPairFilterExample.py rename to Generators/GeneratorFilters/share/common/LeptonPairFilterExample.py diff --git a/Generators/GeneratorFilters/share/common/LowPtMuonFilter.py b/Generators/GeneratorFilters/share/common/LowPtMuonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..1176ba9e8c680a4f30bb0264fb659aebe9c40127 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/LowPtMuonFilter.py @@ -0,0 +1,13 @@ +## Instantiate the muon filter, including adding it to the stream requirement +## Configuration of the filter cuts is left to the specific JO +if not hasattr(filtSeq, "MuonFilter"): + from GeneratorFilters.GeneratorFiltersConf import MuonFilter + filtSeq += MuonFilter() + +## Add this filter to the algs required to be successful for streaming +#if "MuonFilter" not in StreamEVGEN.RequireAlgs: +# StreamEVGEN.RequireAlgs += ["MuonFilter"] + +## Default cut params +filtSeq.MuonFilter.Ptcut = 3000.0 +filtSeq.MuonFilter.Etacut = 2.8 diff --git a/Generators/GeneratorFilters/share/common/MassRangeFilter.py b/Generators/GeneratorFilters/share/common/MassRangeFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..fe5353642dd3894540e62eb76751ab9c3005aace --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MassRangeFilter.py @@ -0,0 +1,19 @@ +## Example configuration for MassRangeFilter setting up defaults + +if not hasattr( filtSeq, "MassRangeFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MassRangeFilter + filtSeq += MassRangeFilter() + pass + +""" +MassRangeFilter = filtSeq.MassRangeFilter +MassRangeFilter.PtCut = 10000. +MassRangeFilter.PtCut2 = 10000. +MassRangeFilter.EtaCut = 10. +MassRangeFilter.EtaCut2 = 10. +MassRangeFilter.InvMassMin = 0. +MassRangeFilter.InvMassMax = 14000000. +MassRangeFilter.PartId = 13 +MassRangeFilter.PartId2 = 13 +MassRangeFilter.PartStatus = 1 +""" diff --git a/Generators/GeneratorFilters/share/common/MissingEtFilter.py b/Generators/GeneratorFilters/share/common/MissingEtFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..a65a40582d117bb7c01d1c88b74b957f13f24dd6 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MissingEtFilter.py @@ -0,0 +1,12 @@ +if not hasattr(filtSeq, "MissingEtFilter"): + from GeneratorFilters.GeneratorFiltersConf import MissingEtFilter + filtSeq += MissingEtFilter("MissingEtFilter") + +if not hasattr(filtSeq, "MissingEtFilterUpperCut"): + filtSeq += MissingEtFilter("MissingEtFilterUpperCut") + +filtSeq.MissingEtFilter.METCut = 60*GeV +filtSeq.MissingEtFilterUpperCut.METCut = 100000*GeV + + +filtSeq.Expression = "(MissingEtFilter and not MissingEtFilterUpperCut)" diff --git a/Generators/GeneratorFilters/share/common/MultiElecMuTauFilter.py b/Generators/GeneratorFilters/share/common/MultiElecMuTauFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..42a7cea45754ccb2266389d6f3cad975df16c48a --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MultiElecMuTauFilter.py @@ -0,0 +1,18 @@ +## +## Example configuration for MultiElecMuTauFilter setting up defaults +## + +if not hasattr(filtSeq, "MultiElecMuTauFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MultiElecMuTauFilter + filtSeq += MultiElecMuTauFilter() + pass + +# Setup defaults as example +""" +MultiElecMuTauFilter = filtSeq.MultiElecMuTauFilter +MultiElecMuTauFilter.NLeptons = 3 +MultiElecMuTauFilter.MaxEta = 10.0 +MultiElecMuTauFilter.MinPt = 5000.0 +MultiElecMuTauFilter.MinVisPtHadTau = 10000.0 +MultiElecMuTauFilter.IncludeHadTaus = True +""" diff --git a/Generators/GeneratorFilters/share/common/MultiLeptonFilter.py b/Generators/GeneratorFilters/share/common/MultiLeptonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..61b52f64994ac372ff93608ebcb46283a4418bd2 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MultiLeptonFilter.py @@ -0,0 +1,13 @@ +## Example configuration for MultiLeptonFilter setting up defaults + +if not hasattr( filtSeq, "MultiLeptonFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MultiLeptonFilter + filtSeq += MultiLeptonFilter() + pass + +""" +MultiLeptonFilter = filtSeq.MultiLeptonFilter +MultiLeptonFilter.Ptcut = 10000. +MultiLeptonFilter.Etacut = 10.0 +MultiLeptonFilter.NLeptons = 4 +""" diff --git a/Generators/GeneratorFilters/share/common/MultiMuonFilter.py b/Generators/GeneratorFilters/share/common/MultiMuonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..2aa4b5d5da541a29c18cf75175f4a4620d62d683 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MultiMuonFilter.py @@ -0,0 +1,14 @@ +## Example configuration for MultiMuonFilter setting up defaults + +if not hasattr( filtSeq, "MultiMuonFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MultiMuonFilter + filtSeq += MultiMuonFilter() + pass + +""" +MultiMuonFilter = filtSeq.MultiMuonFilter +MultiMuonFilter.Ptcut = 4000. +MultiMuonFilter.Etacut = 2.7 +MultiMuonFilter.NMuons = 4 +""" + diff --git a/Generators/GeneratorFilters/share/common/MultiObjectsFilter.py b/Generators/GeneratorFilters/share/common/MultiObjectsFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..79f527d5313fb1f5fb5d570963300eb512844eca --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MultiObjectsFilter.py @@ -0,0 +1,25 @@ +## Example configuration for MultiObjectsFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "MultiObjectsFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MultiObjectsFilter + filtSeq += MultiObjectsFilter() + pass + +""" +MultiObjectsFilter = filtSeq.MultiObjectsFilter +MultiObjectsFilter.PtCut = 10. *Gaudi::Units::GeV +MultiObjectsFilter.EtaCut = 2.7 +MultiObjectsFilter.JetPtCut = 10. *Gaudi::Units::GeV +MultiObjectsFilter.JetEtaCut = 5.2 +MultiObjectsFilter.UseSumPt = True +MultiObjectsFilter.SumPtCut = 2000. *Gaudi::Units::GeV +MultiObjectsFilter.UseEle = False +MultiObjectsFilter.UseMuo = True +MultiObjectsFilter.UsePho = False +MultiObjectsFilter.UseJet = True +MultiObjectsFilter.TruthJetContainer = "AntiKt4TruthJets" +""" diff --git a/Generators/GeneratorFilters/share/common/MultiParticleFilter.py b/Generators/GeneratorFilters/share/common/MultiParticleFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..f2d67c0a3a446c694aaab0fe57759d212775ac94 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/MultiParticleFilter.py @@ -0,0 +1,17 @@ +## Example configuration for MultiParticleFilter setting up defaults + +if not hasattr( filtSeq, "MultiParticleFilter" ): + from GeneratorFilters.GeneratorFiltersConf import MultiParticleFilter + filtSeq += MultiParticleFilter() + pass + +## Setup defaults as example +""" +MultiParticleFilter = filtSeq.MultiParticleFilter +MultiParticleFilter.Np = 1 +MultiParticleFilter.ptMinParticle = 105000. +MultiParticleFilter.etaRangeParticle = 4.9 +MultiParticleFilter.particlePDG = [11,-11,22] +MultiParticleFilter.particleStatus = [1] +""" + diff --git a/Generators/GeneratorFilters/share/common/OneLeptonFilter.py b/Generators/GeneratorFilters/share/common/OneLeptonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..5b187a139ed81469c4302ea058e83313a10e93c5 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/OneLeptonFilter.py @@ -0,0 +1,18 @@ + +## Instantiate the lepton filter, including adding it to the stream requirement +## Configuration of the filter cuts is left to the specific JO +if not hasattr(filtSeq, "WZtoLeptonFilter"): + from GeneratorFilters.GeneratorFiltersConf import WZtoLeptonFilter + filtSeq += WZtoLeptonFilter("WZtoLeptonFilter") + +## Add this filter to the algs required to be successful for streaming +#if "WZtoLeptonFilter" not in StreamEVGEN.RequireAlgs: +# StreamEVGEN.RequireAlgs += ["WZtoLeptonFilter"] + +## Cut parameters to keep events with at least one lepton +filtSeq.WZtoLeptonFilter.NeedWZleps = 1 +filtSeq.WZtoLeptonFilter.ElectronMuonNumber = 0 +filtSeq.WZtoLeptonFilter.BCKGvsSIGNAL = 0 +filtSeq.WZtoLeptonFilter.IdealReconstructionEfficiency = 0 +filtSeq.WZtoLeptonFilter.Etacut_electron = 2.6 +filtSeq.WZtoLeptonFilter.Etacut_muon = 2.6 diff --git a/Generators/GeneratorFilters/share/common/ParentChildwStatusFilter.py b/Generators/GeneratorFilters/share/common/ParentChildwStatusFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..ccdd94608b91ecf04d8f045b415e1aada5ae90f1 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/ParentChildwStatusFilter.py @@ -0,0 +1,15 @@ +if not hasattr(filtSeq, "ParentChildwStatusFilter"): + from GeneratorFilters.GeneratorFiltersConf import ParentChildwStatusFilter + filtSeq += ParentChildwStatusFilter("ParentChildwStatusFilter") + +## Example usage for Z leptonic decay from Pythia8 +#filtSeq.ParentChildwStatusFilter.PDGParent = [23] +#filtSeq.ParentChildwStatusFilter.StatusParent = [22,52] +#filtSeq.ParentChildwStatusFilter.PtMinParent = -1e12 +#filtSeq.ParentChildwStatusFilter.PtMaxParent = 1e12 +#filtSeq.ParentChildwStatusFilter.EtaRangeParent = 1e12 +#filtSeq.ParentChildwStatusFilter.MassMinParent = -1e12 +#filtSeq.ParentChildwStatusFilter.MassMaxParent = 1e12 +#filtSeq.ParentChildwStatusFilter.PDGChild = [11,13,15] +#filtSeq.ParentChildwStatusFilter.PtMinChild = -1e12 +#filtSeq.ParentChildwStatusFilter.EtaRangeChild = 1e12 diff --git a/Generators/GeneratorFilters/share/common/ParentsTracksFilter.py b/Generators/GeneratorFilters/share/common/ParentsTracksFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..63745925bc19caf6e99ba739de262b7143bba120 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/ParentsTracksFilter.py @@ -0,0 +1,25 @@ +if not hasattr(filtSeq, "ParentsTracksFilter"): + from GeneratorFilters.GeneratorFiltersConf import ParentsTracksFilter + filtSeq += ParentsTracksFilter("ParentsTracksFilter") + +## Add this filter to the algs required to be successful for streaming +#if "ParentsTracksFilter" not in StreamEVGEN.RequireAlgs: +# StreamEVGEN.RequireAlgs += ["ParentsTracksFilter"] + +## Default cut params +filtSeq.ParentsTracksFilter.PDGParent = [511,521,531,541,5122,5132,5232,5332] +filtSeq.ParentsTracksFilter.PtMinParent = 0. +filtSeq.ParentsTracksFilter.PtMaxParent = 1e9 +filtSeq.ParentsTracksFilter.MassMinParent = -1e9 +filtSeq.ParentsTracksFilter.MassMaxParent = 1e9 +filtSeq.ParentsTracksFilter.EtaRangeParent = 10.0 +filtSeq.ParentsTracksFilter.PtMinLeptons = 0. +filtSeq.ParentsTracksFilter.EtaRangeLeptons = 1000. +filtSeq.ParentsTracksFilter.PtMinHadrons = 0. +filtSeq.ParentsTracksFilter.EtaRangeHadrons = 1000. +filtSeq.ParentsTracksFilter.NumMinTracks = 0 +filtSeq.ParentsTracksFilter.NumMaxTracks = 999999 +filtSeq.ParentsTracksFilter.NumMinLeptons = 0 +filtSeq.ParentsTracksFilter.NumMaxLeptons = 999999 +filtSeq.ParentsTracksFilter.NumMinOthers = 0 +filtSeq.ParentsTracksFilter.NumMaxOthers = 999999 diff --git a/Generators/GeneratorFilters/share/common/ParticleFilter.py b/Generators/GeneratorFilters/share/common/ParticleFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..a5eaeb003bc92662b5c32ba02362f455b1a79b49 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/ParticleFilter.py @@ -0,0 +1,11 @@ +if not hasattr(filtSeq, "ParticleFilter"): + from GeneratorFilters.GeneratorFiltersConf import ParticleFilter + filtSeq += ParticleFilter("ParticleFilter") + +# Example usage of this filter +#ParticleFilter = filtSeq.ParticleFilter +#ParticleFilter.Ptcut = 0.0 +#ParticleFilter.Etacut = 10.0 +#ParticleFilter.PDG = 1000022 +#ParticleFilter.MinParts = 2 +#ParticleFilter.StatusReq = 11 diff --git a/Generators/GeneratorFilters/share/common/QCDTruthJetFilter.py b/Generators/GeneratorFilters/share/common/QCDTruthJetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..ba32f597cba6f8313bd03462c8893abe61a85a39 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/QCDTruthJetFilter.py @@ -0,0 +1,7 @@ +## Example configuration for QCDTruthJetFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + + diff --git a/Generators/GeneratorFilters/share/common/QCDTruthMultiJetFilter.py b/Generators/GeneratorFilters/share/common/QCDTruthMultiJetFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..e3404db150e9f940f3fedf20aad6e91891e74b1f --- /dev/null +++ b/Generators/GeneratorFilters/share/common/QCDTruthMultiJetFilter.py @@ -0,0 +1,21 @@ +## Example configuration for QCDTruthMultiJetFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "QCDTruthMultiJetFilter" ): + from GeneratorFilters.GeneratorFiltersConf import QCDTruthMultiJetFilter + filtSeq += QCDTruthMultiJetFilter() + pass + +""" +QCDTruthMultiJetFilter = filtSeq.QCDTruthMultiJetFilter +QCDTruthMultiJetFilter.Njet = -1 +QCDTruthMultiJetFilter.NjetMinPt = 0. *Gaudi::Units::GeV +QCDTruthMultiJetFilter.MinLeadJetPt = 0. *Gaudi::Units::GeV +QCDTruthMultiJetFilter.MaxLeadJetPt = 7000. *Gaudi::Units::GeV # , LHC kinematic limit... +QCDTruthMultiJetFilter.MaxEta = 10.0 +QCDTruthMultiJetFilter.TruthJetContainer = "AntiKt4TruthJets" +QCDTruthMultiJetFilter.DoShape = True +""" diff --git a/Generators/GeneratorFilters/share/common/TTbarLJetsVptFilter.py b/Generators/GeneratorFilters/share/common/TTbarLJetsVptFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..e52756aa412c9248875996d11a6b6b19e145cfb4 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarLJetsVptFilter.py @@ -0,0 +1,12 @@ +## Instantiate the TTbarWToLeptonFilter, including adding it to the stream requirement + +if not hasattr(filtSeq, "TTbarLJetsVptFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarLJetsVptFilter + filtSeq += TTbarLJetsVptFilter() + +filtSeq.TTbarLJetsVptFilter.NumLeptons = 1 +filtSeq.TTbarLJetsVptFilter.Ptcut = 22000. +filtSeq.TTbarLJetsVptFilter.Etacut= 3.0 +filtSeq.TTbarLJetsVptFilter.VptMin= 100000 +#filtSeq.TTbarLJetsVptFilter.VptMax= 300000 +filtSeq.TTbarLJetsVptFilter.FollowTaus=True diff --git a/Generators/GeneratorFilters/share/common/TTbarPlusBBFilter.py b/Generators/GeneratorFilters/share/common/TTbarPlusBBFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..22f496f0cec59c2a7a40eeee83cf73fef3b36576 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarPlusBBFilter.py @@ -0,0 +1,6 @@ +if not hasattr(filtSeq, "TTbarPlusBBFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarPlusHeavyFlavorFilter + filtSeq += TTbarPlusHeavyFlavorFilter("TTbarPlusBBFilter") + filtSeq.TTbarPlusBBFilter.SelectB = True + filtSeq.TTbarPlusBBFilter.BMultiplicityCut = 2 # >= + filtSeq.TTbarPlusBBFilter.BpTMinCut = 15000. # MeV diff --git a/Generators/GeneratorFilters/share/common/TTbarPlusBFilter.py b/Generators/GeneratorFilters/share/common/TTbarPlusBFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..07c59a9280ae2762f3741b070610c71e9a43e3ae --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarPlusBFilter.py @@ -0,0 +1,6 @@ +if not hasattr(filtSeq, "TTbarPlusBFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarPlusHeavyFlavorFilter + filtSeq += TTbarPlusHeavyFlavorFilter("TTbarPlusBFilter") + filtSeq.TTbarPlusBFilter.SelectB = True + filtSeq.TTbarPlusBFilter.BMultiplicityCut = 1 # >= + filtSeq.TTbarPlusBFilter.BpTMinCut = 5000. # MeV diff --git a/Generators/GeneratorFilters/share/common/TTbarPlusCFilter.py b/Generators/GeneratorFilters/share/common/TTbarPlusCFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..ef35f6efdf91c2ece5ac95073c91833af6500931 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarPlusCFilter.py @@ -0,0 +1,6 @@ +if not hasattr(filtSeq, "TTbarPlusCFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarPlusHeavyFlavorFilter + filtSeq += TTbarPlusHeavyFlavorFilter("TTbarPlusCFilter") + filtSeq.TTbarPlusCFilter.SelectC = True + filtSeq.TTbarPlusCFilter.CMultiplicityCut = 1 # >= + filtSeq.TTbarPlusCFilter.CpTMinCut = 15000. # MeV diff --git a/Generators/GeneratorFilters/share/common/TTbarPlusHFFilter.py b/Generators/GeneratorFilters/share/common/TTbarPlusHFFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..7464f948036a7982c49c116b9290bcadede851a9 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarPlusHFFilter.py @@ -0,0 +1,9 @@ +if not hasattr(filtSeq, "TTbarPlusBFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarPlusHeavyFlavorFilter + filtSeq += TTbarPlusHeavyFlavorFilter("TTbarPlusBFilter") + +## Default cut params +# filtSeq.TTbarPlusBFilter.SelectB = True ## for tt+b +## topAlg.TTbarPlusBFilter.SelectC = True ## for tt+c +## topAlg.TTbarPlusBFilter.SelectL = True ## for tt+light + diff --git a/Generators/GeneratorFilters/share/TTbarPlusHFFilterExample.py b/Generators/GeneratorFilters/share/common/TTbarPlusHFFilterExample.py similarity index 100% rename from Generators/GeneratorFilters/share/TTbarPlusHFFilterExample.py rename to Generators/GeneratorFilters/share/common/TTbarPlusHFFilterExample.py diff --git a/Generators/GeneratorFilters/share/common/TTbarPlusJetsFilter.py b/Generators/GeneratorFilters/share/common/TTbarPlusJetsFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..3d57c8825ddac1096fcf63ddfe8e5991a618bdd8 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarPlusJetsFilter.py @@ -0,0 +1,27 @@ +## Example configuration for TTbarPlusJetsFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "TTbarPlusJetsFilter" ): + from GeneratorFilters.GeneratorFiltersConf import TTbarPlusJetsFilter + filtSeq += TTbarPlusJetsFilter() + pass +""" +TTbarPlusJetsFilter = filtSeq.TTbarPlusJetsFilter +TTbarPlusJetsFilter.InputJetContainer = "AntiKt4TruthJets" +TTbarPlusJetsFilter.PtMinJet = 14000.0 +TTbarPlusJetsFilter.EtaMaxJet = 5.2 +TTbarPlusJetsFilter.NbJetMin = 6 +TTbarPlusJetsFilter.PtMinJetB = 14000.0 +TTbarPlusJetsFilter.EtaMaxJetB = 2.7 +TTbarPlusJetsFilter.NbJetBMin = 4 +TTbarPlusJetsFilter.PtMinElec = 14000.0 +TTbarPlusJetsFilter.EtaMaxElec = 2.7 +TTbarPlusJetsFilter.PtMinMuon = 14000.0 +TTbarPlusJetsFilter.EtaMaxMuon = 2.7 +TTbarPlusJetsFilter.NbLeptonMin = 1 +TTbarPlusJetsFilter.SelectLepHadEvents = True # select only lepton(e/mu)+jet W configurations +TTbarPlusJetsFilter.NbEventMax = 0 # 0 means no limit +""" diff --git a/Generators/GeneratorFilters/share/common/TTbarWToLeptonFilter.py b/Generators/GeneratorFilters/share/common/TTbarWToLeptonFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..ed13b82c58db3b26fab63209bc1f3df1b1d92d6b --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarWToLeptonFilter.py @@ -0,0 +1,15 @@ +## Instantiate the TTbarWToLeptonFilter, including adding it to the stream requirement +## Filter passed if top, antitop and t->W->e/mu/tau in truth chain +## Configuration of the filter cuts is left to the specific JO +## christoph.wasicki@cern.ch + +if not hasattr(filtSeq, "TTbarWToLeptonFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarWToLeptonFilter + filtSeq += TTbarWToLeptonFilter() + +## Add this filter to the algs required to be successful for streaming +#if "TTbarWToLeptonFilter" not in StreamEVGEN.RequireAlgs: +# StreamEVGEN.RequireAlgs += ["TTbarWToLeptonFilter"] + +## Default cut params +filtSeq.TTbarWToLeptonFilter.Ptcut = 1. diff --git a/Generators/GeneratorFilters/share/common/TTbarWithJpsimumuFilter.py b/Generators/GeneratorFilters/share/common/TTbarWithJpsimumuFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..d6756a0a954d6821f5b0f50a1fd385d16b0c80b7 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TTbarWithJpsimumuFilter.py @@ -0,0 +1,10 @@ +## Instantiate the TTbarWithJpsimumuFilter, including adding it to the stream requirement +## Filter passed if top, antitop and t->b->J/psi->mumu in truth chain +## Configuration of the filter cuts is left to the specific JO + +if not hasattr(filtSeq, "TTbarWithJpsimumuFilter"): + from GeneratorFilters.GeneratorFiltersConf import TTbarWithJpsimumuFilter + filtSeq += TTbarWithJpsimumuFilter() + +## Default cut params +filtSeq.TTbarWithJpsimumuFilter.JpsipTMinCut = 5000. \ No newline at end of file diff --git a/Generators/GeneratorFilters/share/common/TransverseMassVVFilter.py b/Generators/GeneratorFilters/share/common/TransverseMassVVFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..a61c059e8a6f278352a14ad39738835966de9765 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/TransverseMassVVFilter.py @@ -0,0 +1,13 @@ +## Example configuration for TransverseMassVVFilter setting up defaults + +if not hasattr( filtSeq, "TransverseMassVVFilter" ): + from GeneratorFilters.GeneratorFiltersConf import TransverseMassVVFilter + filtSeq += TransverseMassVVFilter() + pass + +""" +TransverseMassVVFilter = filtSeq.TransverseMassVVFilter +TransverseMassVVFilter.MinMass = 4000. +TransverseMassVVFilter.MaxMass = 10000. +""" + diff --git a/Generators/GeneratorFilters/share/common/VBFForwardJetsFilter.py b/Generators/GeneratorFilters/share/common/VBFForwardJetsFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..1a3af2135c566a9636c46b274b00259402021d8a --- /dev/null +++ b/Generators/GeneratorFilters/share/common/VBFForwardJetsFilter.py @@ -0,0 +1,30 @@ +## Example configuration for VBFForwardJetsFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "VBFForwardJetsFilter" ): + from GeneratorFilters.GeneratorFiltersConf import VBFForwardJetsFilter + filtSeq += VBFForwardJetsFilter() + pass + +""" +VBFForwardJetsFilter = filtSeq.VBFForwardJetsFilter +VBFForwardJetsFilter.JetMinPt = 10.*Gaudi::Units::GeV +VBFForwardJetsFilter.JetMaxEta = 5. +VBFForwardJetsFilter.NJets = 2 +VBFForwardJetsFilter.Jet1MinPt = 20.*Gaudi::Units::GeV +VBFForwardJetsFilter.Jet1MaxEta = 5. +VBFForwardJetsFilter.Jet2MinPt = 10.*Gaudi::Units::GeV +VBFForwardJetsFilter.Jet2MaxEta = 5. +VBFForwardJetsFilter.UseOppositeSignEtaJet1Jet2 = False +VBFForwardJetsFilter.MassJJ = 300.*Gaudi::Units::GeV +VBFForwardJetsFilter.DeltaEtaJJ = 2.0 +VBFForwardJetsFilter.UseLeadingJJ = False +VBFForwardJetsFilter.TruthJetContainer = "AntiKt4TruthJets" +VBFForwardJetsFilter.LGMinPt = 10.*Gaudi::Units::GeV +VBFForwardJetsFilter.LGMaxEta = 2.5 +VBFForwardJetsFilter.DeltaRJLG = 0.05 +VBFForwardJetsFilter.RatioPtJLG = 0.3 +""" diff --git a/Generators/GeneratorFilters/share/common/VBFMjjIntervalFilter.py b/Generators/GeneratorFilters/share/common/VBFMjjIntervalFilter.py new file mode 100644 index 0000000000000000000000000000000000000000..9780ba099eddfc4e5fe18a9035fa5b050be8a960 --- /dev/null +++ b/Generators/GeneratorFilters/share/common/VBFMjjIntervalFilter.py @@ -0,0 +1,24 @@ +## Example configuration for VBFMjjIntervalFilter setting up defaults + +include("GeneratorFilters/AntiKt4TruthJets_pileup.py") +include("GeneratorFilters/AntiKt6TruthJets_pileup.py") +include("GeneratorFilters/JetFilter_Fragment.py") + +if not hasattr( filtSeq, "VBFMjjIntervalFilter" ): + from GeneratorFilters.GeneratorFiltersConf import VBFMjjIntervalFilter + filtSeq += VBFMjjIntervalFilter() + pass + +""" +VBFMjjIntervalFilter = filtSeq.VBFMjjIntervalFilter +VBFMjjIntervalFilter.RapidityAcceptance = 5.0 +VBFMjjIntervalFilter.MinSecondJetPT = 15.0 *CLHEP::GeV +VBFMjjIntervalFilter.MinOverlapPT = 15.0 *CLHEP::GeV +VBFMjjIntervalFilter.TruthJetContainerName = "AntiKt4TruthJets" +VBFMjjIntervalFilter.NoJetProbability = 0.0002 +VBFMjjIntervalFilter.OneJetProbability = 0.001 +VBFMjjIntervalFilter.LowMjjProbability = 0.005 +VBFMjjIntervalFilter.HighMjjProbability = 1.0 +VBFMjjIntervalFilter.LowMjj = 100.0 *CLHEP::GeV +VBFMjjIntervalFilter.HighMjj = 800.0 *CLHEP::GeV +""" diff --git a/Generators/GeneratorFilters/share/common/XtoVVDecayFilterExtended.py b/Generators/GeneratorFilters/share/common/XtoVVDecayFilterExtended.py new file mode 100644 index 0000000000000000000000000000000000000000..268f32d8f1bd2c8fbb675286b7d3a7acf08938fc --- /dev/null +++ b/Generators/GeneratorFilters/share/common/XtoVVDecayFilterExtended.py @@ -0,0 +1,10 @@ +if not hasattr(filtSeq, "XtoVVDecayFilterExtended"): + from GeneratorFilters.GeneratorFiltersConf import XtoVVDecayFilterExtended + filtSeq += XtoVVDecayFilterExtended() + +## Default cut params +filtSeq.XtoVVDecayFilterExtended.PDGGrandParent = 25 +filtSeq.XtoVVDecayFilterExtended.PDGParent = 24 +filtSeq.XtoVVDecayFilterExtended.StatusParent = 22 +filtSeq.XtoVVDecayFilterExtended.PDGChild1 = [11,12,13,14,15,16] +filtSeq.XtoVVDecayFilterExtended.PDGChild2 = [1,2,3,4,5,6] diff --git a/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py b/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py new file mode 100644 index 0000000000000000000000000000000000000000..6a01b3434d2dd351279139ac1dadc5d9cc4999f3 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py @@ -0,0 +1,58 @@ +name = runArgs.jobConfig[0] +name_info = name.split("_JZ")[1].split(".py") +slice = int(name_info[0]) + +minkT = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} + +# initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# configure Herwig7 +Herwig7Config.add_commands("set /Herwig/Partons/RemnantDecayer:AllowTop Yes") +Herwig7Config.me_pdf_commands(order="NLO", name="NNPDF30_nlo_as_0118") + +command = """ +insert /Herwig/MatrixElements/SubProcess:MatrixElements[0] /Herwig/MatrixElements/MEQCD2to2 +set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 +set /Herwig/Cuts/JetKtCut:MinKT """+str(minkT[slice])+"""*GeV +""" +print command + +Herwig7Config.add_commands(command) + +command2 = """ +cd /Herwig/EventHandlers +set EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler +read snippets/DipoleShowerFiveFlavours.in +cd /Herwig/DipoleShower +do DipoleShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=2.0 2.0 2.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=1.0 2.0 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=0.5 2.0 0.5 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=2.0" 1.0 2.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.5" 1.0 0.5 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=2.0" 0.5 2.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=1.0 0.5 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=0.5 0.5 0.5 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.75_fsr:muRfac=1.0 1.75 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.5_fsr:muRfac=1.0 1.5 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.25_fsr:muRfac=1.0 1.25 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.625_fsr:muRfac=1.0" 0.625 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.75_fsr:muRfac=1.0 0.75 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=0.875_fsr:muRfac=1.0 0.875 1.0 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.75 1.0 1.75 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.5 1.0 1.5 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.25 1.0 1.25 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.625 1.0 0.625 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.75 1.0 0.75 All +do DipoleShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.875 1.0 0.85 All +""" +print command2 +Herwig7Config.add_commands(command2) + + +# add EvtGen +include("Herwig7_i/Herwig71_EvtGen.py") + +# run Herwig7 +Herwig7Config.run() + diff --git a/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_jetjet.py b/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_jetjet.py new file mode 100644 index 0000000000000000000000000000000000000000..261a666be550a19e97b8ffae6f10d4be13bf9bde --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig71EvtGen_H7UE_NNPDF30nlo_jetjet.py @@ -0,0 +1,50 @@ +name = runArgs.jobConfig[0] +name_info = name.split("_JZ")[1].split(".py") +slice = int(name_info[0]) + +minkT = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} + +# initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# configure Herwig7 +Herwig7Config.add_commands("set /Herwig/Partons/RemnantDecayer:AllowTop Yes") +Herwig7Config.me_pdf_commands(order="NLO", name="NNPDF30_nlo_as_0118") + +command = """ +insert /Herwig/MatrixElements/SubProcess:MatrixElements[0] /Herwig/MatrixElements/MEQCD2to2 +set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 +set /Herwig/Cuts/JetKtCut:MinKT """+str(minkT[slice])+"""*GeV + +cd /Herwig/Shower +do ShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=2.0 2.0 2.0 All +do ShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=1.0 2.0 1.0 All +do ShowerHandler:AddVariation isr:muRfac=2.0_fsr:muRfac=0.5 2.0 0.5 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=2.0" 1.0 2.0 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.5" 1.0 0.5 All +do ShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=2.0" 0.5 2.0 All +do ShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=1.0 0.5 1.0 All +do ShowerHandler:AddVariation isr:muRfac=0.5_fsr:muRfac=0.5 0.5 0.5 All +do ShowerHandler:AddVariation isr:muRfac=1.75_fsr:muRfac=1.0 1.75 1.0 All +do ShowerHandler:AddVariation isr:muRfac=1.5_fsr:muRfac=1.0 1.5 1.0 All +do ShowerHandler:AddVariation isr:muRfac=1.25_fsr:muRfac=1.0 1.25 1.0 All +do ShowerHandler:AddVariation isr:muRfac=0.625_fsr:muRfac=1.0" 0.625 1.0 All +do ShowerHandler:AddVariation isr:muRfac=0.75_fsr:muRfac=1.0 0.75 1.0 All +do ShowerHandler:AddVariation isr:muRfac=0.875_fsr:muRfac=1.0 0.875 1.0 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.75 1.0 1.75 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.5 1.0 1.5 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=1.25 1.0 1.25 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.625 1.0 0.625 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.75 1.0 0.75 All +do ShowerHandler:AddVariation isr:muRfac=1.0_fsr:muRfac=0.875 1.0 0.85 All +""" +print command + +Herwig7Config.add_commands(command) + +# add EvtGen +include("Herwig7_i/Herwig71_EvtGen.py") + +# run Herwig7 +Herwig7Config.run() + diff --git a/Generators/Herwig7_i/share/common/Herwig71_EvtGen.py b/Generators/Herwig7_i/share/common/Herwig71_EvtGen.py new file mode 100644 index 0000000000000000000000000000000000000000..58a7f58dcb7758d251e6ff984f9e6a25575466f8 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig71_EvtGen.py @@ -0,0 +1,57 @@ +## Run EvtGen afterburner on top of Pythia 8 +assert hasattr(genSeq, "Herwig7") +include("EvtGen_i/EvtGen_Fragment.py") +evgenConfig.auxfiles += ['Herwig71Inclusive.pdt'] +genSeq.EvtInclusiveDecay.pdtFile = "Herwig71Inclusive.pdt" + +Herwig7Config.add_commands(""" +# Quick "fix" to the mismatch between Herwig 7 and EvtGen of the masses below +set /Herwig/Particles/B'_c1+:NominalMass 7.3 +set /Herwig/Particles/B'_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c1+:NominalMass 7.3 +set /Herwig/Particles/B_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c2+:NominalMass 7.35 +set /Herwig/Particles/B_c2-:NominalMass 7.35 +set /Herwig/Particles/B*_c0+:NominalMass 7.25 +set /Herwig/Particles/B*_c0-:NominalMass 7.25 +set /Herwig/Particles/B_c+:NominalMass 6.277 +set /Herwig/Particles/B_c-:NominalMass 6.277 +# +# This is a complete kludge. Herwig7 has switched the mapping of names and pdgids for the D'(s1) and the D(s1) +# That means EvtGen misinterprets which particle it should be decaying, since the PDGID is what is written +# in the record. So, we'll set things up to change the masses so that the HEPMC record lis OK. That means +# we want: +# Mass: 2.45960 ID: 20433 (Pythia8 calls this the D*_1s+ , EvtGen calls it D_s1-. 20433 is what Herwig calls +# D'_s1+ and orginally gave it a mass of 2.53535) +# Mass: 2.53512 ID: 10433 (Pythia8 calls this the D_1s+ , EvtGen calls it D'_s1+. 10433 is what Herwig calls +# D_s1+ and orginally gave it a mass of 2.4589 +# +# Since EvtGen will redecay everything anyway, we'll make these particles stable in Herwig +# +set /Herwig/Particles/D'_s1+:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1+:Width 0.001 +set /Herwig/Particles/D'_s1+:WidthCut 0.01 +set /Herwig/Particles/D'_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1-:Width 0.001 +set /Herwig/Particles/D'_s1-:WidthCut 0.01 +set /Herwig/Particles/D'_s1-:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1+:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1-:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Stable Stable +set /Herwig/Particles/D'_s1+:Stable Stable +set /Herwig/Particles/D_s1-:Stable Stable +set /Herwig/Particles/D_s1+:Stable Stable + +""") + diff --git a/Generators/Herwig7_i/share/common/Herwig7EG_Matchbox_MG_H7UEMMHT2014_dipole_multijet_withGridpack.py b/Generators/Herwig7_i/share/common/Herwig7EG_Matchbox_MG_H7UEMMHT2014_dipole_multijet_withGridpack.py new file mode 100644 index 0000000000000000000000000000000000000000..c4f8401911d0c3a4ce4b006a565af45de0e648f1 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7EG_Matchbox_MG_H7UEMMHT2014_dipole_multijet_withGridpack.py @@ -0,0 +1,131 @@ +from Herwig7_i.Herwig7_iConf import Herwig7 +from Herwig7_i.Herwig7ConfigMatchbox import Hw7ConfigMatchbox + +name = runArgs.jobConfig[0] +dsid = int(name.split(".")[1]) + +genSeq += Herwig7() + +## Provide config information +evgenConfig.generators += ["Herwig7"] +evgenConfig.tune = "MMHT2014" + +## initialize generator configuration object +generator = Hw7ConfigMatchbox(genSeq, runArgs, run_name="HerwigMatchbox", beams="pp") + +## configure generator +generator.me_pdf_commands(order="NLO", name="MMHT2014nlo68cl") +generator.tune_commands() + +# HT slice boundaries +pTDict = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} +multDict = {0:1.1,1:1.2,2:2.2,3:4.0,4:5.0,5:6.0,6:7.0,7:8.0,8:9.0,9:10.0,10:10.0,11:10.0,12:10.0} + +#Herwig7EvtGen_Matchbox_MadGraph_H7UEMMHT2014_multijet.py +name_info = name.split("_JZ")[1].split(".py")[0] +slice = int(name_info) +mergingscale = 30 + +evt_multiplier = multDict[slice] + +if runArgs.maxEvents > 0: + nevents=runArgs.maxEvents*evt_multiplier +else: + nevents=5000*evt_multiplier + +generator.add_commands(""" +read Matchbox/StandardModelLike.in +read Matchbox/DiagonalCKM.in + +## Set the order of the couplings +cd /Herwig/MatrixElements/Matchbox +set Factory:OrderInAlphaS 2 +set Factory:OrderInAlphaEW 0 + +## Select the process +## You may use identifiers such as p, pbar, j, l, mu+, h0 etc. +do Factory:Process p p -> j j + +################################################## +## Matrix element library selection +################################################## + +## Select a generic tree/loop combination or a +## specialized NLO package + +# read Matchbox/MadGraph-GoSam.in +# read Matchbox/MadGraph-MadGraph.in +# read Matchbox/MadGraph-NJet.in + +read Matchbox/MadGraph-OpenLoops.in + +# read Matchbox/HJets.in +# read Matchbox/VBFNLO.in + +################################################## +## Cut selection +## See the documentation for more options +################################################## +cd /Herwig/Cuts/ + +## cuts on additional jets + +read Matchbox/DefaultPPJets.in + +insert JetCuts:JetRegions 0 FirstJet +""" ++ "set FirstJet:PtMin "+str(pTDict[slice])+"*GeV" +""" +################################################## +## Scale choice +## See the documentation for more options +################################################## + +cd /Herwig/MatrixElements/Matchbox +set Factory:ScaleChoice /Herwig/MatrixElements/Matchbox/Scales/MaxJetPtScale + +################################################## +## Matching and shower selection +## Please also see flavour scheme settings +## towards the end of the input file. +################################################## + +read Matchbox/MCatNLO-DipoleShower.in +# read Matchbox/Powheg-DefaultShower.in +## use for strict LO/NLO comparisons +# read Matchbox/MCatLO-DefaultShower.in +## use for improved LO showering +# read Matchbox/LO-DefaultShower.in + +#read Matchbox/FiveFlavourScheme.in +## required for dipole shower and fixed order in five flavour scheme +read Matchbox/FiveFlavourNoBMassScheme.in + +""") + +# Using author's default +generator.sampler_commands("MonacoSampler", 20000, 4, 50000, 1, 100) + +if runArgs.generatorRunMode == 'build': + generator.do_build(10) + +elif runArgs.generatorRunMode == 'integrate': + generator.do_integrate(runArgs.generatorJobNumber) + +elif runArgs.generatorRunMode == 'mergegrids': + generator.do_mergegrids(10,gridpack="Herwig7_gridpack.tar.gz") + +elif runArgs.generatorRunMode == 'run': + if runArgs.runNumber == 364902: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364902.multijet_dipole_JZ2.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364903: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364903.multijet_dipole_JZ3.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364904: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364904.multijet_dipole_JZ4.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364905: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364905.multijet_dipole_JZ5.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364906: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364906.multijet_dipole_JZ6.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364907: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364907.multijet_dipole_JZ7.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364908: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364908.multijet_dipole_JZ8.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364909: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364909.multijet_dipole_JZ9.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364910: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364910.multijet_dipole_JZ10.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364911: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364911.multijet_dipole_JZ11.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364912: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364912.multijet_dipole_JZ12.TXT.mc15_v2._00001.tar.gz") + + diff --git a/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF23lo_jetjet.py b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF23lo_jetjet.py new file mode 100644 index 0000000000000000000000000000000000000000..2a233eae33ec7a73776fd70501d80703a389c52c --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF23lo_jetjet.py @@ -0,0 +1,28 @@ +name = runArgs.jobConfig[0] +name_info = name.split("_JZ")[1].split(".py") +slice = int(name_info[0]) + +minkT = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} + +# initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# configure Herwig7 +Herwig7Config.add_commands("set /Herwig/Partons/RemnantDecayer:AllowTop Yes") +Herwig7Config.me_pdf_commands(order="LO", name="NNPDF23_lo_as_0130_qed") + +command = """ +insert /Herwig/MatrixElements/SimpleQCD:MatrixElements[0] /Herwig/MatrixElements/MEQCD2to2 +set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 +set /Herwig/Cuts/JetKtCut:MinKT """+str(minkT[slice])+"""*GeV +""" +print command + +Herwig7Config.add_commands(command) + +# add EvtGen +include("Herwig7_i/Herwig7_EvtGen.py") + +# run Herwig7 +Herwig7Config.run() + diff --git a/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py new file mode 100644 index 0000000000000000000000000000000000000000..6d792ef5ba9bac72455ad10fcb6d6570e7f32bfb --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_dipole_jetjet.py @@ -0,0 +1,35 @@ +name = runArgs.jobConfig[0] +name_info = name.split("_JZ")[1].split(".py") +slice = int(name_info[0]) + +minkT = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} + +# initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# configure Herwig7 +Herwig7Config.add_commands("set /Herwig/Partons/RemnantDecayer:AllowTop Yes") +Herwig7Config.me_pdf_commands(order="NLO", name="NNPDF30_nlo_as_0118") + +command = """ +insert /Herwig/MatrixElements/SimpleQCD:MatrixElements[0] /Herwig/MatrixElements/MEQCD2to2 +set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 +set /Herwig/Cuts/JetKtCut:MinKT """+str(minkT[slice])+"""*GeV +""" +print command + +Herwig7Config.add_commands(command) + +command2 = """ +set /Herwig/Generators/LHCGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler +read snippets/DipoleShowerFiveFlavours.in +""" +print command2 +Herwig7Config.add_commands(command2) + +# add EvtGen +include("Herwig7_i/Herwig7_EvtGen.py") + +# run Herwig7 +Herwig7Config.run() + diff --git a/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_jetjet.py b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_jetjet.py new file mode 100644 index 0000000000000000000000000000000000000000..05767f46149a32f9ba36412d4f84115278313ef1 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7EvtGen_H7UE_NNPDF30nlo_jetjet.py @@ -0,0 +1,28 @@ +name = runArgs.jobConfig[0] +name_info = name.split("_JZ")[1].split(".py") +slice = int(name_info[0]) + +minkT = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} + +# initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# configure Herwig7 +Herwig7Config.add_commands("set /Herwig/Partons/RemnantDecayer:AllowTop Yes") +Herwig7Config.me_pdf_commands(order="NLO", name="NNPDF30_nlo_as_0118") + +command = """ +insert /Herwig/MatrixElements/SimpleQCD:MatrixElements[0] /Herwig/MatrixElements/MEQCD2to2 +set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 +set /Herwig/Cuts/JetKtCut:MinKT """+str(minkT[slice])+"""*GeV +""" +print command + +Herwig7Config.add_commands(command) + +# add EvtGen +include("Herwig7_i/Herwig7_EvtGen.py") + +# run Herwig7 +Herwig7Config.run() + diff --git a/Generators/Herwig7_i/share/common/Herwig7EvtGen_Matchbox_MadGraph_H7UEMMHT2014_multijet_withGridpack.py b/Generators/Herwig7_i/share/common/Herwig7EvtGen_Matchbox_MadGraph_H7UEMMHT2014_multijet_withGridpack.py new file mode 100644 index 0000000000000000000000000000000000000000..268a953de42006bded51945cd0b933736981abb3 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7EvtGen_Matchbox_MadGraph_H7UEMMHT2014_multijet_withGridpack.py @@ -0,0 +1,129 @@ +from Herwig7_i.Herwig7_iConf import Herwig7 +from Herwig7_i.Herwig7ConfigMatchbox import Hw7ConfigMatchbox + +name = runArgs.jobConfig[0] +dsid = int(name.split(".")[1]) + +genSeq += Herwig7() + +## Provide config information +evgenConfig.generators += ["Herwig7"] +evgenConfig.tune = "MMHT2014" + +## initialize generator configuration object +generator = Hw7ConfigMatchbox(genSeq, runArgs, run_name="HerwigMatchbox", beams="pp") + +## configure generator +generator.me_pdf_commands(order="NLO", name="MMHT2014nlo68cl") +generator.tune_commands() + +# HT slice boundaries +pTDict = {0:0,1:0,2:15,3:50,4:150,5:350,6:600,7:950,8:1500,9:2200,10:2800,11:3500,12:4200} +multDict = {0:1.1,1:1.2,2:2.2,3:4.0,4:5.0,5:6.0,6:7.0,7:8.0,8:9.0,9:10.0,10:10.0,11:10.0,12:10.0} + +#Herwig7EvtGen_Matchbox_MadGraph_H7UEMMHT2014_multijet.py +name_info = name.split("_JZ")[1].split(".py")[0] +slice = int(name_info) +mergingscale = 30 + +evt_multiplier = multDict[slice] + +if runArgs.maxEvents > 0: + nevents=runArgs.maxEvents*evt_multiplier +else: + nevents=5000*evt_multiplier + +generator.add_commands(""" +read Matchbox/StandardModelLike.in +read Matchbox/DiagonalCKM.in + +## Set the order of the couplings +cd /Herwig/MatrixElements/Matchbox +set Factory:OrderInAlphaS 2 +set Factory:OrderInAlphaEW 0 + +## Select the process +## You may use identifiers such as p, pbar, j, l, mu+, h0 etc. +do Factory:Process p p -> j j + +################################################## +## Matrix element library selection +################################################## + +## Select a generic tree/loop combination or a +## specialized NLO package + +# read Matchbox/MadGraph-GoSam.in +# read Matchbox/MadGraph-MadGraph.in +# read Matchbox/MadGraph-NJet.in + +read Matchbox/MadGraph-OpenLoops.in + +# read Matchbox/HJets.in +# read Matchbox/VBFNLO.in + +################################################## +## Cut selection +## See the documentation for more options +################################################## +cd /Herwig/Cuts/ + +## cuts on additional jets + +read Matchbox/DefaultPPJets.in + +insert JetCuts:JetRegions 0 FirstJet +""" ++ "set FirstJet:PtMin "+str(pTDict[slice])+"*GeV" +""" +################################################## +## Scale choice +## See the documentation for more options +################################################## + +cd /Herwig/MatrixElements/Matchbox +set Factory:ScaleChoice /Herwig/MatrixElements/Matchbox/Scales/MaxJetPtScale + +################################################## +## Matching and shower selection +## Please also see flavour scheme settings +## towards the end of the input file. +################################################## + +read Matchbox/MCatNLO-DefaultShower.in +# read Matchbox/Powheg-DefaultShower.in +## use for strict LO/NLO comparisons +# read Matchbox/MCatLO-DefaultShower.in +## use for improved LO showering +# read Matchbox/LO-DefaultShower.in + +read Matchbox/FiveFlavourScheme.in +## required for dipole shower and fixed order in five flavour scheme +# read Matchbox/FiveFlavourNoBMassScheme.in + +""") + +# Using author's default +generator.sampler_commands("MonacoSampler", 20000, 4, 50000, 1, 100) + +if runArgs.generatorRunMode == 'build': + generator.do_build(10) + +elif runArgs.generatorRunMode == 'integrate': + generator.do_integrate(runArgs.generatorJobNumber) + +elif runArgs.generatorRunMode == 'mergegrids': + generator.do_mergegrids(10,gridpack="Herwig7_gridpack.tar.gz") + +elif runArgs.generatorRunMode == 'run': + if runArgs.runNumber == 364922: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364922.multijet_angular_JZ2.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364923: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364923.multijet_angular_JZ3.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364924: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364924.multijet_angular_JZ4.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364925: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364925.multijet_angular_JZ5.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364926: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364926.multijet_angular_JZ6.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364927: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364927.multijet_angular_JZ7.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364928: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364928.multijet_angular_JZ8.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364929: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364929.multijet_angular_JZ9.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364930: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364930.multijet_angular_JZ10.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364931: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364931.multijet_angular_JZ11.TXT.mc15_v2._00001.tar.gz") + elif runArgs.runNumber == 364932: generator.do_run(gridpack="group.phys-gener.Herwig7_Matchbox_MG_H7UEMMHT2014.364932.multijet_angular_JZ12.TXT.mc15_v2._00001.tar.gz") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_Base_Fragment.py b/Generators/Herwig7_i/share/common/Herwig7_701_Base_Fragment.py new file mode 100644 index 0000000000000000000000000000000000000000..9ef1172dae4c613ab9ac751bead27200f158dbfa --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_Base_Fragment.py @@ -0,0 +1,33 @@ +## JobOption fragment for Herwig 7.0.1 + +from Herwig7_i.Herwig7_iConf import Herwig7 +genSeq += Herwig7() +evgenConfig.generators += ["Herwig7"] + +try: + from Herwig7_i import config as hw +except: + raise RuntimeError(""" +The release you have set up features the re-designed Herwig7 interface in athena which makes use of Herwig7 versions >= 7.0.4. +The JobOptions, that you are trying to run, were written for and can only be used with the now discontinued interface for Herwig7 version 7.0.1, but can't be run with the new interface. +Please check if you would like to +* use more recent JobOptions, that are compatible with the new Herwig7 interface +or +* set up a different release, that includes the old interface for Herwig7 +Please have a look at https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/Herwig7ForAtlas for more information on release numbers and the corresponding interface versions. +""") + +genSeq.Herwig7.Commands += hw.atlas_parameter_cmds().splitlines() + +genSeq.Herwig7.Commands += [ + "## fix for global default settings until released with Herwig7 itself", + "set /Herwig/Shower/GtoQQbarSplitFn:AngularOrdered Yes", + "set /Herwig/Shower/GammatoQQbarSplitFn:AngularOrdered Yes", + "", + "## fix for GeV-mass photon radiation", + "set /Herwig/Shower/GammatoQQbarSudakov:Alpha /Herwig/Shower/AlphaQED", + "", + "## fix for initial-state (backward evolution) splitting", + "set /Herwig/Shower/QtoGammaQSudakov:Alpha /Herwig/Shower/AlphaQED", + "" +] diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_EvtGen.py b/Generators/Herwig7_i/share/common/Herwig7_701_EvtGen.py new file mode 100644 index 0000000000000000000000000000000000000000..abe4ae10a71c054540422a3fc4dbb5d9836a5668 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_EvtGen.py @@ -0,0 +1,60 @@ +## JobOption fragment for Herwig 7.0.1 + +## Run EvtGen afterburner on top of Pythia 8 +assert hasattr(genSeq, "Herwig7") +include("EvtGen_i/EvtGen_Fragment.py") +evgenConfig.auxfiles += ['HerwigppInclusiveP8.pdt'] +genSeq.EvtInclusiveDecay.pdtFile = "HerwigppInclusiveP8.pdt" + +# quick "fix" to the mismatch between Herwig 7 and EvtGen of the masses below +cmds1 = """ +set /Herwig/Particles/B'_c1+:NominalMass 7.3 +set /Herwig/Particles/B'_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c1+:NominalMass 7.3 +set /Herwig/Particles/B_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c2+:NominalMass 7.35 +set /Herwig/Particles/B_c2-:NominalMass 7.35 +set /Herwig/Particles/B*_c0+:NominalMass 7.25 +set /Herwig/Particles/B*_c0-:NominalMass 7.25 +set /Herwig/Particles/B_c+:NominalMass 6.277 +set /Herwig/Particles/B_c-:NominalMass 6.277 +# +# This is a complete kludge. Herwig7 has switched the mapping of names and pdgids for the D'(s1) and the D(s1) +# That means EvtGen misinterprets which particle it should be decaying, since the PDGID is what is written +# in the record. So, we'll set things up to change the masses so that the HEPMC record lis OK. That means +# we want: +# Mass: 2.45960 ID: 20433 (Pythia8 calls this the D*_1s+ , EvtGen calls it D_s1-. 20433 is what Herwig calls +# D'_s1+ and orginally gave it a mass of 2.53535) +# Mass: 2.53512 ID: 10433 (Pythia8 calls this the D_1s+ , EvtGen calls it D'_s1+. 10433 is what Herwig calls +# D_s1+ and orginally gave it a mass of 2.4589 +# +# Since EvtGen will redecay everything anyway, we'll make these particles stable in Herwig +# +set /Herwig/Particles/D'_s1+:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1+:Width 0.001 +set /Herwig/Particles/D'_s1+:WidthCut 0.01 +set /Herwig/Particles/D'_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1-:Width 0.001 +set /Herwig/Particles/D'_s1-:WidthCut 0.01 +set /Herwig/Particles/D'_s1-:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1+:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1-:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Stable Stable +set /Herwig/Particles/D'_s1+:Stable Stable +set /Herwig/Particles/D_s1-:Stable Stable +set /Herwig/Particles/D_s1+:Stable Stable +""" +genSeq.Herwig7.Commands += cmds1.splitlines() + +del cmds1 diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..408517dd82f3e2c2b90aa51a9444982ba09ea95d --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_Common.py @@ -0,0 +1,15 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with CT10 NLO ME PDF +include("Herwig7_i/Herwig7_701_Base_Fragment.py") + +## Construct command set +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() \ + + hw.nlo_pdf_cmds("CT10.LHgrid", "MMHT2014lo68cl.LHpdf") \ + + hw.ue_tune_cmds("H7-UE-MMHT") +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds + +evgenConfig.tune = "H7-UE-MMHT" + diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..c7661897b81e941393178fd63a54cebfd8b3a428 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_EvtGen_Common.py @@ -0,0 +1,5 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with CT10 NLO ME PDF and EvtGen +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_Common.py") +include("Herwig7_i/Herwig7_701_EvtGen.py") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..43a42cba937a9977d136e9d9bbf12a4eaec0cf26 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_Common.py @@ -0,0 +1,7 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with CT10 NLO ME PDF with NLO events read from a LHEF file +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_Common.py") + +from Herwig7_i import config as hw +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..78cd2e19202a0493cc5100ceb33b59af485edf0d --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_LHEF_EvtGen_Common.py @@ -0,0 +1,7 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with CT10 NLO ME PDF with NLO events read from a LHEF file and decays done with EvtGen +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_CT10_EvtGen_Common.py") + +from Herwig7_i import config as hw +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..6a600e65b040cf8301f4ebf80f41639b34a07a5d --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_EvtGen_Common.py @@ -0,0 +1,15 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with a CT10f4 NLO ME PDF +include("Herwig7_i/Herwig7_701_Base_Fragment.py") + +## Construct command set +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() \ + + hw.nlo_pdf_cmds("CT10f4.LHgrid", "MMHT2014lo68cl.LHpdf") \ + + hw.ue_tune_cmds("H7-UE-MMHT") +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds +include("Herwig7_i/Herwig7_701_EvtGen.py") + +evgenConfig.tune = "H7-UE-MMHT" diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_LHEF_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_LHEF_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..671b2c92e81c2efe0871200ceca2fa01b93894a1 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_LHEF_EvtGen_Common.py @@ -0,0 +1,7 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with a CT10f4 NLO ME PDF with NLO events read from an LHEF file +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_CT10f4ME_EvtGen_Common.py") + +from Herwig7_i import config as hw +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..c334313442f77bda328a73d7b8c202385fb1e741 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_Common.py @@ -0,0 +1,15 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with the MMHT2014 LO ME PDF +include("Herwig7_i/Herwig7_701_Base_Fragment.py") + +## Construct command set +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() \ + + hw.lo_pdf_cmds("MMHT2014lo68cl.LHpdf") \ + + hw.ue_tune_cmds("H7-UE-MMHT") +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds + +evgenConfig.tune = "H7-UE-MMHT" + diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..3a1b8ef4ab70b8aa9f1c1c3155053c5a4384165c --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_EvtGen_Common.py @@ -0,0 +1,5 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with MMHT2014 LO PDF and EvtGen +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_Common.py") +include("Herwig7_i/Herwig7_701_EvtGen.py") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..f712135625b7a7837f956971ad896aeaa0f50311 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_Common.py @@ -0,0 +1,15 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with NNPDF3.0 NLO ME PDF +include("Herwig7_i/Herwig7_701_Base_Fragment.py") + +## Construct command set +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() \ + + hw.nlo_pdf_cmds("NNPDF30_nlo_as_0118.LHgrid", "MMHT2014lo68cl.LHpdf") \ + + hw.ue_tune_cmds("H7-UE-MMHT") +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds + +evgenConfig.tune = "H7-UE-MMHT" + diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..5979883b94fb93b430be01618d588fa9db6b2116 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_EvtGen_Common.py @@ -0,0 +1,5 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with NNPDF3.0 NLO ME PDF and EvtGen +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_Common.py") +include("Herwig7_i/Herwig7_701_EvtGen.py") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..4477caf7404d41047e0602ddc190dc34897889a7 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_Common.py @@ -0,0 +1,7 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with NNPDF3.0 NLO ME PDF with NLO events read from a LHEF file +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_Common.py") + +from Herwig7_i import config as hw +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..33204b7ed60803988dcae964794e115fc9c32362 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_LHEF_EvtGen_Common.py @@ -0,0 +1,7 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for the H7-UE-MMHT tune series with NNPDF3.0 NLO ME PDF with NLO events read from a LHEF file and decays done with EvtGen +include("Herwig7_i/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3ME_EvtGen_Common.py") + +from Herwig7_i import config as hw +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3nnloME_LHEF_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3nnloME_LHEF_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..111c2b3ec4bf3fa05c864bd5184adceed273cc2c --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_H7UE_MMHT2014lo68cl_NNPDF3nnloME_LHEF_EvtGen_Common.py @@ -0,0 +1,19 @@ +## JobOption fragment for Herwig 7.0.1 + +include("Herwig7_i/Herwig7_701_Base_Fragment.py") + +## Herwig7 config for the H7-UE-MMHT tune series with NNPDF3.0 NNLO ME PDF with events read from a LHEF file and decays done with EvtGen + +## Construct command set +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() \ + + hw.nlo_pdf_cmds("NNPDF30_nnlo_as_0118.LHgrid", "MMHT2014lo68cl.LHpdf") \ + + hw.ue_tune_cmds("H7-UE-MMHT") +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds + +evgenConfig.tune = "H7-UE-MMHT" + +genSeq.Herwig7.Commands += hw.lhef_cmds(filename="events.lhe", nlo=True).splitlines() + +include("Herwig7_i/Herwig7_701_EvtGen.py") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_QED_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_QED_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..09508b44e411b3651d3906a3ead5ee62c39725e8 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_QED_Common.py @@ -0,0 +1,17 @@ +## JobOption fragment for Herwig 7.0.1 + +# Common job option for gamma gamma processes in Herwig7 +# MPI tune is not relevant as the pdf_gammagamma_cmds() function disables MPI +# Contact: Oldrich Kepka +include("MC15JobOptions/Herwig7_701_Base_Fragment.py") +from Herwig7_i import config as hw +cmds = hw.energy_cmds(runArgs.ecmEnergy) + hw.base_cmds() + hw.pdf_gammagamma_cmds() +cmds += """ +set /Herwig/Partons/QCDExtractor:FirstPDF /Herwig/Partons/BudnevPDF +set /Herwig/Partons/QCDExtractor:SecondPDF /Herwig/Partons/BudnevPDF +""" +cmds += "create ThePEG::O1AlphaS /Herwig/AlphaQCD_O1 O1AlphaS.so\n" +cmds += "set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS /Herwig/AlphaQCD_O1\n" +cmds += "set /Herwig/Partons/BudnevPDF:Q2Max 4." +genSeq.Herwig7.Commands += cmds.splitlines() +del cmds diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_QED_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_701_QED_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..47174618709c5302dcb8da9cf7269553c8af1b9b --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_QED_EvtGen_Common.py @@ -0,0 +1,5 @@ +## JobOption fragment for Herwig 7.0.1 + +## Herwig7 config for Herwig7_QED and EvtGen +include("Herwig7_i/Herwig7_701_QED_Common.py") +include("Herwig7_i/Herwig7_701_EvtGen.py") diff --git a/Generators/Herwig7_i/share/common/Herwig7_701_StripWeights.py b/Generators/Herwig7_i/share/common/Herwig7_701_StripWeights.py new file mode 100644 index 0000000000000000000000000000000000000000..8c7b032e9c067bea2d9c5c17efb5de9462e274a6 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_701_StripWeights.py @@ -0,0 +1,54 @@ +import os, shutil + +m_inFile = runArgs.inputGeneratorFile + +if not m_inFile: + exit() + +# Pick name Prefix +# - if original file is compressed then athena places the uncompressed +# LHE file in the current working directory before this script is executed +m_Prefix = None +if m_inFile is not None: + if '.tar.gz' in m_inFile: + m_Prefix = os.path.split(m_inFile)[1].split('.tar.gz')[0] + elif '.events' in m_inFile: + m_Prefix = os.path.split(m_inFile)[1].split('.events')[0] + abs_path = os.path.split(os.path.abspath(m_inFile))[0] + cwd_path = os.getcwd() + if abs_path != cwd_path: # if original file is in a different folder + # uncompressed LHE file in a different folder is not supported by job transform, + # rectify this by copying the original LHE file to the current working directory + shutil.copyfile(m_inFile, os.path.split(m_inFile)[1]) + +m_lhe_extracted_old = m_Prefix+".events" +m_lhe_extracted_new = "new."+m_Prefix+".events" + +if m_Prefix is None: + raise RuntimeError("File title could not be determined because of unknown file extension") + +# Strip Weights from old LHE file and write new LHE file +weights = False +with open(m_lhe_extracted_old, "r") as lhef_in: + with open(m_lhe_extracted_new, "w") as lhef_out: + + for line in lhef_in: + + # find tags related to multiple/optional weights + if "<initrwgt>" in line or "<rwgt>" in line: + weights = True + + # propagate line if we are currently not in a line + # related to the optional/multiple event weights + if not weights: + lhef_out.write(line) + + # remember end of optional/multiple event weights lines + if "</initrwgt>" in line or "</rwgt>" in line: + weights = False + +# Delete old (unstripped) LHE file +os.remove(m_lhe_extracted_old) + +# Rename new (stripped) LHE file to the old filename +shutil.move(m_lhe_extracted_new, m_lhe_extracted_old) diff --git a/Generators/Herwig7_i/share/common/Herwig7_BuiltinME.py b/Generators/Herwig7_i/share/common/Herwig7_BuiltinME.py new file mode 100644 index 0000000000000000000000000000000000000000..c7c3484e2ece2e4a9b347ddc9f3dd6a4352982bf --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_BuiltinME.py @@ -0,0 +1,8 @@ +# initialize Herwig7 generator configuration object for built-in/old-style matrix elements + +from Herwig7_i.Herwig7_iConf import Herwig7 +from Herwig7_i.Herwig7ConfigBuiltinME import Hw7ConfigBuiltinME + +genSeq += Herwig7() +Herwig7Config = Hw7ConfigBuiltinME(genSeq, runArgs) + diff --git a/Generators/Herwig7_i/share/common/Herwig7_EvtGen.py b/Generators/Herwig7_i/share/common/Herwig7_EvtGen.py new file mode 100644 index 0000000000000000000000000000000000000000..5279993acbf0c9008d3165e3ba667d552328b1ee --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_EvtGen.py @@ -0,0 +1,57 @@ +## Run EvtGen afterburner on top of Pythia 8 +assert hasattr(genSeq, "Herwig7") +include("EvtGen_i/EvtGen_Fragment.py") +evgenConfig.auxfiles += ['HerwigppInclusiveP8.pdt'] +genSeq.EvtInclusiveDecay.pdtFile = "HerwigppInclusiveP8.pdt" + +Herwig7Config.add_commands(""" +# Quick "fix" to the mismatch between Herwig 7 and EvtGen of the masses below +set /Herwig/Particles/B'_c1+:NominalMass 7.3 +set /Herwig/Particles/B'_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c1+:NominalMass 7.3 +set /Herwig/Particles/B_c1-:NominalMass 7.3 +set /Herwig/Particles/B_c2+:NominalMass 7.35 +set /Herwig/Particles/B_c2-:NominalMass 7.35 +set /Herwig/Particles/B*_c0+:NominalMass 7.25 +set /Herwig/Particles/B*_c0-:NominalMass 7.25 +set /Herwig/Particles/B_c+:NominalMass 6.277 +set /Herwig/Particles/B_c-:NominalMass 6.277 +# +# This is a complete kludge. Herwig7 has switched the mapping of names and pdgids for the D'(s1) and the D(s1) +# That means EvtGen misinterprets which particle it should be decaying, since the PDGID is what is written +# in the record. So, we'll set things up to change the masses so that the HEPMC record lis OK. That means +# we want: +# Mass: 2.45960 ID: 20433 (Pythia8 calls this the D*_1s+ , EvtGen calls it D_s1-. 20433 is what Herwig calls +# D'_s1+ and orginally gave it a mass of 2.53535) +# Mass: 2.53512 ID: 10433 (Pythia8 calls this the D_1s+ , EvtGen calls it D'_s1+. 10433 is what Herwig calls +# D_s1+ and orginally gave it a mass of 2.4589 +# +# Since EvtGen will redecay everything anyway, we'll make these particles stable in Herwig +# +set /Herwig/Particles/D'_s1+:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1+:Width 0.001 +set /Herwig/Particles/D'_s1+:WidthCut 0.01 +set /Herwig/Particles/D'_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:NominalMass 2.4595000e+00 +set /Herwig/Particles/D'_s1-:Width 0.001 +set /Herwig/Particles/D'_s1-:WidthCut 0.01 +set /Herwig/Particles/D'_s1-:Width_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1+:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D_s1-:NominalMass 2.5352800e+00 +set /Herwig/Particles/D_s1+:Width 0.001 +set /Herwig/Particles/D_s1+:WidthCut 0.01 +set /Herwig/Particles/D_s1+:Width_generator:Initialize Yes +set /Herwig/Particles/D_s1+:Mass_generator:Initialize Yes +set /Herwig/Particles/D'_s1-:Stable Stable +set /Herwig/Particles/D'_s1+:Stable Stable +set /Herwig/Particles/D_s1-:Stable Stable +set /Herwig/Particles/D_s1+:Stable Stable + +""") + diff --git a/Generators/Herwig7_i/share/common/Herwig7_LHEF.py b/Generators/Herwig7_i/share/common/Herwig7_LHEF.py new file mode 100644 index 0000000000000000000000000000000000000000..4dcaf84da3ac94cf9a759d3d0caa88bf188c56e6 --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_LHEF.py @@ -0,0 +1,30 @@ +# initialize Herwig7 generator configuration object for showering of LHE files +include("EvgenProdTools/merge_lhe_files.py") + +from Herwig7_i.Herwig7_iConf import Herwig7 +from Herwig7_i.Herwig7ConfigLHEF import Hw7ConfigLHEF + +genSeq += Herwig7() +Herwig7Config = Hw7ConfigLHEF(genSeq, runArgs) + +# handle compressed LHE files passed via runArgs.inputGeneratorFile +import glob +from AthenaCommon import Logging +athMsgLog = Logging.logging.getLogger('Herwig7_i/Herwig7_LHEF.py') +if ".tar.gz" in runArgs.inputGeneratorFile or ".tgz" in runArgs.inputGeneratorFile: + athMsgLog.info("inputGeneratorFile '{}' is compressed - will look for uncompressed LHE file".format(runArgs.inputGeneratorFile)) + lhe_files = glob.glob("*._*.ev*ts") + athMsgLog.info("Number of lhe files {}".format(len(lhe_files))) + if len(lhe_files) == 0: + raise RuntimeError("Could not find uncompressed LHE file") + if len(lhe_files) > 1: + athMsgLog.info("Found more than one uncompressed LHE file: {}".format(lhe_files)) +# my_lhe_file = "merged_lhef.events" +# skeleton.GENtoEVGEN splits the file name on "._" (in rel. 20.7.9.9.6,MCProd, +# so insert this in the merged file name - to make it run also for this release) + my_lhe_file = "merged_lhef._0.events" + merge_lhe_files(lhe_files, my_lhe_file ) + lhe_files[0] = my_lhe_file + athMsgLog.info("Using uncompressed LHE file '{}' as inputGeneratorFile".format(lhe_files[0])) + runArgs.inputGeneratorFile = lhe_files[0] + diff --git a/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_Common.py b/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..5b15aad75c4e151c57afbda5495560839e17829a --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_Common.py @@ -0,0 +1,33 @@ +# JobOption fragment for Herwig >=7.0.4 + +# Common job option for gamma gamma processes in Herwig7 +# Contact: Oldrich Kepka + +assert hasattr(genSeq, "Herwig7") + +Herwig7Config.add_commands(Herwig7Config.pdf_gammagamma_cmds()) + + +cmds = """ +set /Herwig/Partons/QCDExtractor:FirstPDF /Herwig/Partons/BudnevPDF +set /Herwig/Partons/QCDExtractor:SecondPDF /Herwig/Partons/BudnevPDF +set /Herwig/Partons/BudnevPDF:Q2Max 4. + +create ThePEG::O1AlphaS /Herwig/AlphaQCD_O1 O1AlphaS.so +set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS /Herwig/AlphaQCD_O1 + +# Cuts +cd /Herwig/Cuts +set QCDCuts:ScaleMin 0.0*MeV +set QCDCuts:X1Min 0 +set QCDCuts:X2Min 0 +set QCDCuts:X1Max 1. +set QCDCuts:X2Max 1. +erase QCDCuts:MultiCuts 0 +""" +Herwig7Config.add_commands(cmds) +del cmds + +# To avoid warning from displaced vertices, bugfix needed in herwig++ +testSeq.TestHepMC.MaxTransVtxDisp = 1000000 +testSeq.TestHepMC.MaxVtxDisp = 1000000000 diff --git a/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_ll.py b/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_ll.py new file mode 100644 index 0000000000000000000000000000000000000000..5e77d470797fd1d4e0d2124ed7ba3c06153e3c6d --- /dev/null +++ b/Generators/Herwig7_i/share/common/Herwig7_QED_EvtGen_ll.py @@ -0,0 +1,47 @@ +# JobOption fragment for Herwig >=7.0.4 + +# Common job option for gamma gamma -> ll processes in Herwig7 +# Generation in Min < M < Max window. Min/Max and lepton flavour determined +# from the JO name, e.g. MC15.363749.Herwig7EvtGen_BudnevQED_ggTOee_20M45_LeptonFilter.py +# Contact: Oldrich Kepka + +# Finnal states to be found in the JO name +h7finalStates = {"ggTOee": "Electron", "ggTOmumu": "Muon", "ggTOtautau": "Tau" } + +# Assert right JO name format +info = runArgs.jobConfig[0].split("_") +assert (info[1] == "BudnevQED") , "JobOption name does not contain BudnevQED" +assert (info[2] in h7finalStates), "Unknown final state key %s" % info[2] + +# Extract final state and mass range from the JO name +fs = h7finalStates[info[2]] +mrange = info[3].split('M') +assert (len(mrange) >0), "Cannot extract mass range from the JO" +del h7finalStates + + +# Initialize Herwig7 generator configuration for built-in matrix elements +include("Herwig7_i/Herwig7_BuiltinME.py") + +# Generic QED include with maximum phase-space +include("Herwig7_i/Herwig7_QED_EvtGen_Common.py") + +# Mmin<M<Mmax +command = """\ +set QCDCuts:MHatMin """+str(mrange[0])+"""*GeV\n""" +if len(mrange) > 1 and mrange[1]!='': + command += "set QCDCuts:MHatMax "+str(mrange[1])+"*GeV\n" + +# Hard process +command += """\ +set LeptonKtCut:MinKT 2*GeV # save minimal setting, override in upstream jo if pT-filter used +cd /Herwig/MatrixElements +insert SimpleQCD:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff +set /Herwig/MatrixElements/MEgg2ff:Process """+str(fs)+""" +""" + + +Herwig7Config.add_commands(command) +del command +del mrange +del fs diff --git a/Generators/QGSJet_i/CMakeLists.txt b/Generators/QGSJet_i/CMakeLists.txt index 4f52c3a7b0498b05a21c5aac519eb6b5ba66333b..ae14b7562949e807f14b2a65eebe543588d98a37 100644 --- a/Generators/QGSJet_i/CMakeLists.txt +++ b/Generators/QGSJet_i/CMakeLists.txt @@ -40,7 +40,10 @@ atlas_add_component( QGSJet_i LINK_LIBRARIES ${CRMC_LIBRARIES} ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib AthenaKernel GaudiKernel TruthUtils QGSJet_iLib ) # Install files from the package: -atlas_install_runtime( share/qgsjet_crmc.param ) +atlas_install_runtime( share/qgsjet_crmc.param + ${CRMC_ROOT}/tabs/dpmjet.dat + ${CRMC_ROOT}/tabs/sectnu-II-04 + ${CRMC_ROOT}/tabs/qgsdat-II-04.lzma ) set( QGSJetEnvironment_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH "Location of QGSJetEnvironment.cmake" ) diff --git a/Generators/QGSJet_i/QGSJetEnvironmentConfig.cmake b/Generators/QGSJet_i/QGSJetEnvironmentConfig.cmake index 6aea6aaa23f19bfce20391fcff2a69906d9670a4..bc2db30dd56ea0cf0fead757c99ff4fb6f63df84 100644 --- a/Generators/QGSJet_i/QGSJetEnvironmentConfig.cmake +++ b/Generators/QGSJet_i/QGSJetEnvironmentConfig.cmake @@ -5,7 +5,7 @@ # # Set the environment variable(s): -find_package( CRMC ) +find_package( Crmc ) if( CRMC_FOUND ) set( QGSJETENVIRONMENT_ENVIRONMENT diff --git a/Generators/Tauolapp_i/TauolaEnvironmentConfig.cmake b/Generators/Tauolapp_i/TauolappEnvironmentConfig.cmake similarity index 87% rename from Generators/Tauolapp_i/TauolaEnvironmentConfig.cmake rename to Generators/Tauolapp_i/TauolappEnvironmentConfig.cmake index 79dd410ff61bc916659e3af855b7a64002d3b6bb..d40f6d1c2b66f95df706586c180e672fa3a4897a 100644 --- a/Generators/Tauolapp_i/TauolaEnvironmentConfig.cmake +++ b/Generators/Tauolapp_i/TauolappEnvironmentConfig.cmake @@ -9,7 +9,7 @@ find_package( Tauolapp ) if( TAUOLAPP_FOUND ) set( TAUOLAPPENVIRONMENT_ENVIRONMENT - FORCESET TAUOLAPPVER ${THEPEG_VERSION}) + FORCESET TAUOLAPPVER ${TAUOLAPP_VERSION}) endif() # Silently declare the module found: diff --git a/Generators/TruthIO/share/common/HepMCReadFromFile_Common.py b/Generators/TruthIO/share/common/HepMCReadFromFile_Common.py new file mode 100644 index 0000000000000000000000000000000000000000..08df6a49c654c31222ee2b9711eeb29aa3782669 --- /dev/null +++ b/Generators/TruthIO/share/common/HepMCReadFromFile_Common.py @@ -0,0 +1,4 @@ +from TruthIO.TruthIOConf import HepMCReadFromFile +genSeq += HepMCReadFromFile() +genSeq.HepMCReadFromFile.InputFile="events.hepmc" +evgenConfig.generators += ["HepMCAscii"] diff --git a/Generators/TruthIO/share/common/jobOptions.read_hepmc.py b/Generators/TruthIO/share/common/jobOptions.read_hepmc.py new file mode 100644 index 0000000000000000000000000000000000000000..c3319319412b8520ab9af0518cf777dacff48da3 --- /dev/null +++ b/Generators/TruthIO/share/common/jobOptions.read_hepmc.py @@ -0,0 +1,50 @@ +############################################################### +# +# Job options file +# +#============================================================== +#-------------------------------------------------------------- +# General Application Configuration options +#-------------------------------------------------------------- +import AthenaCommon.AtlasUnixGeneratorJob + +from AthenaCommon.AppMgr import theApp +from AthenaCommon.AppMgr import ServiceMgr + +#-------------------------------------------------------------- +# Private Application Configuration options +#-------------------------------------------------------------- +from AthenaCommon.AlgSequence import AlgSequence +job=AlgSequence() +from TruthIO.TruthIOConf import HepMCReadFromFile +job += HepMCReadFromFile() + +# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) +ServiceMgr.MessageSvc.OutputLevel = INFO +#-------------------------------------------------------------- +# Event related parameters +#-------------------------------------------------------------- +# Number of events to be processed (default is 10) +theApp.EvtMax = 5 +#-------------------------------------------------------------- +# Algorithms Private Options +#-------------------------------------------------------------- + +re = job.HepMCReadFromFile +re.AsciiFile= "hepmc.out" + +from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream +Stream1 = AthenaPoolOutputStream( "Stream1" ) +Stream1.ItemList += [ "2101#*", "133273#*" ] +# This line is not really needed. Just to show that PoolSvc is already covered by the ServiceMgr +PoolSvc = ServiceMgr.PoolSvc +Stream1.OutputFile = "McEvent.root" + +#--------------------------------------------------------------- +# Ntuple service output +#--------------------------------------------------------------- +#============================================================== +# +# End of job options file +# +###############################################################