diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 6a83d34958e97..2842f28633295 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -2230,7 +2230,7 @@ def prepare(self, doChecking = False): self.pythonCfgCode +=dumpPython(self.process,object) if self._options.pileup=='HiMixEmbGEN': - self.pythonCfgCode += "\nprocess.generator.embeddingMode=cms.bool(True)\n" + self.pythonCfgCode += "\nprocess.generator.embeddingMode=cms.int32(1)\n" # dump all paths self.pythonCfgCode += "\n# Path and EndPath definitions\n" diff --git a/Configuration/Generator/python/Hydjet2_Quenched_MinBias_5020GeV_cfi.py b/Configuration/Generator/python/Hydjet2_Quenched_MinBias_5020GeV_cfi.py new file mode 100644 index 0000000000000..a5d66af397edc --- /dev/null +++ b/Configuration/Generator/python/Hydjet2_Quenched_MinBias_5020GeV_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +from GeneratorInterface.Hydjet2Interface.hydjet2DefaultParameters_cff import * + +generator = cms.EDFilter("Hydjet2GeneratorFilter", + collisionParameters5020GeV, + qgpParametersLHC, + hydjet2Parameters, + fNhsel = cms.int32(2), # Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) + PythiaParameters = cms.PSet(PythiaDefaultBlock, + parameterSets = cms.vstring( + 'ProQ2Otune', + 'hydjet2PythiaDefault', + ) + ), + + maxEventsToPrint = cms.untracked.int32(0), + pythiaPylistVerbosity = cms.untracked.int32(0), + + fIfb = cms.int32(1), # Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax]) + fBmin = cms.double(0.), # Minimal impact parameter, fBmin (fm) + fBmax = cms.double(21.), # Maximal impact parameter, fBmax (fm) + fBfix = cms.double(0.), # Fixed impact parameter, fBfix (fm) + ) diff --git a/Configuration/Generator/python/Pyquen2015Settings_cff.py b/Configuration/Generator/python/Pyquen2015Settings_cff.py index 230c19ab5f98e..97aabf752c94e 100644 --- a/Configuration/Generator/python/Pyquen2015Settings_cff.py +++ b/Configuration/Generator/python/Pyquen2015Settings_cff.py @@ -27,7 +27,7 @@ pyquenParameters = cms.PSet(doIsospin = cms.bool(True), angularSpectrumSelector = cms.int32(0), ## angular emitted gluon spectrum - embeddingMode = cms.bool(False), + embeddingMode = cms.int32(0), ) hydjetParameters = cms.PSet(sigmaInelNN = cms.double(70), @@ -39,7 +39,7 @@ rotateEventPlane = cms.bool(True), allowEmptyEvents = cms.bool(False), angularSpectrumSelector = cms.int32(1), ## angular emitted gluon spectrum - embeddingMode = cms.bool(False) + embeddingMode = cms.int32(0) ) pyquenPythiaDefaultBlock = cms.PSet( diff --git a/Configuration/Generator/python/PyquenDefaultSettings_cff.py b/Configuration/Generator/python/PyquenDefaultSettings_cff.py index 5e8d72738a521..a78df54006988 100644 --- a/Configuration/Generator/python/PyquenDefaultSettings_cff.py +++ b/Configuration/Generator/python/PyquenDefaultSettings_cff.py @@ -25,7 +25,7 @@ pyquenParameters = cms.PSet(doIsospin = cms.bool(True), angularSpectrumSelector = cms.int32(0), ## angular emitted gluon spectrum : - embeddingMode = cms.bool(False), + embeddingMode = cms.int32(0), ) hydjetParameters = cms.PSet(sigmaInelNN = cms.double(58), @@ -36,7 +36,7 @@ maxTransverseRapidity = cms.double(1.), rotateEventPlane = cms.bool(True), allowEmptyEvents = cms.bool(False), - embeddingMode = cms.bool(False) + embeddingMode = cms.int32(0) ) pyquenPythiaDefaultBlock = cms.PSet( diff --git a/Configuration/Generator/python/Pyquen_DiJet_pt80to120_2760GeV_cfi.py b/Configuration/Generator/python/Pyquen_DiJet_pt80to120_2760GeV_cfi.py index 3ce9bf9980993..bc7c2320d285f 100644 --- a/Configuration/Generator/python/Pyquen_DiJet_pt80to120_2760GeV_cfi.py +++ b/Configuration/Generator/python/Pyquen_DiJet_pt80to120_2760GeV_cfi.py @@ -19,8 +19,6 @@ bMax = cms.double(0.0) ## max impact param (fm); valid only if cflag_!=0 ) -generator.embeddingMode = False - configurationMetadata = cms.untracked.PSet( version = cms.untracked.string('$Revision: 1.2 $'), name = cms.untracked.string('$Source: /local/projects/CMSSW/rep/CMSSW/Configuration/Generator/python/Pyquen_DiJet_pt80to120_2760GeV_cfi.py,v $'), diff --git a/Configuration/Generator/python/concurrentLumisDisable.py b/Configuration/Generator/python/concurrentLumisDisable.py index 5c0f3b851d9b5..763b72f95ef9b 100644 --- a/Configuration/Generator/python/concurrentLumisDisable.py +++ b/Configuration/Generator/python/concurrentLumisDisable.py @@ -5,6 +5,7 @@ "CosMuoGenProducer", "Herwig7GeneratorFilter", "HydjetGeneratorFilter", + "Hydjet2GeneratorFilter", "PyquenGeneratorFilter", "Pythia6GeneratorFilter", "Pythia8EGun", diff --git a/Configuration/PyReleaseValidation/python/relval_standard.py b/Configuration/PyReleaseValidation/python/relval_standard.py index 961941edadb97..e404bbc39b8d5 100644 --- a/Configuration/PyReleaseValidation/python/relval_standard.py +++ b/Configuration/PyReleaseValidation/python/relval_standard.py @@ -719,7 +719,7 @@ workflows[159.2] = ['',['PhotonJets_Pt_10_14_HI_2021','DIGIHI2021PPRECO','RECOHI2021PPRECO','HARVESTHI2021PPRECO']] workflows[159.3] = ['',['ZMM_14_HI_2021','DIGIHI2021PPRECO','RECOHI2021PPRECO','HARVESTHI2021PPRECO']] workflows[159.4] = ['',['ZEE_14_HI_2021','DIGIHI2021PPRECO','RECOHI2021PPRECO','HARVESTHI2021PPRECO']] - +workflows[160] = ['',['Hydjet2Q_MinBias_5020GeV_2018_ppReco','DIGIHI2018PPRECO','RECOHI2018PPRECOMB','ALCARECOHI2018PPRECO','HARVESTHI2018PPRECO']] ### pp reference test ### workflows[149] = ['',['QCD_Pt_80_120_13_PPREF','DIGIPPREF2017','RECOPPREF2017','HARVESTPPREF2017']] diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 407ff347ada01..e6d56192e61fe 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -985,6 +985,7 @@ def genS(fragment,howMuch): hiDefaults2018_ppReco=merge([hiAlca2018_ppReco,{'-n':2}]) hiDefaults2021_ppReco=merge([hiAlca2021_ppReco,{'-n':2}]) +steps['Hydjet2Q_MinBias_5020GeV_2018_ppReco']=merge([{'-n':1},hiDefaults2018_ppReco,gen2018hiprod('Hydjet2_Quenched_MinBias_5020GeV_cfi',U2000by1)]) steps['HydjetQ_B12_5020GeV_2011']=merge([{'-n':1,'--beamspot':'RealisticHI2011Collision'},hiDefaults2011,genS('Hydjet_Quenched_B12_5020GeV_cfi',U2000by1)]) steps['HydjetQ_B12_5020GeV_2015']=merge([{'-n':1,'--beamspot':'RealisticHICollisionFixZ2015'},hiDefaults2015,genS('Hydjet_Quenched_B12_5020GeV_cfi',U2000by1)]) steps['HydjetQ_MinBias_XeXe_5442GeV_2017']=merge([{'-n':1},hiDefaults2017,gen2017('Hydjet_Quenched_MinBias_XeXe_5442GeV_cfi',U2000by1)]) diff --git a/GeneratorInterface/Hydjet2Interface/BuildFile.xml b/GeneratorInterface/Hydjet2Interface/BuildFile.xml index cfd72a8eae0d0..be9534db5d8c9 100644 --- a/GeneratorInterface/Hydjet2Interface/BuildFile.xml +++ b/GeneratorInterface/Hydjet2Interface/BuildFile.xml @@ -12,6 +12,7 @@ + diff --git a/GeneratorInterface/Hydjet2Interface/data/particles.data b/GeneratorInterface/Hydjet2Interface/data/particles.data deleted file mode 100644 index 020127fe0baf3..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/data/particles.data +++ /dev/null @@ -1,616 +0,0 @@ -Ns2600plu 2.6000000 0.6500000 5.5 0.5 0.5 3. 0. 0. 0. 0. 0. 9401 -Ns2600zer 2.6000000 0.6500000 5.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 9400 -Ns2600plb 2.6000000 0.6500000 5.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -9401 -Ns2600zrb 2.6000000 0.6500000 5.5 0.5 0.5 0. 0. 3. 0. 0. 0. -9400 -Dl2420plp 2.4200000 0.4000000 5.5 1.5 1.5 3. 0. 0. 0. 0. 0. 9297 -Dl2420plu 2.4200000 0.4000000 5.5 1.5 0.5 3. 0. 0. 0. 0. 0. 9298 -Dl2420zer 2.4200000 0.4000000 5.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 9299 -Dl2420min 2.4200000 0.4000000 5.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 9300 -Dl2420ppb 2.4200000 0.4000000 5.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -9297 -Dl2420plb 2.4200000 0.4000000 5.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -9298 -Dl2420zrb 2.4200000 0.4000000 5.5 1.5 0.5 0. 0. 3. 0. 0. 0. -9299 -Dl2420mnb 2.4200000 0.4000000 5.5 1.5 1.5 0. 0. 3. 0. 0. 0. -9300 -f42340zer 2.3390000 0.3190000 4.0 0. 0. 1. 0. 1. 0. 0. 0. 40225 -f22300zer 2.2970000 0.1490000 2.0 0. 0. 1. 0. 1. 0. 0. 0. 30225 -UM2250min 2.2520000 0.0550000 1.5 0. 0. 0. 3. 0. 0. 0. 0. 9000 -UM2250mnb 2.2520000 0.0550000 1.5 0. 0. 0. 0. 0. 3. 0. 0. -9000 -Ns2250plu 2.2500000 0.4000000 4.5 0.5 0.5 3. 0. 0. 0. 0. 0. 5128 -Ns2250zer 2.2500000 0.4000000 4.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 5218 -Ns2250plb 2.2500000 0.4000000 4.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -5128 -Ns2250zrb 2.2500000 0.4000000 4.5 0.5 0.5 0. 0. 3. 0. 0. 0. -5218 -Sg2250plu 2.2500000 0.1000000 1.5 1. 1. 2. 1. 0. 0. 0. 0. 4028 -Sg2250min 2.2500000 0.1000000 1.5 1. -1. 2. 1. 0. 0. 0. 0. 4128 -Sg2250zer 2.2500000 0.1000000 1.5 1. 0. 2. 1. 0. 0. 0. 0. 4228 -Sg2250plb 2.2500000 0.1000000 1.5 1. -1. 0. 0. 2. 1. 0. 0. -4028 -Sg2250mnb 2.2500000 0.1000000 1.5 1. 1. 0. 0. 2. 1. 0. 0. -4128 -Sg2250zrb 2.2500000 0.1000000 1.5 1. 0. 0. 0. 2. 1. 0. 0. -4228 -Ns2220plu 2.2200000 0.4000000 2.5 0.5 0.5 3. 0. 0. 0. 0. 0. 31280001 -Ns2220zer 2.2200000 0.4000000 2.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 32180001 -Ns2220plb 2.2200000 0.4000000 2.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -31280001 -Ns2220zrb 2.2200000 0.4000000 2.5 0.5 0.5 0. 0. 3. 0. 0. 0. -32180001 -Ns2190plu 2.1900000 0.4500000 3.5 0.5 0.5 3. 0. 0. 0. 0. 0. 1218 -Ns2190zer 2.1900000 0.4500000 3.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 2128 -Ns2190plb 2.1900000 0.4500000 3.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -1218 -Ns2190zrb 2.1900000 0.4500000 3.5 0.5 0.5 0. 0. 3. 0. 0. 0. -2128 -Lm2100zer 2.1000000 0.2000000 1.5 0. 0. 2. 1. 0. 0. 0. 0. 3128 -Lm2100zrb 2.1000000 0.2000000 1.5 0. 0. 0. 0. 2. 1. 0. 0. -3128 -Sg2030plu 2.0300000 0.1800000 1.5 1. 1. 2. 1. 0. 0. 0. 0. 3118 -Sg2030min 2.0300000 0.1800000 1.5 1. -1. 2. 1. 0. 0. 0. 0. 3218 -Sg2030zer 2.0300000 0.1800000 1.5 1. 0. 2. 1. 0. 0. 0. 0. 3228 -Sg2030plb 2.0300000 0.1800000 1.5 1. -1. 0. 0. 2. 1. 0. 0. -3118 -Sg2030mnb 2.0300000 0.1800000 1.5 1. 1. 0. 0. 2. 1. 0. 0. -3218 -Sg2030zrb 2.0300000 0.1800000 1.5 1. 0. 0. 0. 2. 1. 0. 0. -3228 -Xi2030min 2.0250000 0.0200000 2.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 8901 -Xi2030mnb 2.0250000 0.0200000 2.5 0.5 0.5 0. 0. 1. 2. 0. 0. 8900 -Xi2030zer 2.0250000 0.0200000 2.5 0.5 0.5 1. 2. 0. 0. 0. 0. -8901 -Xi2030zrb 2.0250000 0.0200000 2.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -8900 -a42040plu 2.0140000 0.3610000 4.0 1. 1. 1. 0. 1. 0. 0. 0. 219 -a42040min 2.0140000 0.3610000 4.0 1. -1. 1. 0. 1. 0. 0. 0. -219 -a42040zer 2.0140000 0.3610000 4.0 1. 0. 1. 0. 1. 0. 0. 0. 119 -Dl1950plp 1.9500000 0.3000000 3.5 1.5 1.5 3. 0. 0. 0. 0. 0. 1118 -Dl1950plu 1.9500000 0.3000000 3.5 1.5 0.5 3. 0. 0. 0. 0. 0. 2118 -Dl1950zer 1.9500000 0.3000000 3.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 2218 -Dl1950min 1.9500000 0.3000000 3.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 2228 -Dl1950ppb 1.9500000 0.3000000 3.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -1118 -Dl1950plb 1.9500000 0.3000000 3.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -2118 -Dl1950zrb 1.9500000 0.3000000 3.5 1.5 0.5 0. 0. 3. 0. 0. 0. -2218 -Dl1950mnb 1.9500000 0.3000000 3.5 1.5 1.5 0. 0. 3. 0. 0. 0. -2228 -Xi1950min 1.9500000 0.0600000 1.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 67001 -Xi1950mnb 1.9500000 0.0600000 1.5 0.5 0.5 0. 0. 1. 2. 0. 0. -67001 -Xi1950zer 1.9500000 0.0600000 1.5 0.5 0.5 1. 2. 0. 0. 0. 0. 67000 -Xi1950zrb 1.9500000 0.0600000 1.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -67000 -Sg1940plu 1.9400000 0.2200000 1.5 1. 1. 2. 1. 0. 0. 0. 0. 23114 -Sg1940min 1.9400000 0.2200000 1.5 1. -1. 2. 1. 0. 0. 0. 0. 23214 -Sg1940zer 1.9400000 0.2200000 1.5 1. 0. 2. 1. 0. 0. 0. 0. 23224 -Sg1940plb 1.9400000 0.2200000 1.5 1. -1. 0. 0. 2. 1. 0. 0. -23114 -Sg1940mnb 1.9400000 0.2200000 1.5 1. 1. 0. 0. 2. 1. 0. 0. -23214 -Sg1940zrb 1.9400000 0.2200000 1.5 1. 0. 0. 0. 2. 1. 0. 0. -23224 -Dl1930plp 1.9300000 0.3500000 2.5 1.5 1.5 3. 0. 0. 0. 0. 0. 11116 -Dl1930plu 1.9300000 0.3500000 2.5 1.5 0.5 3. 0. 0. 0. 0. 0. 11216 -Dl1930zer 1.9300000 0.3500000 2.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 12126 -Dl1930min 1.9300000 0.3500000 2.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 12226 -Dl1930ppb 1.9300000 0.3500000 2.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -11116 -Dl1930plb 1.9300000 0.3500000 2.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -11216 -Dl1930zrb 1.9300000 0.3500000 2.5 1.5 0.5 0. 0. 3. 0. 0. 0. -12126 -Dl1930mnb 1.9300000 0.3500000 2.5 1.5 1.5 0. 0. 3. 0. 0. 0. -12226 -Dl1920plp 1.9200000 0.2000000 1.5 1.5 1.5 3. 0. 0. 0. 0. 0. 21114 -Dl1920plu 1.9200000 0.2000000 1.5 1.5 0.5 3. 0. 0. 0. 0. 0. 22114 -Dl1920zer 1.9200000 0.2000000 1.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 22214 -Dl1920min 1.9200000 0.2000000 1.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 22224 -Dl1920ppb 1.9200000 0.2000000 1.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -21114 -Dl1920plb 1.9200000 0.2000000 1.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -22114 -Dl1920zrb 1.9200000 0.2000000 1.5 1.5 0.5 0. 0. 3. 0. 0. 0. -22214 -Dl1920mnb 1.9200000 0.2000000 1.5 1.5 1.5 0. 0. 3. 0. 0. 0. -22224 -Sg1915plu 1.9150000 0.1200000 2.5 1. 1. 2. 1. 0. 0. 0. 0. 13116 -Sg1915min 1.9150000 0.1200000 2.5 1. -1. 2. 1. 0. 0. 0. 0. 13216 -Sg1915zer 1.9150000 0.1200000 2.5 1. 0. 2. 1. 0. 0. 0. 0. 13226 -Sg1915plb 1.9150000 0.1200000 2.5 1. -1. 0. 0. 2. 1. 0. 0. -13116 -Sg1915mnb 1.9150000 0.1200000 2.5 1. 1. 0. 0. 2. 1. 0. 0. -13216 -Sg1915zrb 1.9150000 0.1200000 2.5 1. 0. 0. 0. 2. 1. 0. 0. -13226 -Dl1910plp 1.9100000 0.2500000 0.5 1.5 1.5 3. 0. 0. 0. 0. 0. 21112 -Dl1910plu 1.9100000 0.2500000 0.5 1.5 0.5 3. 0. 0. 0. 0. 0. 21212 -Dl1910zer 1.9100000 0.2500000 0.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 221220001 -Dl1910min 1.9100000 0.2500000 0.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 22222 -Dl1910ppb 1.9100000 0.2500000 0.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -21112 -Dl1910plb 1.9100000 0.2500000 0.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -21212 -Dl1910zrb 1.9100000 0.2500000 0.5 1.5 0.5 0. 0. 3. 0. 0. 0. -221220001 -Dl1910mnb 1.9100000 0.2500000 0.5 1.5 1.5 0. 0. 3. 0. 0. 0. -22222 -Dl1905plp 1.9050000 0.3500000 2.5 1.5 1.5 3. 0. 0. 0. 0. 0. 1116 -Dl1905plu 1.9050000 0.3500000 2.5 1.5 0.5 3. 0. 0. 0. 0. 0. 1216 -Dl1905zer 1.9050000 0.3500000 2.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 2126 -Dl1905min 1.9050000 0.3500000 2.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 2226 -Dl1905ppb 1.9050000 0.3500000 2.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -1116 -Dl1905plb 1.9050000 0.3500000 2.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -1216 -Dl1905zrb 1.9050000 0.3500000 2.5 1.5 0.5 0. 0. 3. 0. 0. 0. -2126 -Dl1905mnb 1.9050000 0.3500000 2.5 1.5 1.5 0. 0. 3. 0. 0. 0. -2226 -Lm1890zer 1.8900000 0.1000000 1.5 0. 0. 2. 1. 0. 0. 0. 0. 23124 -Lm1890zrb 1.8900000 0.1000000 1.5 0. 0. 0. 0. 2. 1. 0. 0. -23124 -ph1850zer 1.8540000 0.0870000 3.0 0. 0. 0. 1. 0. 1. 0. 0. 337 -Lm1830zer 1.8300000 0.9500000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 13126 -Lm1830zrb 1.8300000 0.9500000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -13126 -Xi1820min 1.8230000 0.0240000 1.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 13314 -Xi1820mnb 1.8230000 0.0240000 1.5 0.5 0.5 0. 0. 1. 2. 0. 0. 13324 -Xi1820zer 1.8230000 0.0240000 1.5 0.5 0.5 1. 2. 0. 0. 0. 0. -13314 -Xi1820zrb 1.8230000 0.0240000 1.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -13324 -Lm1820zer 1.8200000 0.8000000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 3126 -Lm1820zrb 1.8200000 0.8000000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -3126 -Ka1820plu 1.8160000 0.2760000 2.0 0.5 0.5 1. 0. 0. 1. 0. 0. 20315 -Ka1820min 1.8160000 0.2760000 2.0 0.5 -0.5 0. 1. 1. 0. 0. 0. 20325 -Ka1820zer 1.8160000 0.2760000 2.0 0.5 -0.5 1. 0. 0. 1. 0. 0. -20325 -Ka1820zrb 1.8160000 0.2760000 2.0 0.5 0.5 0. 1. 1. 0. 0. 0. -20315 -Lm1810zer 1.8100000 0.1500000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 53122 -Lm1810zrb 1.8100000 0.1500000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -53122 -pi1800plu 1.8010000 0.2100000 0.0 1. 1. 1. 0. 1. 0. 0. 0. 200111 -pi1800min 1.8010000 0.2100000 0.0 1. -1. 1. 0. 1. 0. 0. 0. -200111 -pi1800zer 1.8010000 0.2100000 0.0 1. 0. 1. 0. 1. 0. 0. 0. 200211 -Lm1800zer 1.8000000 0.3000000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 43122 -Lm1800zrb 1.8000000 0.3000000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -43122 -Ka1780zer 1.7760000 0.1590000 3.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 317 -Ka1780zrb 1.7760000 0.1590000 3.0 0.5 0.5 0. 1. 1. 0. 0. 0. 327 -Ka1780plu 1.7760000 0.1590000 3.0 0.5 0.5 1. 0. 0. 1. 0. 0. -317 -Ka1780min 1.7760000 0.1590000 3.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -327 -Sg1775plu 1.7750000 0.1200000 2.5 1. 1. 2. 1. 0. 0. 0. 0. 3116 -Sg1775min 1.7750000 0.1200000 2.5 1. -1. 2. 1. 0. 0. 0. 0. 3216 -Sg1775zer 1.7750000 0.1200000 2.5 1. 0. 2. 1. 0. 0. 0. 0. 3226 -Sg1775plb 1.7750000 0.1200000 2.5 1. -1. 0. 0. 2. 1. 0. 0. -3116 -Sg1775mnb 1.7750000 0.1200000 2.5 1. 1. 0. 0. 2. 1. 0. 0. -3216 -Sg1775zrb 1.7750000 0.1200000 2.5 1. 0. 0. 0. 2. 1. 0. 0. -3226 -Sg1750plu 1.7500000 0.0900000 0.5 1. 1. 2. 1. 0. 0. 0. 0. 8116 -Sg1750zer 1.7500000 0.0900000 0.5 1. 0. 2. 1. 0. 0. 0. 0. 8117 -Sg1750min 1.7500000 0.0900000 0.5 1. -1. 2. 1. 0. 0. 0. 0. 8118 -Sg1750plb 1.7500000 0.0900000 0.5 1. -1. 0. 0. 2. 1. 0. 0. -8116 -Sg1750zrb 1.7500000 0.0900000 0.5 1. 0. 0. 0. 2. 1. 0. 0. -8117 -Sg1750mnb 1.7500000 0.0900000 0.5 1. 1. 0. 0. 2. 1. 0. 0. -8118 -Ka1770zer 1.7730000 0.1860000 2.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 10315 -Ka1770zrb 1.7730000 0.1860000 2.0 0.5 0.5 0. 1. 1. 0. 0. 0. 10325 -Ka1770plu 1.7730000 0.1860000 2.0 0.5 0.5 1. 0. 0. 1. 0. 0. -10315 -Ka1770min 1.7730000 0.1860000 2.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -10325 -Ns1720plu 1.7200000 0.1500000 1.5 0.5 0.5 3. 0. 0. 0. 0. 0. 31214 -Ns1720zer 1.7200000 0.1500000 1.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 32124 -Ns1720plb 1.7200000 0.1500000 1.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -31214 -Ns1720zrb 1.7200000 0.1500000 1.5 0.5 0.5 0. 0. 3. 0. 0. 0. -32124 -Ka1680zer 1.7170000 0.3220000 1.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 30313 -Ka1680zrb 1.7170000 0.3220000 1.0 0.5 0.5 0. 1. 1. 0. 0. 0. 30323 -Ka1680plu 1.7170000 0.3220000 1.0 0.5 0.5 1. 0. 0. 1. 0. 0. -30313 -Ka1680min 1.7170000 0.3220000 1.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -30323 -f01710zer 1.7150000 0.1250000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 10331 -Ns1710plu 1.7100000 0.1000000 0.5 0.5 0.5 3. 0. 0. 0. 0. 0. 42112 -Ns1710zer 1.7100000 0.1000000 0.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 42212 -Ns1710plb 1.7100000 0.1000000 0.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -42112 -Ns1710zrb 1.7100000 0.1000000 0.5 0.5 0.5 0. 0. 3. 0. 0. 0. -42212 -Ns1700plu 1.7000000 0.1000000 1.5 0.5 0.5 3. 0. 0. 0. 0. 0. 21214 -Ns1700zer 1.7000000 0.1000000 1.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 22124 -Ns1700plb 1.7000000 0.1000000 1.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -21214 -Ns1700zrb 1.7000000 0.1000000 1.5 0.5 0.5 0. 0. 3. 0. 0. 0. -22124 -rh1700plu 1.7000000 0.2400000 1.0 1. 1. 1. 0. 1. 0. 0. 0. 30213 -rh1700min 1.7000000 0.2400000 1.0 1. -1. 1. 0. 1. 0. 0. 0. -30213 -rh1700zer 1.7000000 0.2400000 1.0 1. 0. 1. 0. 1. 0. 0. 0. 30113 -Dl1700plp 1.7000000 0.3000000 1.5 1.5 1.5 3. 0. 0. 0. 0. 0. 11114 -Dl1700plu 1.7000000 0.3000000 1.5 1.5 0.5 3. 0. 0. 0. 0. 0. 12114 -Dl1700zer 1.7000000 0.3000000 1.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 12214 -Dl1700min 1.7000000 0.3000000 1.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 12224 -Dl1700ppb 1.7000000 0.3000000 1.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -11114 -Dl1700plb 1.7000000 0.3000000 1.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -12114 -Dl1700zrb 1.7000000 0.3000000 1.5 1.5 0.5 0. 0. 3. 0. 0. 0. -12214 -Dl1700mnb 1.7000000 0.3000000 1.5 1.5 1.5 0. 0. 3. 0. 0. 0. -12224 -rh1690plu 1.6910000 0.1610000 3.0 1. 1. 1. 0. 1. 0. 0. 0. 217 -rh1690min 1.6910000 0.1610000 3.0 1. -1. 1. 0. 1. 0. 0. 0. -217 -rh1690zer 1.6910000 0.1610000 0.0 1. 0. 1. 0. 1. 0. 0. 0. 117 -Lm1690zer 1.6900000 0.0600000 1.5 0. 0. 2. 1. 0. 0. 0. 0. 13124 -Lm1690zrb 1.6900000 0.0600000 1.5 0. 0. 0. 0. 2. 1. 0. 0. -13124 -Xi1690min 1.6900000 0.0290000 1.5 0.5 -0.5 1. 2. 0. 0. 0. 0. -67719 -Xi1690mnb 1.6900000 0.0290000 1.5 0.5 0.5 0. 0. 1. 2. 0. 0. 67719 -Xi1690zer 1.6900000 0.0290000 1.5 0.5 0.5 1. 2. 0. 0. 0. 0. 67718 -Xi1690zrb 1.6900000 0.0290000 1.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -67718 -Ns1680plu 1.6800000 0.1300000 2.5 0.5 0.5 3. 0. 0. 0. 0. 0. 12116 -Ns1680zer 1.6800000 0.1300000 2.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 12216 -Ns1680plb 1.6800000 0.1300000 2.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -12116 -Ns1680zrb 1.6800000 0.1300000 2.5 0.5 0.5 0. 0. 3. 0. 0. 0. -12216 -ph1680zer 1.6800000 0.1500000 1.0 0. 0. 0. 1. 0. 1. 0. 0. 100333 -Ns1675plu 1.6750000 0.1500000 2.5 0.5 0.5 3. 0. 0. 0. 0. 0. 2116 -Ns1675zer 1.6750000 0.1500000 2.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 2216 -Ns1675plb 1.6750000 0.1500000 2.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -2116 -Ns1675zrb 1.6750000 0.1500000 2.5 0.5 0.5 0. 0. 3. 0. 0. 0. -2216 -UM1672min 1.6724500 8.003e-16 1.5 0. 0. 0. 3. 0. 0. 0. 0. 3334 -UM1672mnb 1.6724500 8.003e-16 1.5 0. 0. 0. 0. 0. 3. 0. 0. -3334 -pi1670plu 1.6700000 0.2590000 2.0 1. 1. 1. 0. 1. 0. 0. 0. 10215 -pi1670min 1.6700000 0.2590000 2.0 1. -1. 1. 0. 1. 0. 0. 0. -10215 -pi1670zer 1.6700000 0.2590000 2.0 1. 0. 1. 0. 1. 0. 0. 0. 10115 -Lm1670zer 1.6700000 0.0350000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 33122 -Lm1670zrb 1.6700000 0.0350000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -33122 -Sg1670plu 1.6700000 0.0600000 1.5 1. 1. 2. 1. 0. 0. 0. 0. 13114 -Sg1670min 1.6700000 0.0600000 1.5 1. -1. 2. 1. 0. 0. 0. 0. 13214 -Sg1670zer 1.6700000 0.0600000 1.5 1. 0. 2. 1. 0. 0. 0. 0. 13224 -Sg1670plb 1.6700000 0.0600000 1.5 1. -1. 0. 0. 2. 1. 0. 0. -13114 -Sg1670mnb 1.6700000 0.0600000 1.5 1. 1. 0. 0. 2. 1. 0. 0. -13214 -Sg1670zrb 1.6700000 0.0600000 1.5 1. 0. 0. 0. 2. 1. 0. 0. -13224 -om1670zer 1.6670000 0.1680000 3.0 0. 0. 1. 0. 1. 0. 0. 0. 227 -Sg1660plu 1.6600000 0.1000000 0.5 1. 1. 2. 1. 0. 0. 0. 0. 13112 -Sg1660min 1.6600000 0.1000000 0.5 1. -1. 2. 1. 0. 0. 0. 0. 13212 -Sg1660zer 1.6600000 0.1000000 0.5 1. 0. 2. 1. 0. 0. 0. 0. 13222 -Sg1660plb 1.6600000 0.1000000 0.5 1. -1. 0. 0. 2. 1. 0. 0. -13112 -Sg1660mnb 1.6600000 0.1000000 0.5 1. 1. 0. 0. 2. 1. 0. 0. -13212 -Sg1660zrb 1.6600000 0.1000000 0.5 1. 0. 0. 0. 2. 1. 0. 0. -13222 -Ns1650plu 1.6500000 0.1500000 0.5 0.5 0.5 3. 0. 0. 0. 0. 0. 32112 -Ns1650zer 1.6500000 0.1500000 0.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 32212 -Ns1650plb 1.6500000 0.1500000 0.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -32112 -Ns1650zrb 1.6500000 0.1500000 0.5 0.5 0.5 0. 0. 3. 0. 0. 0. -32212 -om1650zer 1.6490000 0.2200000 1.0 0. 0. 1. 0. 1. 0. 0. 0. 30223 -Dl1620plp 1.6200000 0.1500000 0.5 1.5 1.5 3. 0. 0. 0. 0. 0. 1112 -Dl1620plu 1.6200000 0.1500000 0.5 1.5 0.5 3. 0. 0. 0. 0. 0. 1212 -Dl1620zer 1.6200000 0.1500000 0.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 2122 -Dl1620min 1.6200000 0.1500000 0.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 2222 -Dl1620ppb 1.6200000 0.1500000 0.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -1112 -Dl1620plb 1.6200000 0.1500000 0.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -1212 -Dl1620zrb 1.6200000 0.1500000 0.5 1.5 0.5 0. 0. 3. 0. 0. 0. -2122 -Dl1620mnb 1.6200000 0.1500000 0.5 1.5 1.5 0. 0. 3. 0. 0. 0. -2222 -Xi1620min 1.6200000 0.0300000 1.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 46653 -Xi1620mnb 1.6200000 0.0300000 1.5 0.5 0.5 0. 0. 1. 2. 0. 0. -46653 -Xi1620zer 1.6200000 0.0300000 1.5 0.5 0.5 1. 2. 0. 0. 0. 0. 45553 -Xi1620zrb 1.6200000 0.0300000 1.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -45553 -Dl1600plp 1.6000000 0.3500000 1.5 1.5 1.5 3. 0. 0. 0. 0. 0. 31114 -Dl1600plu 1.6000000 0.3500000 1.5 1.5 0.5 3. 0. 0. 0. 0. 0. 32114 -Dl1600zer 1.6000000 0.3500000 1.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 32214 -Dl1600min 1.6000000 0.3500000 1.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 32224 -Dl1600ppb 1.6000000 0.3500000 1.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -31114 -Dl1600plb 1.6000000 0.3500000 1.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -32114 -Dl1600zrb 1.6000000 0.3500000 1.5 1.5 0.5 0. 0. 3. 0. 0. 0. -32214 -Dl1600mnb 1.6000000 0.3500000 1.5 1.5 1.5 0. 0. 3. 0. 0. 0. -32224 -Lm1600zer 1.6000000 0.1500000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 23122 -Lm1600zrb 1.6000000 0.1500000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -23122 -Ns1535plu 1.5350000 0.1500000 0.5 0.5 0.5 3. 0. 0. 0. 0. 0. 22212 -Ns1535zer 1.5350000 0.1500000 0.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 22122 -Ns1535plb 1.5350000 0.1500000 0.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -22212 -Ns1535zrb 1.5350000 0.1500000 0.5 0.5 0.5 0. 0. 3. 0. 0. 0. -22122 -Xi1530min 1.5350000 0.0099000 1.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 3324 -Xi1530mnb 1.5350000 0.0099000 1.5 0.5 0.5 0. 0. 1. 2. 0. 0. -3324 -Xi1530zer 1.5318000 0.0091000 1.5 0.5 0.5 1. 2. 0. 0. 0. 0. 3314 -Xi1530zrb 1.5318000 0.0091000 1.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -3314 -f21525zer 1.5250000 0.0760000 2.0 0. 0. 1. 0. 1. 0. 0. 0. 335 -Ns1520plu 1.5200000 0.1200000 1.5 0.5 0.5 3. 0. 0. 0. 0. 0. 2124 -Ns1520zer 1.5200000 0.1200000 1.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 1214 -Ns1520plb 1.5200000 0.1200000 1.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -2124 -Ns1520zrb 1.5200000 0.1200000 1.5 0.5 0.5 0. 0. 3. 0. 0. 0. -1214 -Lm1520zer 1.5195000 0.0156000 1.5 0. 0. 2. 1. 0. 0. 0. 0. 3124 -Lm1520zrb 1.5195000 0.0156000 1.5 0. 0. 0. 0. 2. 1. 0. 0. -3124 -f01500zer 1.5070000 0.1120000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 9000223 -a01450plu 1.4740000 0.2650000 0.0 1. 1. 1. 0. 1. 0. 0. 0. 10211 -a01450min 1.4740000 0.2650000 0.0 1. -1. 1. 0. 1. 0. 0. 0. -10211 -a01450zer 1.4740000 0.2650000 0.0 1. 0. 1. 0. 1. 0. 0. 0. 10111 -rh1450plu 1.4650000 0.3100000 1.0 1. 1. 1. 0. 1. 0. 0. 0. 100213 -rh1450min 1.4650000 0.3100000 1.0 1. -1. 1. 0. 1. 0. 0. 0. -100213 -rh1450zer 1.4650000 0.3100000 1.0 1. 0. 1. 0. 1. 0. 0. 0. 100113 -Ns1440plu 1.4400000 0.3500000 0.5 0.5 0.5 3. 0. 0. 0. 0. 0. 12212 -Ns1440zer 1.4400000 0.3500000 0.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 12112 -Ns1440plb 1.4400000 0.3500000 0.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -12212 -Ns1440zrb 1.4400000 0.3500000 0.5 0.5 0.5 0. 0. 3. 0. 0. 0. -12112 -et1440zer 1.4350000 0.0650000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 100331 -f11420zer 1.4263000 0.0555000 1.0 0. 0. 1. 0. 1. 0. 0. 0. 20333 -Ka1430zer 1.4256000 0.0985000 2.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 10311 -Ka1430zrb 1.4256000 0.0985000 2.0 0.5 0.5 0. 1. 1. 0. 0. 0. -10311 -Ka1430plu 1.4256000 0.0985000 2.0 0.5 0.5 1. 0. 0. 1. 0. 0. 10321 -Ka1430min 1.4256000 0.0985000 2.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -10321 -om1420zer 1.4190000 0.1740000 1.0 0. 0. 1. 0. 1. 0. 0. 0. 100223 -Ka1410zer 1.4140000 0.2320000 1.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 203130001 -Ka1410zrb 1.4140000 0.2320000 1.0 0.5 0.5 0. 1. 1. 0. 0. 0. -203130001 -Ka1410plu 1.4140000 0.2320000 1.0 0.5 0.5 1. 0. 0. 1. 0. 0. 100323 -Ka1410min 1.4140000 0.2320000 1.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -100323 -Ka1412zer 1.4120000 0.2940000 0.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 100313 -Ka1412zrb 1.4120000 0.2940000 0.0 0.5 0.5 0. 1. 1. 0. 0. 0. -100313 -Lm1405zer 1.4060000 0.0500000 0.5 0. 0. 2. 1. 0. 0. 0. 0. 13122 -Lm1405zrb 1.4060000 0.0500000 0.5 0. 0. 0. 0. 2. 1. 0. 0. -13122 -Ka1400zer 1.4020000 0.1740000 1.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 20313 -Ka1400zrb 1.4020000 0.1740000 1.0 0.5 0.5 0. 1. 1. 0. 0. 0. -20313 -Ka1400plu 1.4020000 0.1740000 1.0 0.5 0.5 1. 0. 0. 1. 0. 0. 20323 -Ka1400min 1.4020000 0.1740000 1.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -20323 -Sg1385min 1.3872000 0.0394000 1.5 1. -1. 2. 1. 0. 0. 0. 0. 3114 -Sg1385mnb 1.3872000 0.0394000 1.5 1. 1. 0. 0. 2. 1. 0. 0. -3114 -Sg1385zer 1.3837000 0.0360000 1.5 1. 0. 2. 1. 0. 0. 0. 0. 3214 -Sg1385zrb 1.3837000 0.0360000 1.5 1. 0. 0. 0. 2. 1. 0. 0. -3214 -Sg1385plu 1.3828000 0.0358000 1.5 1. 1. 2. 1. 0. 0. 0. 0. 3224 -Sg1385plb 1.3828000 0.0358000 1.5 1. -1. 0. 0. 2. 1. 0. 0. -3224 -f01370zer 1.3500000 0.3500000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 10221 -Xi1321min 1.3213100 4.009e-16 0.5 0.5 -0.5 1. 2. 0. 0. 0. 0. 3312 -Xi1321mnb 1.3213100 4.009e-16 0.5 0.5 0.5 0. 0. 1. 2. 0. 0. -3312 -Xi1321zer 1.3148300 2.265e-16 0.5 0.5 0.5 1. 2. 0. 0. 0. 0. 3322 -Xi1321zrb 1.3148300 2.265e-16 0.5 0.5 -0.5 0. 0. 1. 2. 0. 0. -3322 -a21320plu 1.3180000 0.1070000 2.0 1. 1. 1. 0. 1. 0. 0. 0. 215 -a21320min 1.3180000 0.1070000 2.0 1. -1. 1. 0. 1. 0. 0. 0. -215 -a21320zer 1.3180000 0.1070000 2.0 1. 0. 1. 0. 1. 0. 0. 0. 115 -pi1300plu 1.3000000 0.4000000 0.0 1. 1. 1. 0. 1. 0. 0. 0. 100211 -pi1300min 1.3000000 0.4000000 0.0 1. -1. 1. 0. 1. 0. 0. 0. -100211 -pi1300zer 1.3000000 0.4000000 0.0 1. 0. 1. 0. 1. 0. 0. 0. 100111 -et1295zer 1.2970000 0.0530000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 100221 -f11285zer 1.2819000 0.0240000 1.0 0. 0. 1. 0. 1. 0. 0. 0. 20223 -f21270zer 1.2754000 0.1850000 2.0 0. 0. 1. 0. 1. 0. 0. 0. 225 -Ka1270zer 1.2730000 0.0900000 1.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 10313 -Ka1270zrb 1.2730000 0.0900000 1.0 0.5 0.5 0. 1. 1. 0. 0. 0. -10313 -Ka1270plu 1.2730000 0.0900000 1.0 0.5 0.5 1. 0. 0. 1. 0. 0. 10323 -Ka1270min 1.2730000 0.0900000 1.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -10323 -Dl1232plp 1.2320000 0.1200000 1.5 1.5 1.5 3. 0. 0. 0. 0. 0. 2224 -Dl1232plu 1.2320000 0.1200000 1.5 1.5 0.5 3. 0. 0. 0. 0. 0. 2214 -Dl1232zer 1.2320000 0.1200000 1.5 1.5 -0.5 3. 0. 0. 0. 0. 0. 2114 -Dl1232min 1.2320000 0.1200000 1.5 1.5 -1.5 3. 0. 0. 0. 0. 0. 1114 -Dl1232ppb 1.2320000 0.1200000 1.5 1.5 -1.5 0. 0. 3. 0. 0. 0. -2224 -Dl1232plb 1.2320000 0.1200000 1.5 1.5 -0.5 0. 0. 3. 0. 0. 0. -2214 -Dl1232zrb 1.2320000 0.1200000 1.5 1.5 0.5 0. 0. 3. 0. 0. 0. -2114 -Dl1232mnb 1.2320000 0.1200000 1.5 1.5 1.5 0. 0. 3. 0. 0. 0. -1114 -a11260plu 1.2300000 0.4250000 1.0 1. 1. 1. 0. 1. 0. 0. 0. 20213 -a11260min 1.2300000 0.4250000 1.0 1. -1. 1. 0. 1. 0. 0. 0. -20213 -a11260zer 1.2300000 0.4250000 1.0 1. 0. 1. 0. 1. 0. 0. 0. 20113 -b11235plu 1.2295000 0.1420000 1.0 1. 1. 1. 0. 1. 0. 0. 0. 10213 -b11235zer 1.2295000 0.1420000 1.0 1. 0. 1. 0. 1. 0. 0. 0. 10113 -b11235min 1.2295000 0.1420000 1.0 1. -1. 1. 0. 1. 0. 0. 0. -10213 -Sg1189min 1.1970000 4.442e-16 0.5 1. -1. 2. 1. 0. 0. 0. 0. 3112 -Sg1189mnb 1.1970000 4.442e-16 0.5 1. 1. 0. 0. 2. 1. 0. 0. -3112 -Sg1192zer 1.1930000 8.879e-07 0.5 1. 0. 2. 1. 0. 0. 0. 0. 3212 -Sg1192zrb 1.1930000 8.879e-07 0.5 1. 0. 0. 0. 2. 1. 0. 0. -3212 -Sg1189plu 1.1890000 8.195e-16 0.5 1. 1. 2. 1. 0. 0. 0. 0. 3222 -Sg1189plb 1.1890000 8.195e-16 0.5 1. -1. 0. 0. 2. 1. 0. 0. -3222 -h11170zer 1.1700000 0.3600000 1.0 0. 0. 1. 0. 1. 0. 0. 0. 10223 -Lm1115zer 1.1156830 2.496e-16 0.5 0. 0. 2. 1. 0. 0. 0. 0. 3122 -Lm1115zrb 1.1156830 2.496e-16 0.5 0. 0. 0. 0. 2. 1. 0. 0. -3122 -ph1020zer 1.0194170 0.0044580 1.0 0. 0. 0. 1. 0. 1. 0. 0. 333 -a00980plu 0.9848000 0.0750000 0.0 1. 1. 1. 0. 1. 0. 0. 0. 9000211 -a00980min 0.9848000 0.0750000 0.0 1. -1. 1. 0. 1. 0. 0. 0. -9000211 -a00980zer 0.9848000 0.0750000 0.0 1. 0. 1. 0. 1. 0. 0. 0. 9000111 -f00980zer 0.9800000 0.1000000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 9010221 -eta0prime 0.9577800 0.0002020 0.0 0. 0. 1. 0. 1. 0. 0. 0. 331 -ne0939zer 0.9395653 0.0000000 0.5 0.5 -0.5 3. 0. 0. 0. 0. 0. 2112 -ne0939zrb 0.9395653 0.0000000 0.5 0.5 0.5 0. 0. 3. 0. 0. 0. -2112 -pr0938plu 0.9382720 0.0000000 0.5 0.5 0.5 3. 0. 0. 0. 0. 0. 2212 -pr0938plb 0.9382720 0.0000000 0.5 0.5 -0.5 0. 0. 3. 0. 0. 0. -2212 -Ka0892zer 0.8961000 0.0507000 1.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 313 -Ka0892zrb 0.8961000 0.0507000 1.0 0.5 0.5 0. 1. 1. 0. 0. 0. -313 -Ka0892plu 0.8916600 0.0508000 1.0 0.5 0.5 1. 0. 0. 1. 0. 0. 323 -Ka0892min 0.8916600 0.0508000 1.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -323 -om0782zer 0.7825700 0.0084400 1.0 0. 0. 1. 0. 1. 0. 0. 0. 223 -rho770plu 0.7693000 0.1502000 1.0 1. 1. 1. 0. 1. 0. 0. 0. 213 -rho770min 0.7693000 0.1502000 1.0 1. -1. 1. 0. 1. 0. 0. 0. -213 -rho770zer 0.7693000 0.1502000 1.0 1. 0. 1. 0. 1. 0. 0. 0. 113 -f00600zer 0.8000000 0.8000000 0.0 0. 0. 1. 0. 1. 0. 0. 0. 9000221 -eta547zer 0.5473000 1.2900e-6 0.0 0. 0. 0.19 0.81 0.19 0.81 0. 0. 221 -Ka0492zer 0.4976720 0.5000000 0.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 311 -Ka0492zrb 0.4976720 0.5000000 0.0 0.5 0.5 0. 1. 1. 0. 0. 0. -311 -Ka0492sht 0.4976720 7.348e-15 0.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 310 -Ka0492stb 0.4976720 7.348e-15 0.0 0.5 0.5 0. 1. 1. 0. 0. 0. -310 -Ka0492lng 0.4976720 0.0000000 0.0 0.5 -0.5 1. 0. 0. 1. 0. 0. 130 -Ka0492lgb 0.4976720 0.0000000 0.0 0.5 0.5 0. 1. 1. 0. 0. 0. -130 -Ka0492plu 0.4936770 0.0000000 0.0 0.5 0.5 1. 0. 0. 1. 0. 0. 321 -Ka0492min 0.4936770 0.0000000 0.0 0.5 -0.5 0. 1. 1. 0. 0. 0. -321 -pi0139plu 0.1395699 0.0000000 0.0 1. 1. 1. 0. 1. 0. 0. 0. 211 -pi0139min 0.1395699 0.0000000 0.0 1. -1. 1. 0. 1. 0. 0. 0. -211 -pi0135zer 0.1349764 4.9230e-8 0.0 1. 0. 1. 0. 1. 0. 0. 0. 111 -dQUARK000 0.0047500 0.0000000 0.5 0.5 -0.5 1. 0. 0. 0. 0. 0. 1 -dQUARKbar 0.0047500 0.0000000 0.5 0.5 +0.5 0. 0. 1. 0. 0. 0. -1 -uQUARK000 0.0024000 0.0000000 0.5 0.5 +0.5 1. 0. 0. 0. 0. 0. 2 -uQUARKbar 0.0024000 0.0000000 0.5 0.5 -0.5 0. 0. 1. 0. 0. 0. -2 -sQUARK000 0.1040000 0.0000000 0.5 0. 0. 0. 1. 0. 0. 0. 0. 3 -sQUARKbar 0.1040000 0.0000000 0.5 0. 0. 0. 0. 0. 1. 0. 0. -3 -cQUARK000 1.2700000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 1. 0. 4 -cQUARKbar 1.2700000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 1. -4 -bQUARK000 4.2000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 5 -bQUARKbar 4.2000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -5 -tQUARK000 171.20000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 6 -tQUARKbar 171.20000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -6 -el0511min 0.0005110 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 11 -el0511plu 0.0005110 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -11 -nuel00zer 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 12 -nuel00zrb 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -12 -mu0105min 0.1056584 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 13 -mu0105plu 0.1056584 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -13 -numu00zer 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 14 -numu00zrb 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -14 -tau1777mn 1.7768400 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 15 -tau1777pl 1.7768400 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -15 -nutau0zer 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. 16 -nutau0zrb 0.0000000 0.0000000 0.5 0. 0. 0. 0. 0. 0. 0. 0. -16 -gluon0000 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 21 -gam000zer 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 22 -Z00000zer 91.187600 2.4952000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 23 -W00000plu 80.398000 2.1410000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 24 -W00000min 80.398000 2.1410000 1.0 0. 0. 0. 0. 0. 0. 0. 0. -24 -HIGGS0zer 114.40000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 25 -spcflvPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 81 -rndflvPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 82 -phsspaPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 83 -chadrnPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 84 -bhadrnPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 85 -junctnPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 88 -systemPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 90 -clsterPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 91 -stringPYT 0.0000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 92 -dd1DQUARK 0.0000000 0.0000000 1.0 0. 0. 2. 0. 0. 0. 0. 0. 1103 -ud0DQUARK 0.0000000 0.0000000 0.0 0. 0. 2. 0. 0. 0. 0. 0. 2101 -ud1DQUARK 0.0000000 0.0000000 1.0 0. 0. 2. 0. 0. 0. 0. 0. 2103 -uu1DQUARK 0.0000000 0.0000000 1.0 0. 0. 2. 0. 0. 0. 0. 0. 2203 -sd0DQUARK 0.0000000 0.0000000 0.0 0. 0. 1. 1. 0. 0. 0. 0. 3101 -sd1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 1. 0. 0. 0. 0. 3103 -su0DQUARK 0.0000000 0.0000000 0.0 0. 0. 1. 1. 0. 0. 0. 0. 3201 -su1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 1. 0. 0. 0. 0. 3203 -ss1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 2. 0. 0. 0. 0. 3303 -cd0DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 1. 0. 4101 -cu0DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 1. 0. 4201 -cs0DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 1. 0. 4301 -bd0DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 0. 0. 5101 -bu0DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 0. 0. 5201 -bs0DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 0. 0. 5301 -bc0DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 1. 0. 5401 -cd1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 1. 0. 4103 -cu1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 1. 0. 4203 -cs1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 1. 0. 4303 -cc1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 2. 0. 4403 -bd1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 0. 0. 5103 -bu1DQUARK 0.0000000 0.0000000 1.0 0. 0. 1. 0. 0. 0. 0. 0. 5203 -bs1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 0. 0. 5303 -bc1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 1. 0. 5403 -bb1DQUARK 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 5503 -dd1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 2. 0. 0. 0. -1103 -ud0DIQRKb 0.0000000 0.0000000 0.0 0. 0. 0. 0. 2. 0. 0. 0. -2101 -ud1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 2. 0. 0. 0. -2103 -uu1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 2. 0. 0. 0. -2203 -sd0DIQRKb 0.0000000 0.0000000 0.0 0. 0. 0. 0. 1. 1. 0. 0. -3101 -sd1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 1. 0. 0. -3103 -su0DIQRKb 0.0000000 0.0000000 0.0 0. 0. 0. 0. 1. 1. 0. 0. -3201 -su1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 1. 0. 0. -3203 -ss1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 2. 0. 0. -3303 -cd0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 1. -4101 -cu0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 1. -4201 -cs0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 1. 0. 1. -4301 -bd0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 0. -5101 -bu0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 0. -5201 -bs0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 1. 0. 0. -5301 -bc0DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 1. -5401 -cd1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 1. -4103 -cu1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 1. -4203 -cs1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 1. 0. 1. -4303 -cc1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 2. -4403 -bd1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 0. -5103 -bu1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 1. 0. 0. 0. -5203 -bs1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 1. 0. 0. -5303 -bc1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 1. -5403 -bb1DIQRKb 0.0000000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. -5503 -D1869plus 1.8696200 3.977e-12 0.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 411 -D1869minu 1.8696200 3.977e-12 0.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -411 -D2272plus 2.2720000 0.0500000 0.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 10411 -D2272minu 2.2720000 0.0500000 0.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -10411 -D2010plus 2.0102700 0.0960e-3 1.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 413 -D2010minu 2.0102700 0.0960e-3 1.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -413 -D12424plu 2.4240000 0.0200000 1.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 10413 -D12424min 2.4240000 0.0200000 1.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -10413 -D12372plu 2.3720000 0.0500000 1.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 20413 -D12372min 2.3720000 0.0500000 1.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -20413 -D01865zer 1.8648400 1.008e-11 0.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 421 -D01865zrb 1.8648400 1.008e-11 0.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -421 -D02272zer 2.2720000 0.0500000 0.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 10421 -D02272zrb 2.2720000 0.0500000 0.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -10421 -D02007zer 2.0069700 0.0021000 1.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 423 -D02007zrb 2.0069700 0.0021000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -423 -D12424zer 2.4240000 0.0020000 1.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 10423 -D12424zrb 2.4240000 0.0020000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -10423 -D12372zer 2.3720000 0.0500000 1.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 20423 -D12372zrb 2.3720000 0.0500000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -20423 -Ds1968plu 1.9684900 8.271e-12 0.0 0. 0. 0. 0. 0. 1. 1. 0. 431 -Ds1968min 1.9684900 8.271e-12 0.0 0. 0. 0. 1. 0. 0. 0. 1. -431 -Ds2317pl0 2.3178000 0.0038000 0.0 0. 0. 0. 0. 0. 1. 1. 0. 10431 -Ds2317mn0 2.3178000 0.0038000 0.0 0. 0. 0. 1. 0. 0. 0. 1. -10431 -Ds2112plu 2.1123000 0.0019000 1.0 0. 0. 0. 0. 0. 1. 1. 0. 433 -Ds2112min 2.1123000 0.0019000 1.0 0. 0. 0. 1. 0. 0. 0. 1. -433 -Ds2460pl1 2.4596000 0.0035000 1.0 0. 0. 0. 0. 0. 1. 1. 0. 10433 -Ds2460mn1 2.4596000 0.0035000 1.0 0. 0. 0. 1. 0. 0. 0. 1. -10433 -Ds2560pl1 2.5600000 0.0500000 1.0 0. 0. 0. 0. 0. 1. 1. 0. 20433 -Ds2560mn1 2.5600000 0.0500000 1.0 0. 0. 0. 1. 0. 0. 0. 1. -20433 -D22461zer 2.4611000 0.0430000 2.0 0.5 -0.5 0. 0. 1. 0. 1. 0. 425 -D22461zrb 2.4611000 0.0430000 2.0 0.5 +0.5 1. 0. 0. 0. 0. 1. -425 -D22460plu 2.4601000 0.0370000 2.0 0.5 +0.5 0. 0. 1. 0. 1. 0. 415 -D22460min 2.4601000 0.0370000 2.0 0.5 -0.5 1. 0. 0. 0. 0. 1. -415 -Ds2573pl2 2.5726000 0.0200000 2.0 0. 0. 0. 0. 0. 1. 1. 0. 435 -Ds2573mn2 2.5726000 0.0200000 2.0 0. 0. 0. 1. 0. 0. 0. 1. -435 -etac2980z 2.9803000 0.0267000 0.0 0. 0. 0. 0. 0. 0. 1. 1. 441 -chic3414z 3.4147500 0.0102000 0.0 0. 0. 0. 0. 0. 0. 1. 1. 10441 -jpsi3097z 3.0969160 0.0000932 1.0 0. 0. 0. 0. 0. 0. 1. 1. 443 -h1c3460zr 3.4600000 0.0100000 0.0 0. 0. 0. 0. 0. 0. 1. 1. 10443 -chic3511z 3.5106600 0.0008900 1.0 0. 0. 0. 0. 0. 0. 1. 1. 20443 -psiprime0 3.6860900 0.0003170 1.0 0. 0. 0. 0. 0. 0. 1. 1. 100443 -chic3556z 3.5562000 0.0020300 2.0 0. 0. 0. 0. 0. 0. 1. 1. 445 -Lc2286plu 2.2864600 2.068e-11 0.5 0.0 0.0 2. 0. 0. 0. 1. 0. 4122 -Lc2286plb 2.2864600 2.068e-11 0.5 0.0 0.0 0. 0. 2. 0. 0. 1. -4122 -Sc2455zer 2.4537600 0.0022000 0.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4112 -Sc2455zrb 2.4537600 0.0022000 0.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4112 -Sc2455plu 2.4529000 0.0046000 0.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4212 -Sc2455plb 2.4529000 0.0046000 0.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4212 -Sc2455ppl 2.4540200 0.0022300 0.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4222 -Sc2455ppb 2.4540200 0.0022300 0.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4222 -Sc2520zer 2.5180000 0.0161000 1.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4114 -Sc2520zrb 2.5180000 0.0161000 1.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4114 -Sc2520plu 2.5175000 0.0170000 1.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4214 -Sc2520plb 2.5175000 0.0170000 1.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4214 -Sc2520ppl 2.5184000 0.0149000 1.5 1.0 0.0 2. 0. 0. 0. 1. 0. 4224 -Sc2520ppb 2.5184000 0.0149000 1.5 1.0 0.0 0. 2. 0. 0. 0. 1. -4224 -Xc2468plu 2.4679000 9.357e-12 0.5 0.5 0.5 1. 1. 0. 0. 1. 0. 4232 -Xc2468plb 2.4679000 9.357e-12 0.5 0.5 -0.5 0. 0. 1. 1. 0. 1. -4232 -Xc2471zer 2.4710000 3.693e-11 0.5 0.5 -0.5 1. 1. 0. 0. 1. 0. 4132 -Xc2471zrb 2.4710000 3.693e-11 0.5 0.5 0.5 0. 0. 1. 1. 0. 1. -4132 -Xc2578plu 2.5757000 0.0000000 0.5 0.5 0.5 1. 1. 0. 0. 1. 0. 4322 -Xc2578plb 2.5757000 0.0000000 0.5 0.5 -0.5 0. 0. 1. 1. 0. 1. -4322 -Xc2578zer 2.5780000 0.0000000 0.5 0.5 -0.5 1. 1. 0. 0. 1. 0. 4312 -Xc2578zrb 2.5780000 0.0000000 0.5 0.5 0.5 0. 0. 1. 1. 0. 1. -4312 -Xc2645plu 2.6466000 0.0031000 1.5 0.5 0.5 1. 1. 0. 0. 1. 0. 4324 -Xc2645plb 2.6466000 0.0031000 1.5 0.5 -0.5 0. 0. 1. 1. 0. 1. -4324 -Xc2645zer 2.6461000 0.0055000 1.5 0.5 -0.5 1. 1. 0. 0. 1. 0. 4314 -Xc2645zrb 2.6461000 0.0055000 1.5 0.5 0.5 0. 0. 1. 1. 0. 1. -4314 -Oc2697zer 2.6975000 5.994e-11 0.5 0.0 0.0 0. 2. 0. 0. 1. 0. 4332 -Oc2697zrb 2.6975000 5.994e-11 0.5 0.0 0.0 0. 0. 0. 2. 0. 1. -4332 -Oc2770zer 2.7683000 0.0000000 1.5 0.0 0.0 0. 2. 0. 0. 1. 0. 4334 -Oc2770zrb 2.6975000 0.0000000 1.5 0.0 0.0 0. 0. 0. 2. 0. 1. -4334 -B05280zer 5.2795300 2.703e-12 0.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 511 -B05280zrb 5.2795300 2.703e-12 0.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -511 -B05680zer 5.6800000 0.0500000 0.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 10511 -B05680zrb 5.6800000 0.0500000 0.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -10511 -B15325zer 5.3251000 0.0000000 1.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 513 -B15325zrb 5.3251000 0.0000000 1.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -513 -B15730zer 5.7300000 0.0500000 1.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 10513 -B15730zrb 5.7300000 0.0500000 1.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -10513 -B15780zer 5.7800000 0.0500000 1.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 20513 -B15780zrb 5.7800000 0.0500000 1.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -20513 -B25830zer 5.8300000 0.0200000 2.0 0.5 +0.5 0. 0. 1. 0. 0. 0. 515 -B25325zrb 5.3251000 0.0000000 2.0 0.5 -0.5 1. 0. 0. 0. 0. 0. -515 -B05280plu 5.2791500 2.525e-12 0.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 521 -B05280min 5.2791500 2.525e-12 0.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -521 -B05680plu 5.6800000 0.0500000 0.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 10521 -B05680min 5.6800000 0.0500000 0.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -10521 -B15325plu 5.3251000 0.0000000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 523 -B15325min 5.3251000 0.0000000 1.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -523 -B15730plu 5.7300000 0.0500000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 10523 -B15730min 5.7300000 0.0500000 1.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -10523 -B15780plu 5.7800000 0.0500000 1.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 20523 -B15780min 5.7800000 0.0500000 1.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -20523 -B25830plu 5.8300000 0.0200000 2.0 0.5 +0.5 1. 0. 0. 0. 0. 0. 525 -B25830min 5.8300000 0.0200000 2.0 0.5 -0.5 0. 0. 1. 0. 0. 0. -525 -B0s5366zr 5.3663000 2.813e-12 0.0 0. 0. 0. 1. 0. 0. 0. 0. 531 -B0s5366zb 5.3663000 2.813e-12 0.0 0. 0. 0. 0. 0. 1. 0. 0. -531 -B0s5920zr 5.9200000 0.0500000 0.0 0. 0. 0. 1. 0. 0. 0. 0. 10531 -B0s5920zb 5.9200000 0.0500000 0.0 0. 0. 0. 0. 0. 1. 0. 0. -10531 -B1s5413zr 5.4128000 0.0000000 1.0 0. 0. 0. 1. 0. 0. 0. 0. 533 -B1s5413zb 5.4128000 0.0000000 1.0 0. 0. 0. 0. 0. 1. 0. 0. -533 -B1s5970zr 5.9700000 0.0500000 1.0 0. 0. 0. 1. 0. 0. 0. 0. 10533 -B1s5970zb 5.9700000 0.0500000 1.0 0. 0. 0. 0. 0. 1. 0. 0. -10533 -B1s6020zr 6.0200000 0.0500000 1.0 0. 0. 0. 1. 0. 0. 0. 0. 20533 -B1s6020zb 6.0200000 0.0500000 1.0 0. 0. 0. 0. 0. 1. 0. 0. -20533 -B2s6070zr 6.0700000 0.0200000 2.0 0. 0. 0. 1. 0. 0. 0. 0. 535 -B2s6070zb 6.0700000 0.0200000 2.0 0. 0. 0. 0. 0. 1. 0. 0. -535 -B0c6276pl 6.2760000 8.991e-12 0.0 0. 0. 0. 0. 0. 0. 1. 0. 541 -B0c6276mn 6.2760000 8.991e-12 0.0 0. 0. 0. 0. 0. 0. 0. 1. -541 -B0c7250pl 7.2500000 0.0500000 0.0 0. 0. 0. 0. 0. 0. 1. 0. 10541 -B0c7250mn 6.2500000 0.0500000 0.0 0. 0. 0. 0. 0. 0. 0. 1. -10541 -B1c6602pl 6.6020000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 1. 0. 543 -B1c6602mn 6.6020000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 1. -543 -B1c7300pl 7.3000000 0.0500000 1.0 0. 0. 0. 0. 0. 0. 1. 0. 10543 -B1c7300mn 7.3000000 0.0500000 1.0 0. 0. 0. 0. 0. 0. 0. 1. -10543 -B1cSTARpl 7.3000000 0.0500000 1.0 0. 0. 0. 0. 0. 0. 1. 0. 20543 -B1cSTARmn 7.3000000 0.0500000 1.0 0. 0. 0. 0. 0. 0. 0. 1. -20543 -B2c7350pl 7.3500000 0.0200000 2.0 0. 0. 0. 0. 0. 0. 1. 0. 545 -B2c7350mn 7.3500000 0.0200000 2.0 0. 0. 0. 0. 0. 0. 0. 1. -545 -etab0zero 9.4000000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 551 -chib0ZERO 9.8598000 0.0000000 0.0 0. 0. 0. 0. 0. 0. 0. 0. 10551 -upsil9460 9.4603000 0.0000540 1.0 0. 0. 0. 0. 0. 0. 0. 0. 553 -h1b9875zr 9.8750000 0.0100000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 10553 -chi1b9875 9.8919000 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 20553 -chi2b9913 9.9132000 0.0000000 2.0 0. 0. 0. 0. 0. 0. 0. 0. 555 -upsilPrim 10.023300 0.0000000 1.0 0. 0. 0. 0. 0. 0. 0. 0. 100553 -Lb5641zer 5.6410000 0.0000000 0.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5122 -Lb5641zrb 5.6410000 0.0000000 0.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5122 -Sb5800min 5.8000000 0.0000000 0.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5112 -Sb5800mnb 5.8000000 0.0000000 0.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5112 -Sb5810min 5.8100000 0.0000000 1.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5114 -Sb5810mnb 5.8100000 0.0000000 1.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5114 -Sb5800zer 5.8000000 0.0000000 0.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5212 -Sb5800zrb 5.8000000 0.0000000 0.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5212 -Sb5810zer 5.8100000 0.0000000 1.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5214 -Sb5810zrb 5.8100000 0.0000000 1.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5214 -Sb5800plu 5.8000000 0.0000000 0.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5222 -Sb5800plb 5.8000000 0.0000000 0.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5222 -Sb5810plu 5.8100000 0.0000000 1.5 0.0 0.0 2. 0. 0. 0. 0. 0. 5224 -Sb5810plb 5.8100000 0.0000000 1.5 0.0 0.0 0. 0. 2. 0. 0. 0. -5224 -Xb5840min 5.8400000 0.0000000 0.5 0.5 -0.5 1. 1. 0. 0. 0. 0. 5132 -Xb5840plu 5.8400000 0.0000000 0.5 0.5 0.5 0. 0. 1. 1. 0. 0. -5132 -Xbp5960mn 5.9600000 0.0000000 0.5 0.5 -0.5 1. 1. 0. 0. 0. 0. 5312 -Xbp5960pl 5.9600000 0.0000000 0.5 0.5 0.5 0. 0. 1. 1. 0. 0. -5312 -Xbp5970mn 5.9700000 0.0000000 1.5 0.5 -0.5 1. 1. 0. 0. 0. 0. 5314 -Xbp5970pl 5.9700000 0.0000000 1.5 0.5 0.5 0. 0. 1. 1. 0. 0. -5314 -Xb5840zer 5.8400000 0.0000000 0.5 0.5 0.5 1. 1. 0. 0. 0. 0. 5232 -Xb5840zrb 5.8400000 0.0000000 0.5 0.5 -0.5 0. 0. 1. 1. 0. 0. -5232 -Xbp5960zr 5.9600000 0.0000000 0.5 0.5 0.5 1. 1. 0. 0. 0. 0. 5322 -Xbp5960zb 5.9600000 0.0000000 0.5 0.5 -0.5 0. 0. 1. 1. 0. 0. -5322 -Xbp5970zr 5.9700000 0.0000000 1.5 0.5 0.5 1. 1. 0. 0. 0. 0. 5324 -Xbp5970zb 5.9700000 0.0000000 1.5 0.5 -0.5 0. 0. 1. 1. 0. 0. -5324 -Ob6120min 6.1200000 0.0000000 0.5 0.0 0.0 0. 2. 0. 0. 0. 0. 5332 -Ob6120plu 6.1200000 0.0000000 0.5 0.0 0.0 0. 0. 0. 2. 0. 0. -5332 -Ob6130min 6.1300000 0.0000000 1.5 0.0 0.0 0. 2. 0. 0. 0. 0. 5334 -Ob6130plu 6.1300000 0.0000000 1.5 0.0 0.0 0. 0. 0. 2. 0. 0. -5334 -Xbc7006zr 7.0057500 0.0000000 0.5 0.5 -0.5 1. 0. 0. 0. 1. 0. 5142 -Xbc7006zb 7.0057500 0.0000000 0.5 0.5 0.5 0. 0. 1. 0. 0. 1. -5142 -Xbc7006pl 7.0057500 0.0000000 0.5 0.5 0.5 1. 0. 0. 0. 1. 0. 5242 -Xbc7006mn 7.0057500 0.0000000 0.5 0.5 -0.5 0. 0. 1. 0. 0. 1. -5242 -Obc7006pl 7.1909900 0.0000000 0.5 0.0 0.0 0. 1. 0. 0. 1. 0. 5342 -Obc7006mn 7.1909900 0.0000000 0.5 0.0 0.0 0. 0. 0. 1. 0. 1. -5342 diff --git a/GeneratorInterface/Hydjet2Interface/data/tabledecay.txt b/GeneratorInterface/Hydjet2Interface/data/tabledecay.txt deleted file mode 100644 index 904190c33136d..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/data/tabledecay.txt +++ /dev/null @@ -1,2327 +0,0 @@ -9297 2212 211 0 0.1 -9297 2214 211 0 0.08 -9297 2224 111 0 0.12 -9297 2212 213 0 0.7 -9298 2224 -211 0 0.08 -9298 2114 211 0 0.106667 -9298 2214 111 0 0.0133333 -9298 2112 211 0 0.0333330 -9298 2212 111 0 0.0666667 -9298 2112 213 0 0.233333 -9298 2212 113 0 0.466667 -9299 2214 -211 0 0.106667 -9299 1114 211 0 0.08 -9299 2114 111 0 0.0133333 -9299 2212 -211 0 0.0333333 -9299 2112 111 0 0.0666664 -9299 2212 -213 0 0.233333 -9299 2112 113 0 0.466667 -9300 2114 -211 0 0.08 -9300 1114 111 0 0.12 -9300 2112 -211 0 0.1 -9300 2112 -213 0 0.7 --9297 -2212 -211 0 0.1 --9297 -2214 -211 0 0.08 --9297 -2224 111 0 0.12 --9297 -2212 -213 0 0.7 --9298 -2224 211 0 0.08 --9298 -2114 -211 0 0.106667 --9298 -2214 111 0 0.0133333 --9298 -2112 -211 0 0.0333330 --9298 -2212 111 0 0.0666667 --9298 -2112 -213 0 0.233333 --9298 -2212 113 0 0.466667 --9299 -2214 211 0 0.106667 --9299 -1114 -211 0 0.08 --9299 -2114 111 0 0.0133333 --9299 -2212 211 0 0.0333333 --9299 -2112 111 0 0.0666664 --9299 -2212 213 0 0.233333 --9299 -2112 113 0 0.466667 --9300 -2114 211 0 0.08 --9300 -1114 111 0 0.12 --9300 -2112 211 0 0.1 --9300 -2112 213 0 0.7 -40225 333 333 0 1 -30225 333 333 0 1 -9000 3322 -321 0 1 --9000 -3322 321 0 1 -9401 211 2112 0 0.666667 -9401 111 2212 0 0.333333 --9401 -211 -2112 0 0.666667 --9401 111 -2212 0 0.333333 -9400 -211 2212 0 0.666667 -9400 111 2112 0 0.333333 --9400 211 -2212 0 0.666667 --9400 111 -2112 0 0.333333 -4028 -311 2212 0 0.1 -4028 3122 211 0 0.45 -4028 3124 211 0 0 -4028 111 3224 0 0 -4028 211 3214 0 0 -4028 111 3222 0 0.225 -4028 211 3212 0 0.225 -4028 2224 -321 0 0 -4028 2214 -311 0 0 -4028 -313 2212 0 0 -4028 321 3322 0 0 -4228 -311 2112 0 0.05 -4228 -321 2212 0 0.05 -4228 3122 111 0 0.45 -4228 3124 111 0 0 -4228 211 3114 0 0 -4228 -211 3224 0 0 -4228 211 3112 0 0.225 -4228 -211 3222 0 0.225 -4228 2214 -321 0 0 -4228 2114 -311 0 0 -4228 -313 2112 0 0 -4228 -323 2212 0 0 -4228 321 3312 0 0 -4228 311 3322 0 0 -4128 -321 2112 0 0.1 -4128 3122 -211 0 0.45 -4128 3124 -211 0 0 -4128 111 3114 0 0 -4128 -211 3214 0 0 -4128 111 3112 0 0.225 -4128 -211 3212 0 0.225 -4128 2114 -321 0 0 -4128 1114 -311 0 0 -4128 -323 2112 0 0 -4128 311 3312 0 0 --4028 311 -2212 0 0.1 --4028 -3122 -211 0 0.45 --4028 -3124 -211 0 0 --4028 111 -3224 0 0 --4028 -211 -3214 0 0 --4028 111 -3222 0 0.225 --4028 -211 -3212 0 0.225 --4028 -2224 321 0 0 --4028 -2214 311 0 0 --4028 313 -2212 0 0 --4028 -321 -3322 0 0 --4228 311 -2112 0 0.05 --4228 321 -2212 0 0.05 --4228 -3122 111 0 0.45 --4228 -3124 111 0 0 --4228 -211 -3114 0 0 --4228 211 -3224 0 0 --4228 -211 -3112 0 0.225 --4228 211 -3222 0 0.225 --4228 -2214 321 0 0 --4228 -2114 311 0 0 --4228 313 -2112 0 0 --4228 323 -2212 0 0 --4228 -321 -3312 0 0 --4228 -311 -3322 0 0 --4128 321 -2112 0 0.1 --4128 -3122 211 0 0.45 --4128 -3124 211 0 0 --4128 111 -3114 0 0 --4128 211 -3214 0 0 --4128 111 -3112 0 0.225 --4128 211 -3212 0 0.225 --4128 -2114 321 0 0 --4128 -1114 311 0 0 --4128 323 -2112 0 0 --4128 -311 -3312 0 0 -5128 211 2112 0 0.666667 -5128 111 2212 0 0.333333 --5128 -211 -2112 0 0.666667 --5128 111 -2212 0 0.333333 -5218 -211 2212 0 0.666667 -5218 111 2112 0 0.333333 --5218 211 -2212 0 0.666667 --5218 111 -2112 0 0.333333 -31280001 211 2112 0 0.666667 -31280001 111 2212 0 0.333333 --31280001 -211 -2112 0 0.666667 --31280001 111 -2212 0 0.333333 -32180001 -211 2212 0 0.666667 -32180001 111 2112 0 0.333333 --32180001 211 -2212 0 0.666667 --32180001 111 -2112 0 0.333333 -1218 211 2112 0 0.666667 -1218 111 2212 0 0.333333 --1218 -211 -2112 0 0.666667 --1218 111 -2212 0 0.333333 -2128 -211 2212 0 0.666667 -2128 111 2112 0 0.333333 --2128 211 -2212 0 0.666667 --2128 111 -2112 0 0.333333 -3128 -311 2112 0 0.1 -3128 -321 2212 0 0.1 -3128 -313 2112 0 0.25 -3128 -323 2212 0 0.25 -3128 211 3112 0 0.1 -3128 -211 3222 0 0.1 -3128 111 3212 0 0.1 --3128 311 -2112 0 0.1 --3128 321 -2212 0 0.1 --3128 313 -2112 0 0.25 --3128 323 -2212 0 0.25 --3128 -211 -3112 0 0.1 --3128 211 -3222 0 0.1 --3128 111 -3212 0 0.1 -219 321 -311 0 0.3333 -219 211 211 -211 0.3333 -219 211 221 0 0.3334 --219 -321 311 0 0.3333 --219 -211 211 -211 0.3333 --219 -211 221 0 0.3334 -119 321 -321 0 0.1667 -119 311 -311 0 0.1667 -119 111 211 -211 0.3333 -119 111 221 0 0.3333 --8901 -311 3122 0 0.2 --8901 -321 3222 0 0.533333 --8901 -311 3212 0 0.266667 -8901 -321 3122 0 0.2 -8901 -311 3112 0 0.533333 -8901 -321 3212 0 0.266667 --8900 311 -3122 0 0.2 --8900 321 -3222 0 0.533333 --8900 311 -3212 0 0.266667 -8900 321 -3122 0 0.2 -8900 311 -3112 0 0.533333 -8900 321 -3212 0 0.266667 -3118 -311 2212 0 0.23 -3118 3122 211 0 0.22 -3118 3124 211 0 0.16 -3118 111 3224 0 0.055 -3118 211 3214 0 0.055 -3118 111 3222 0 0.04 -3118 211 3212 0 0.04 -3118 2224 -321 0 0.12 -3118 2214 -311 0 0.04 -3118 -313 2212 0 0.03 -3118 321 3322 0 0.01 -3228 -311 2112 0 0.115 -3228 -321 2212 0 0.115 -3228 3122 111 0 0.22 -3228 3124 111 0 0.16 -3228 211 3114 0 0.055 -3228 -211 3224 0 0.055 -3228 211 3112 0 0.04 -3228 -211 3222 0 0.04 -3228 2214 -321 0 0.08 -3228 2114 -311 0 0.08 -3228 -313 2112 0 0.015 -3228 -323 2212 0 0.015 -3228 321 3312 0 0.005 -3228 311 3322 0 0.005 -3218 -321 2112 0 0.23 -3218 3122 -211 0 0.22 -3218 3124 -211 0 0.16 -3218 111 3114 0 0.055 -3218 -211 3214 0 0.055 -3218 111 3112 0 0.04 -3218 -211 3212 0 0.04 -3218 2114 -321 0 0.04 -3218 1114 -311 0 0.12 -3218 -323 2112 0 0.03 -3218 311 3312 0 0.01 --3118 311 -2212 0 0.23 --3118 -3122 -211 0 0.22 --3118 -3124 -211 0 0.16 --3118 111 -3224 0 0.055 --3118 -211 -3214 0 0.055 --3118 111 -3222 0 0.04 --3118 -211 -3212 0 0.04 --3118 -2224 321 0 0.12 --3118 -2214 311 0 0.04 --3118 313 -2212 0 0.03 --3118 -321 -3322 0 0.01 --3228 311 -2112 0 0.115 --3228 321 -2212 0 0.115 --3228 -3122 111 0 0.22 --3228 -3124 111 0 0.16 --3228 -211 -3114 0 0.055 --3228 211 -3224 0 0.055 --3228 -211 -3112 0 0.04 --3228 211 -3222 0 0.04 --3228 -2214 321 0 0.08 --3228 -2114 311 0 0.08 --3228 313 -2112 0 0.015 --3228 323 -2212 0 0.015 --3228 -321 -3312 0 0.005 --3228 -311 -3322 0 0.005 --3218 321 -2112 0 0.23 --3218 -3122 211 0 0.22 --3218 -3124 211 0 0.16 --3218 111 -3114 0 0.055 --3218 211 -3214 0 0.055 --3218 111 -3112 0 0.04 --3218 211 -3212 0 0.04 --3218 -2114 321 0 0.04 --3218 -1114 311 0 0.12 --3218 323 -2112 0 0.03 --3218 -311 -3312 0 0.01 -1118 2212 211 0 0.5 -1118 2214 211 0 0.16 -1118 2224 111 0 0.24 -1118 2212 213 0 0.1 -2118 2224 -211 0 0.16 -2118 2114 211 0 0.213333 -2118 2214 111 0 0.0266668 -2118 2112 211 0 0.166667 -2118 2212 111 0 0.333333 -2118 2112 213 0 0.0333334 -2118 2212 113 0 0.0666668 -2218 2214 -211 0 0.213333 -2218 1114 211 0 0.16 -2218 2114 111 0 0.0266668 -2218 2212 -211 0 0.166667 -2218 2112 111 0 0.333333 -2218 2212 -213 0 0.0333334 -2218 2112 113 0 0.0666668 -2228 2114 -211 0 0.16 -2228 1114 111 0 0.24 -2228 2112 -211 0 0.5 -2228 2112 -213 0 0.1 --1118 -2212 -211 0 0.5 --1118 -2214 -211 0 0.16 --1118 -2224 111 0 0.24 --1118 -2212 -213 0 0.1 --2118 -2224 211 0 0.16 --2118 -2114 -211 0 0.213333 --2118 -2214 111 0 0.0266668 --2118 -2112 -211 0 0.166667 --2118 -2212 111 0 0.333333 --2118 -2112 -213 0 0.0333334 --2118 -2212 113 0 0.0666668 --2218 -2214 211 0 0.213333 --2218 -1114 -211 0 0.16 --2218 -2114 111 0 0.0266668 --2218 -2212 211 0 0.166667 --2218 -2112 111 0 0.333333 --2218 -2212 213 0 0.0333334 --2218 -2112 113 0 0.0666668 --2228 -2114 211 0 0.16 --2228 -1114 111 0 0.24 --2228 -2112 211 0 0.5 --2228 -2112 213 0 0.1 -67000 -311 3122 0 0.5 -67000 211 3312 0 0.333333 -67000 111 3322 0 0.166667 -67001 -321 3122 0 0.5 -67001 111 3312 0 0.166667 -67001 -211 3322 0 0.333333 --67000 311 -3122 0 0.5 --67000 -211 -3312 0 0.333333 --67000 111 -3322 0 0.166667 --67001 321 -3122 0 0.5 --67001 111 -3312 0 0.166667 --67001 211 -3322 0 0.333333 -23114 -311 2212 0 0.1 -23114 3122 211 0 0.15 -23114 3124 211 0 0.15 -23114 111 3224 0 0.075 -23114 211 3214 0 0.075 -23114 111 3222 0 0.075 -23114 211 3212 0 0.075 -23114 2224 -321 0 0.1125 -23114 2214 -311 0 0.0375 -23114 -313 2212 0 0.15 -23224 -311 2112 0 0.05 -23224 -321 2212 0 0.05 -23224 3122 111 0 0.15 -23224 3124 111 0 0.15 -23224 211 3114 0 0.075 -23224 -211 3224 0 0.075 -23224 211 3112 0 0.075 -23224 -211 3222 0 0.075 -23224 2214 -321 0 0.075 -23224 2114 -311 0 0.075 -23224 -313 2112 0 0.075 -23224 -323 2212 0 0.075 -23214 -321 2112 0 0.1 -23214 3122 -211 0 0.15 -23214 3124 -211 0 0.15 -23214 111 3114 0 0.075 -23214 -211 3214 0 0.075 -23214 111 3112 0 0.075 -23214 -211 3212 0 0.075 -23214 2114 -321 0 0.0375 -23214 1114 -311 0 0.1125 -23214 -323 2112 0 0.15 --23114 311 -2212 0 0.1 --23114 -3122 -211 0 0.15 --23114 -3124 -211 0 0.15 --23114 111 -3224 0 0.075 --23114 -211 -3214 0 0.075 --23114 111 -3222 0 0.075 --23114 -211 -3212 0 0.075 --23114 -2224 321 0 0.1125 --23114 -2214 311 0 0.0375 --23114 313 -2212 0 0.15 --23224 311 -2112 0 0.05 --23224 321 -2212 0 0.05 --23224 -3122 111 0 0.15 --23224 -3124 111 0 0.15 --23224 -211 -3114 0 0.075 --23224 211 -3224 0 0.075 --23224 -211 -3112 0 0.075 --23224 211 -3222 0 0.075 --23224 -2214 321 0 0.075 --23224 -2114 311 0 0.075 --23224 313 -2112 0 0.075 --23224 323 -2212 0 0.075 --23214 321 -2112 0 0.1 --23214 -3122 211 0 0.15 --23214 -3124 211 0 0.15 --23214 111 -3114 0 0.075 --23214 211 -3214 0 0.075 --23214 111 -3112 0 0.075 --23214 211 -3212 0 0.075 --23214 -2114 321 0 0.0375 --23214 -1114 311 0 0.1125 --23214 323 -2112 0 0.15 -11116 2212 211 0 0.1 -11116 2214 211 0 0.08 -11116 2224 111 0 0.12 -11116 2212 213 0 0.7 -11216 2224 -211 0 0.08 -11216 2114 211 0 0.106667 -11216 2214 111 0 0.0133332 -11216 2112 211 0 0.0333332 -11216 2212 111 0 0.0666666 -11216 2112 213 0 0.233333 -11216 2212 113 0 0.466667 -12126 2214 -211 0 0.106667 -12126 1114 211 0 0.08 -12126 2114 111 0 0.0133332 -12126 2212 -211 0 0.0333332 -12126 2112 111 0 0.0666666 -12126 2212 -213 0 0.233333 -12126 2112 113 0 0.466667 -12226 2114 -211 0 0.08 -12226 1114 111 0 0.12 -12226 2112 -211 0 0.1 -12226 2112 -213 0 0.7 --11116 -2212 -211 0 0.1 --11116 -2214 -211 0 0.08 --11116 -2224 111 0 0.12 --11116 -2212 -213 0 0.7 --11216 -2224 211 0 0.08 --11216 -2114 -211 0 0.106667 --11216 -2214 111 0 0.0133332 --11216 -2112 -211 0 0.0333332 --11216 -2212 111 0 0.0666666 --11216 -2112 -213 0 0.233333 --11216 -2212 113 0 0.466667 --12126 -2214 211 0 0.106667 --12126 -1114 -211 0 0.08 --12126 -2114 111 0 0.0133332 --12126 -2212 211 0 0.0333332 --12126 -2112 111 0 0.0666666 --12126 -2212 213 0 0.233333 --12126 -2112 113 0 0.466667 --12226 -2114 211 0 0.08 --12226 -1114 111 0 0.12 --12226 -2112 211 0 0.1 --12226 -2112 213 0 0.7 -21114 2212 211 0 0.1 -21114 2214 211 0 0.08 -21114 2224 111 0 0.12 -21114 2212 213 0 0.7 -22114 2224 -211 0 0.08 -22114 2114 211 0 0.106667 -22114 2214 111 0 0.0133332 -22114 2112 211 0 0.0333332 -22114 2212 111 0 0.0666666 -22114 2112 213 0 0.233333 -22114 2212 113 0 0.466667 -22214 2214 -211 0 0.106667 -22214 1114 211 0 0.08 -22214 2114 111 0 0.0133332 -22214 2212 -211 0 0.0333332 -22214 2112 111 0 0.0666666 -22214 2212 -213 0 0.233333 -22214 2112 113 0 0.466667 -22224 2114 -211 0 0.08 -22224 1114 111 0 0.12 -22224 2112 -211 0 0.1 -22224 2112 -213 0 0.7 --21114 -2212 -211 0 0.1 --21114 -2214 -211 0 0.08 --21114 -2224 111 0 0.12 --21114 -2212 -213 0 0.7 --22114 -2224 211 0 0.08 --22114 -2114 -211 0 0.106667 --22114 -2214 111 0 0.0133332 --22114 -2112 -211 0 0.0333332 --22114 -2212 111 0 0.0666666 --22114 -2112 -213 0 0.233333 --22114 -2212 113 0 0.466667 --22214 -2214 211 0 0.106667 --22214 -1114 -211 0 0.08 --22214 -2114 111 0 0.0133332 --22214 -2212 211 0 0.0333332 --22214 -2112 111 0 0.0666666 --22214 -2212 213 0 0.233333 --22214 -2112 113 0 0.466667 --22224 -2114 211 0 0.08 --22224 -1114 111 0 0.12 --22224 -2112 211 0 0.1 --22224 -2112 213 0 0.7 -13116 -311 2212 0 0.1 -13116 3122 211 0 0.4375 -13116 111 3224 0 0.0125 -13116 211 3214 0 0.0125 -13116 111 3222 0 0.21875 -13116 211 3212 0 0.21875 -13226 -311 2112 0 0.05 -13226 -321 2212 0 0.05 -13226 3122 111 0 0.4375 -13226 211 3114 0 0.0125 -13226 -211 3224 0 0.0125 -13226 211 3112 0 0.21875 -13226 -211 3222 0 0.21875 -13216 -321 2112 0 0.1 -13216 3122 -211 0 0.4375 -13216 111 3114 0 0.0125 -13216 -211 3214 0 0.0125 -13216 111 3112 0 0.21875 -13216 -211 3212 0 0.21875 --13116 311 -2212 0 0.1 --13116 -3122 -211 0 0.4375 --13116 111 -3224 0 0.0125 --13116 -211 -3214 0 0.0125 --13116 111 -3222 0 0.21875 --13116 -211 -3212 0 0.21875 --13226 311 -2112 0 0.05 --13226 321 -2212 0 0.05 --13226 -3122 111 0 0.4375 --13226 -211 -3114 0 0.0125 --13226 211 -3224 0 0.0125 --13226 -211 -3112 0 0.21875 --13226 211 -3222 0 0.21875 --13216 321 -2112 0 0.1 --13216 -3122 211 0 0.4375 --13216 111 -3114 0 0.0125 --13216 211 -3214 0 0.0125 --13216 111 -3112 0 0.21875 --13216 211 -3212 0 0.21875 -21112 2212 211 0 0.2 -21112 2214 211 0 0.08 -21112 2224 111 0 0.12 -21112 2212 213 0 0.6 -21212 2224 -211 0 0.08 -21212 2114 211 0 0.106667 -21212 2214 111 0 0.0133333 -21212 2112 211 0 0.0666667 -21212 2212 111 0 0.133333 -21212 2112 213 0 0.2 -21212 2212 113 0 0.4 -221220001 2214 -211 0 0.106667 -221220001 1114 211 0 0.08 -221220001 2114 111 0 0.0133333 -221220001 2212 -211 0 0.0666667 -221220001 2112 111 0 0.133333 -221220001 2212 -213 0 0.2 -221220001 2112 113 0 0.4 -22222 2114 -211 0 0.08 -22222 1114 111 0 0.12 -22222 2112 -211 0 0.2 -22222 2112 -213 0 0.6 --21112 -2212 -211 0 0.2 --21112 -2214 -211 0 0.08 --21112 -2224 111 0 0.12 --21112 -2212 -213 0 0.6 --21212 -2224 211 0 0.08 --21212 -2114 -211 0 0.106667 --21212 -2214 111 0 0.0133333 --21212 -2112 -211 0 0.0666667 --21212 -2212 111 0 0.133333 --21212 -2112 -213 0 0.2 --21212 -2212 113 0 0.4 --221220001 -2214 211 0 0.106667 --221220001 -1114 -211 0 0.08 --221220001 -2114 111 0 0.0133333 --221220001 -2212 211 0 0.0666667 --221220001 -2112 111 0 0.133333 --221220001 -2212 213 0 0.2 --221220001 -2112 113 0 0.4 --22222 -2114 211 0 0.08 --22222 -1114 111 0 0.12 --22222 -2112 211 0 0.2 --22222 -2112 213 0 0.6 -1116 2212 211 0 0.1 -1116 2214 211 0 0.08 -1116 2224 111 0 0.12 -1116 2212 213 0 0.7 -1216 2224 -211 0 0.08 -1216 2114 211 0 0.106667 -1216 2214 111 0 0.0133332 -1216 2112 211 0 0.0333332 -1216 2212 111 0 0.0666666 -1216 2112 213 0 0.233333 -1216 2212 113 0 0.466667 -2126 2214 -211 0 0.106667 -2126 1114 211 0 0.08 -2126 2114 111 0 0.0133332 -2126 2212 -211 0 0.0333332 -2126 2112 111 0 0.0666666 -2126 2212 -213 0 0.233333 -2126 2112 113 0 0.466667 -2226 2114 -211 0 0.08 -2226 1114 111 0 0.12 -2226 2112 -211 0 0.1 -2226 2112 -213 0 0.7 --1116 -2212 -211 0 0.1 --1116 -2214 -211 0 0.08 --1116 -2224 111 0 0.12 --1116 -2212 -213 0 0.7 --1216 -2224 211 0 0.08 --1216 -2114 -211 0 0.106667 --1216 -2214 111 0 0.0133332 --1216 -2112 -211 0 0.0333332 --1216 -2212 111 0 0.0666666 --1216 -2112 -213 0 0.233333 --1216 -2212 113 0 0.466667 --2126 -2214 211 0 0.106667 --2126 -1114 -211 0 0.08 --2126 -2114 111 0 0.0133332 --2126 -2212 211 0 0.0333332 --2126 -2112 111 0 0.0666666 --2126 -2212 213 0 0.233333 --2126 -2112 113 0 0.466667 --2226 -2114 211 0 0.08 --2226 -1114 111 0 0.12 --2226 -2112 211 0 0.1 --2226 -2112 213 0 0.7 -23124 -311 2112 0 0.1375 -23124 -321 2212 0 0.1375 -23124 -313 2112 0 0.165 -23124 -323 2212 0 0.165 -23124 211 3114 0 0.11 -23124 -211 3224 0 0.11 -23124 111 3214 0 0.11 -23124 211 3112 0 0.0216666 -23124 -211 3222 0 0.0216667 -23124 111 3212 0 0.0216667 --23124 311 -2112 0 0.1375 --23124 321 -2212 0 0.1375 --23124 313 -2112 0 0.165 --23124 323 -2212 0 0.165 --23124 -211 -3114 0 0.11 --23124 211 -3224 0 0.11 --23124 111 -3214 0 0.11 --23124 -211 -3112 0 0.0216666 --23124 211 -3222 0 0.0216667 --23124 111 -3212 0 0.0216667 -337 311 -311 0 0.25 -337 321 -321 0 0.25 -337 311 -313 0 0.125 -337 321 -323 0 0.125 -337 313 -311 0 0.125 -337 323 -321 0 0.125 --13314 -311 3122 0 1 -13314 -321 3122 0 1 -13324 321 -3122 0 1 --13324 311 -3122 0 1 -20315 211 10311 0 0.166667 -20315 111 10321 0 0.083333 -20315 211 313 0 0.166667 -20315 111 323 0 0.083333 -20315 225 321 0 0.25 -20315 223 321 0 0.25 --20325 -211 10321 0 0.166667 --20325 111 10311 0 0.083333 --20325 -211 323 0 0.166667 --20325 111 313 0 0.083333 --20325 225 311 0 0.25 --20325 223 311 0 0.25 -20325 -211 -10311 0 0.166667 -20325 111 -10321 0 0.083333 -20325 -211 -313 0 0.166667 -20325 111 -323 0 0.083333 -20325 225 -321 0 0.25 -20325 223 -321 0 0.25 --20315 211 -10321 0 0.166667 --20315 111 -10311 0 0.083333 --20315 211 -323 0 0.166667 --20315 111 -313 0 0.083333 --20315 225 -311 0 0.25 --20315 223 -311 0 0.25 -13126 -311 2112 0 0.04375 -13126 -321 2212 0 0.04375 -13126 211 3114 0 0.1208333 -13126 -211 3224 0 0.1208333 -13126 111 3214 0 0.1208334 -13126 211 3112 0 0.1833333 -13126 -211 3222 0 0.1833333 -13126 111 3212 0 0.1833334 --13126 311 -2112 0 0.04375 --13126 321 -2212 0 0.04375 --13126 -211 -3114 0 0.1208333 --13126 211 -3224 0 0.1208333 --13126 111 -3214 0 0.1208334 --13126 -211 -3112 0 0.1833333 --13126 211 -3222 0 0.1833333 --13126 111 -3212 0 0.1833334 -3126 -311 2112 0 0.38215 -3126 -321 2212 0 0.38215 -3126 211 3114 0 0.0318333 -3126 -211 3224 0 0.0318333 -3126 111 3214 0 0.0318334 -3126 211 3112 0 0.0467333 -3126 -211 3222 0 0.0467333 -3126 111 3212 0 0.0467334 --3126 311 -2112 0 0.38215 --3126 321 -2212 0 0.38215 --3126 -211 -3114 0 0.0318333 --3126 211 -3224 0 0.0318333 --3126 111 -3214 0 0.0318334 --3126 -211 -3112 0 0.0467333 --3126 211 -3222 0 0.0467333 --3126 111 -3212 0 0.0467334 -53122 -311 2112 0 0.175 -53122 -321 2212 0 0.175 -53122 -313 2112 0 0.2 -53122 -323 2212 0 0.2 -53122 211 3112 0 0.0833333 -53122 -211 3222 0 0.0833333 -53122 111 3212 0 0.0833334 --53122 311 -2112 0 0.175 --53122 321 -2212 0 0.175 --53122 313 -2112 0 0.2 --53122 323 -2212 0 0.2 --53122 -211 -3112 0 0.0833333 --53122 211 -3222 0 0.0833333 --53122 111 -3212 0 0.0833334 -43122 -311 2112 0 0.1625 -43122 -321 2212 0 0.1625 -43122 -313 2112 0 0.1125 -43122 -323 2212 0 0.1125 -43122 211 3114 0 0.075 -43122 -211 3224 0 0.075 -43122 111 3214 0 0.075 -43122 211 3112 0 0.075 -43122 -211 3222 0 0.075 -43122 111 3212 0 0.075 --43122 311 -2112 0 0.1625 --43122 321 -2212 0 0.1625 --43122 313 -2112 0 0.1125 --43122 323 -2212 0 0.1125 --43122 -211 -3114 0 0.075 --43122 211 -3224 0 0.075 --43122 111 -3214 0 0.075 --43122 -211 -3112 0 0.075 --43122 211 -3222 0 0.075 --43122 111 -3212 0 0.075 -200111 9010221 211 0 0.2 -200111 10221 211 0 0.2 -200111 9000211 221 0 0.2 -200111 9000223 211 0 0.2 -200111 221 331 211 0.2 --200111 9010221 -211 0 0.2 --200111 10221 -211 0 0.2 --200111 -9000211 221 0 0.2 --200111 9000223 -211 0 0.2 --200111 221 331 -211 0.2 -200211 9010221 111 0 0.2 -200211 10221 111 0 0.2 -200211 9000111 221 0 0.2 -200211 9000223 111 0 0.2 -200211 221 331 111 0.2 --317 213 311 0 0.206667 --317 113 321 0 0.103333 --317 211 313 0 0.133333 --317 111 323 0 0.0666667 --317 211 311 0 0.126667 --317 111 321 0 0.0633333 --317 321 221 0 0.3 -317 -213 321 0 0.206667 -317 113 311 0 0.103333 -317 -211 323 0 0.133333 -317 111 313 0 0.0666667 -317 -211 321 0 0.126667 -317 111 311 0 0.0633333 -317 311 221 0 0.3 --327 -213 -311 0 0.206667 --327 113 -321 0 0.103333 --327 -211 -313 0 0.133333 --327 111 -323 0 0.0666667 --327 -211 -311 0 0.126667 --327 111 -321 0 0.0633333 --327 -321 221 0 0.3 -327 213 -321 0 0.206667 -327 113 -311 0 0.103333 -327 211 -323 0 0.133333 -327 111 -313 0 0.0666667 -327 211 -321 0 0.126667 -327 111 -311 0 0.0633333 -327 -311 221 0 0.3 --10315 211 10311 0 0.666667 --10315 111 10321 0 0.333333 -10315 -211 10321 0 0.666667 -10315 111 10311 0 0.333333 --10325 -211 -10311 0 0.666667 --10325 111 -10321 0 0.333333 -10325 211 -10321 0 0.666667 -10325 111 -10311 0 0.333333 -3116 -311 2212 0 0.422 -3116 3122 211 0 0.1928 -3116 3124 211 0 0.226 -3116 111 3224 0 0.05775 -3116 211 3214 0 0.05775 -3116 111 3222 0 0.02185 -3116 211 3212 0 0.02185 -3226 -311 2112 0 0.211 -3226 -321 2212 0 0.211 -3226 3122 111 0 0.1928 -3226 3124 111 0 0.226 -3226 211 3114 0 0.05775 -3226 -211 3224 0 0.05775 -3226 211 3112 0 0.02185 -3226 -211 3222 0 0.02185 -3216 -321 2112 0 0.422 -3216 3122 -211 0 0.1928 -3216 3124 -211 0 0.226 -3216 111 3114 0 0.05775 -3216 -211 3214 0 0.05775 -3216 111 3112 0 0.02185 -3216 -211 3212 0 0.02185 --3116 311 -2212 0 0.422 --3116 -3122 -211 0 0.1928 --3116 -3124 -211 0 0.226 --3116 111 -3224 0 0.05775 --3116 -211 -3214 0 0.05775 --3116 111 -3222 0 0.02185 --3116 -211 -3212 0 0.02185 --3226 311 -2112 0 0.211 --3226 321 -2212 0 0.211 --3226 -3122 111 0 0.1928 --3226 -3124 111 0 0.226 --3226 -211 -3114 0 0.05775 --3226 211 -3224 0 0.05775 --3226 -211 -3112 0 0.02185 --3226 211 -3222 0 0.02185 --3216 321 -2112 0 0.422 --3216 -3122 211 0 0.1928 --3216 -3124 211 0 0.226 --3216 111 -3114 0 0.05775 --3216 211 -3214 0 0.05775 --3216 111 -3112 0 0.02185 --3216 211 -3212 0 0.02185 -8116 -311 2212 0 0.4 -8116 3122 211 0 0.05 -8116 111 3224 0 0 -8116 211 3214 0 0 -8116 111 3222 0 0.025 -8116 211 3212 0 0.025 -8116 221 3222 0 0.5 -8117 -311 2112 0 0.2 -8117 -321 2212 0 0.2 -8117 3122 111 0 0.05 -8117 211 3114 0 0 -8117 -211 3224 0 0 -8117 211 3112 0 0.025 -8117 -211 3222 0 0.025 -8117 221 3212 0 0.5 -8118 -321 2112 0 0.4 -8118 3122 -211 0 0.05 -8118 111 3114 0 0 -8118 -211 3214 0 0 -8118 111 3112 0 0.025 -8118 -211 3212 0 0.025 -8118 221 3112 0 0.5 --8116 311 -2212 0 0.4 --8116 -3122 -211 0 0.05 --8116 111 -3224 0 0 --8116 -211 -3214 0 0 --8116 111 -3222 0 0.025 --8116 -211 -3212 0 0.025 --8116 221 -3222 0 0.5 --8117 311 -2112 0 0.2 --8117 321 -2212 0 0.2 --8117 -3122 111 0 0.05 --8117 -211 -3114 0 0 --8117 211 -3224 0 0 --8117 -211 -3112 0 0.025 --8117 211 -3222 0 0.025 --8117 221 -3212 0 0.5 --8118 321 -2112 0 0.4 --8118 -3122 211 0 0.05 --8118 111 -3114 0 0 --8118 211 -3214 0 0 --8118 111 -3112 0 0.025 --8118 211 -3212 0 0.025 --8118 221 -3112 0 0.5 -31214 211 2112 0 0.1 -31214 111 2212 0 0.05 -31214 2212 221 0 0.04 -31214 3122 321 0 0.08 -31214 213 2112 0 0.486667 -31214 113 2212 0 0.243333 -32124 -211 2212 0 0.1 -32124 111 2112 0 0.05 -32124 2112 221 0 0.04 -32124 3122 311 0 0.08 -32124 -213 2212 0 0.486667 -32124 113 2112 0 0.243333 --31214 -211 -2112 0 0.1 --31214 111 -2212 0 0.05 --31214 -2212 221 0 0.04 --31214 -3122 -321 0 0.08 --31214 -213 -2112 0 0.486667 --31214 113 -2212 0 0.243333 --32124 211 -2212 0 0.1 --32124 111 -2112 0 0.05 --32124 -2112 221 0 0.04 --32124 -3122 -311 0 0.08 --32124 213 -2212 0 0.486667 --32124 113 -2112 0 0.243333 -10331 321 -321 0 0.16665 -10331 311 -311 0 0.16665 -10331 221 221 0 0.3334 -10331 211 -211 0 0.2222 -10331 111 111 0 0.1111 -42112 211 2112 0 0.1 -42112 111 2212 0 0.05 -42112 2212 221 0 0.06 -42112 3122 321 0 0.15 -42112 2224 -211 0 0.1125 -42112 2214 111 0 0.075 -42112 2114 211 0 0.0375 -42112 213 2112 0 0.1 -42112 113 2212 0 0.05 -42112 2212 111 111 0.0442 -42112 2212 -211 211 0.1325 -42112 2112 111 211 0.0883 -42212 -211 2212 0 0.1 -42212 111 2112 0 0.05 -42212 2112 221 0 0.06 -42212 3122 311 0 0.15 -42212 1114 211 0 0.1125 -42212 2114 111 0 0.075 -42212 2214 -211 0 0.0375 -42212 -213 2212 0 0.1 -42212 113 2112 0 0.05 -42212 2112 111 111 0.0442 -42212 2112 -211 211 0.1325 -42212 2212 -211 111 0.0883 --42112 -211 -2112 0 0.1 --42112 111 -2212 0 0.05 --42112 -2212 221 0 0.06 --42112 -3122 -321 0 0.15 --42112 -2224 211 0 0.1125 --42112 -2214 111 0 0.075 --42112 -2114 -211 0 0.0375 --42112 -213 -2112 0 0.1 --42112 113 -2212 0 0.05 --42112 -2212 111 111 0.0442 --42112 -2212 211 -211 0.1325 --42112 -2112 111 -211 0.0883 --42212 211 -2212 0 0.1 --42212 111 -2112 0 0.05 --42212 -2112 221 0 0.06 --42212 -3122 -311 0 0.15 --42212 -1114 -211 0 0.1125 --42212 -2114 111 0 0.075 --42212 -2214 211 0 0.0375 --42212 213 -2212 0 0.1 --42212 113 -2112 0 0.05 --42212 -2112 111 111 0.0442 --42212 -2112 211 -211 0.1325 --42212 -2212 211 111 0.0883 -11114 2212 211 0 0.15 -11114 2214 211 0 0.18 -11114 2224 111 0 0.27 -11114 2212 213 0 0.4 -12114 2224 -211 0 0.18 -12114 2114 211 0 0.24 -12114 2214 111 0 0.03 -12114 2112 211 0 0.05 -12114 2212 111 0 0.1 -12114 2112 213 0 0.133333 -12114 2212 113 0 0.266667 -12214 2214 -211 0 0.24 -12214 1114 211 0 0.18 -12214 2114 111 0 0.03 -12214 2212 -211 0 0.05 -12214 2112 111 0 0.1 -12214 2212 -213 0 0.133333 -12214 2112 113 0 0.266667 -12224 2114 -211 0 0.18 -12224 1114 111 0 0.27 -12224 2112 -211 0 0.15 -12224 2112 -213 0 0.4 --11114 -2212 -211 0 0.15 --11114 -2214 -211 0 0.18 --11114 -2224 111 0 0.27 --11114 -2212 -213 0 0.4 --12114 -2224 211 0 0.18 --12114 -2114 -211 0 0.24 --12114 -2214 111 0 0.03 --12114 -2112 -211 0 0.05 --12114 -2212 111 0 0.1 --12114 -2112 -213 0 0.133333 --12114 -2212 113 0 0.266667 --12214 -2214 211 0 0.24 --12214 -1114 -211 0 0.18 --12214 -2114 111 0 0.03 --12214 -2212 211 0 0.05 --12214 -2112 111 0 0.1 --12214 -2212 213 0 0.133333 --12214 -2112 113 0 0.266667 --12224 -2114 211 0 0.18 --12224 -1114 111 0 0.27 --12224 -2112 211 0 0.15 --12224 -2112 213 0 0.4 -21214 211 2112 0 0.0666667 -21214 111 2212 0 0.0333333 -21214 2224 -211 0 0.25 -21214 2214 111 0 0.166667 -21214 2114 211 0 0.0833333 -21214 213 2112 0 0.0666667 -21214 113 2212 0 0.033333 -21214 2212 111 111 0.05 -21214 2212 -211 211 0.15 -21214 2112 111 211 0.1 -22124 -211 2212 0 0.0666667 -22124 111 2112 0 0.0333333 -22124 1114 211 0 0.25 -22124 2114 111 0 0.166667 -22124 2214 -211 0 0.0833333 -22124 -213 2212 0 0.0666667 -22124 113 2112 0 0.033333 -22124 2112 111 111 0.05 -22124 2112 -211 211 0.15 -22124 2212 -211 111 0.1 --21214 -211 -2112 0 0.0666667 --21214 111 -2212 0 0.0333333 --21214 -2224 211 0 0.25 --21214 -2214 111 0 0.166667 --21214 -2114 -211 0 0.0833333 --21214 -213 -2112 0 0.0666667 --21214 113 -2212 0 0.033333 --21214 -2212 111 111 0.05 --21214 -2212 211 -211 0.15 --21214 -2112 111 -211 0.1 --22124 211 -2212 0 0.0666667 --22124 111 -2112 0 0.0333333 --22124 -1114 -211 0 0.25 --22124 -2114 111 0 0.166667 --22124 -2214 211 0 0.0833333 --22124 213 -2212 0 0.0666667 --22124 113 -2112 0 0.033333 --22124 -2112 111 111 0.05 --22124 -2112 211 -211 0.15 --22124 -2212 211 111 0.1 -30213 213 -211 211 0.6667 -30213 213 111 111 0.3333 --30213 -213 211 -211 0.6667 --30213 -213 111 111 0.3333 -30113 113 211 -211 0.6667 -30113 113 111 111 0.3333 -67718 -311 3122 0 0.334 -67718 -321 3222 0 0.222 -67718 -311 3212 0 0.111 -67718 211 3312 0 0.222 -67718 111 3322 0 0.111 --67719 -321 3122 0 0.334 --67719 -311 3112 0 0.222 --67719 -321 3212 0 0.111 --67719 -211 3322 0 0.222 --67719 111 3312 0 0.111 -67719 321 -3122 0 0.334 -67719 311 -3112 0 0.222 -67719 321 -3212 0 0.111 -67719 211 -3322 0 0.222 -67719 111 -3312 0 0.111 --67718 311 -3122 0 0.334 --67718 321 -3222 0 0.222 --67718 311 -3212 0 0.111 --67718 -211 -3312 0 0.222 --67718 111 -3322 0 0.111 -13124 2212 -321 0 0.125 -13124 2112 -311 0 0.125 -13124 3222 -211 0 0.1 -13124 3212 111 0 0.1 -13124 3112 211 0 0.1 -13124 3122 111 111 0.0833 -13124 3122 211 -211 0.1667 -13124 3212 111 111 0.0333 -13124 3212 211 -211 0.0333 -13124 3112 211 111 0.0667 -13124 3222 -211 111 0.0667 --13124 -2212 321 0 0.125 --13124 -2112 311 0 0.125 --13124 -3222 211 0 0.1 --13124 -3212 111 0 0.1 --13124 -3112 -211 0 0.1 --13124 -3122 111 111 0.0833 --13124 -3122 211 -211 0.1667 --13124 -3212 111 111 0.0333 --13124 -3212 211 -211 0.0333 --13124 -3112 -211 111 0.0667 --13124 -3222 211 111 0.0667 -217 9000221 211 111 0.71 -217 211 111 0 0.29 --217 9000221 -211 111 0.71 --217 -211 111 0 0.29 -117 9000221 111 111 0.71 -117 111 111 0 0.29 --30313 211 311 0 0.266667 --30313 111 321 0 0.133333 --30313 213 311 0 0.2 --30313 113 321 0 0.1 --30313 211 313 0 0.2 --30313 111 323 0 0.1 -30313 -211 321 0 0.266667 -30313 111 311 0 0.133333 -30313 -213 321 0 0.2 -30313 113 311 0 0.1 -30313 -211 323 0 0.2 -30313 111 313 0 0.1 --30323 -211 -311 0 0.266667 --30323 111 -321 0 0.133333 --30323 -213 -311 0 0.2 --30323 113 -321 0 0.1 --30323 -211 -313 0 0.2 --30323 111 -323 0 0.1 -30323 211 -321 0 0.266667 -30323 111 -311 0 0.133333 -30323 213 -321 0 0.2 -30323 113 -311 0 0.1 -30323 211 -323 0 0.2 -30323 111 -313 0 0.1 -12116 211 2112 0 0.453333 -12116 111 2212 0 0.226667 -12116 2224 -211 0 0.05 -12116 2214 111 0 0.0333333 -12116 2114 211 0 0.0166667 -12116 213 2112 0 0.0666667 -12116 113 2212 0 0.0333333 -12116 9000221 2212 0 0.12 -12216 -211 2212 0 0.453333 -12216 111 2112 0 0.226667 -12216 1114 211 0 0.05 -12216 2114 111 0 0.0333333 -12216 2214 -211 0 0.0166667 -12216 -213 2212 0 0.0666667 -12216 113 2112 0 0.0333333 -12216 9000221 2112 0 0.12 --12116 -211 -2112 0 0.453333 --12116 111 -2212 0 0.226667 --12116 -2224 211 0 0.05 --12116 -2214 111 0 0.0333333 --12116 -2114 -211 0 0.0166667 --12116 -213 -2112 0 0.0666667 --12116 113 -2212 0 0.0333333 --12116 9000221 -2212 0 0.12 --12216 211 -2212 0 0.453333 --12216 111 -2112 0 0.226667 --12216 -1114 -211 0 0.05 --12216 -2114 111 0 0.0333333 --12216 -2214 211 0 0.0166667 --12216 213 -2212 0 0.0666667 --12216 113 -2112 0 0.0333333 --12216 9000221 -2112 0 0.12 -100333 321 -323 0 0.25 -100333 -321 323 0 0.25 -100333 311 -313 0 0.25 -100333 -311 313 0 0.25 -2116 211 2112 0 0.293333 -2116 111 2212 0 0.146667 -2116 2212 221 0 0.01 -2116 2224 -211 0 0.25 -2116 2214 111 0 0.166667 -2116 2114 211 0 0.083333 -2116 213 2112 0 0.0333333 -2116 113 2212 0 0.0166667 -2216 -211 2212 0 0.293333 -2216 111 2112 0 0.146667 -2216 2112 221 0 0.01 -2216 1114 211 0 0.25 -2216 2114 111 0 0.166667 -2216 2214 -211 0 0.083333 -2216 -213 2212 0 0.0333333 -2216 113 2112 0 0.0166667 --2116 -211 -2112 0 0.293333 --2116 111 -2212 0 0.146667 --2116 -2212 221 0 0.01 --2116 -2224 211 0 0.25 --2116 -2214 111 0 0.166667 --2116 -2114 -211 0 0.083333 --2116 -213 -2112 0 0.0333333 --2116 113 -2212 0 0.0166667 --2216 211 -2212 0 0.293333 --2216 111 -2112 0 0.146667 --2216 -2112 221 0 0.01 --2216 -1114 -211 0 0.25 --2216 -2114 111 0 0.166667 --2216 -2214 211 0 0.083333 --2216 213 -2212 0 0.0333333 --2216 113 -2112 0 0.0166667 -10215 225 211 0 0.562 -10215 213 111 0 0.155 -10215 113 211 0 0.155 -10215 10221 211 0 0.086 -10215 321 -313 0 0.021 -10215 323 -311 0 0.021 --10215 225 -211 0 0.562 --10215 -213 111 0 0.155 --10215 113 -211 0 0.155 --10215 10221 -211 0 0.086 --10215 -321 313 0 0.021 --10215 -323 311 0 0.021 -10115 225 111 0 0.562 -10115 213 -211 0 0.155 -10115 -213 211 0 0.155 -10115 10221 111 0 0.086 -10115 321 -323 0 0.0105 -10115 -321 323 0 0.0105 -10115 311 -313 0 0.0105 -10115 -311 313 0 0.0105 -33122 2212 -321 0 0.125 -33122 2112 -311 0 0.125 -33122 3222 -211 0 0.15 -33122 3212 111 0 0.15 -33122 3112 211 0 0.15 -33122 3122 221 0 0.3 --33122 -2212 321 0 0.125 --33122 -2112 311 0 0.125 --33122 -3222 211 0 0.15 --33122 -3212 111 0 0.15 --33122 -3112 -211 0 0.15 --33122 -3122 221 0 0.3 -13114 2212 -311 0 0.15 -13114 3122 211 0 0.15 -13114 3222 111 0 0.35 -13114 3212 211 0 0.35 -13214 2112 -321 0 0.15 -13214 3122 -211 0 0.15 -13214 3112 111 0 0.35 -13214 3212 -211 0 0.35 -13224 2212 -321 0 0.075 -13224 2112 -311 0 0.075 -13224 3122 111 0 0.15 -13224 3222 -211 0 0.35 -13224 3112 211 0 0.35 --13114 -2212 311 0 0.15 --13114 -3122 -211 0 0.15 --13114 -3222 111 0 0.35 --13114 -3212 -211 0 0.35 --13214 -2112 321 0 0.15 --13214 -3122 211 0 0.15 --13214 -3112 111 0 0.35 --13214 -3212 211 0 0.35 --13224 -2212 321 0 0.075 --13224 -2112 311 0 0.075 --13224 -3122 111 0 0.15 --13224 -3222 211 0 0.35 --13224 -3112 -211 0 0.35 -13112 2212 -311 0 0.3334 -13112 3122 211 0 0.3333 -13112 3222 111 0 0.16665 -13112 3212 211 0 0.16665 -13212 2112 -321 0 0.3334 -13212 3122 -211 0 0.3333 -13212 3112 111 0 0.16665 -13212 3212 -211 0 0.16665 -13222 2212 -321 0 0.16665 -13222 2112 -311 0 0.16665 -13222 3122 111 0 0.3334 -13222 3222 -211 0 0.16665 -13222 3112 211 0 0.16665 --13112 -2212 311 0 0.3334 --13112 -3122 -211 0 0.3333 --13112 -3222 111 0 0.16665 --13112 -3212 -211 0 0.16665 --13212 -2112 321 0 0.3334 --13212 -3122 211 0 0.3333 --13212 -3112 111 0 0.16665 --13212 -3212 211 0 0.16665 --13222 -2212 321 0 0.16665 --13222 -2112 311 0 0.16665 --13222 -3122 111 0 0.3334 --13222 -3222 211 0 0.16665 --13222 -3112 -211 0 0.16665 -32112 211 2112 0 0.552333 -32112 111 2212 0 0.276667 -32112 2212 221 0 0.01 -32112 3122 321 0 0.07 -32112 2224 -211 0 0.017 -32112 2214 111 0 0.0113333 -32112 2114 211 0 0.0056667 -32112 211 12112 0 0.0113333 -32112 111 12212 0 0.0056667 -32112 2212 9000221 0 0.04 -32212 -211 2212 0 0.552333 -32212 111 2112 0 0.276667 -32212 2112 221 0 0.01 -32212 3122 311 0 0.07 -32212 1114 211 0 0.017 -32212 2114 111 0 0.0113333 -32212 2214 -211 0 0.0056667 -32212 -211 12212 0 0.0113333 -32212 111 12112 0 0.0056667 -32212 2112 9000221 0 0.04 --32112 -211 -2112 0 0.552333 --32112 111 -2212 0 0.276667 --32112 -2212 221 0 0.01 --32112 -3122 -321 0 0.07 --32112 -2224 211 0 0.017 --32112 -2214 111 0 0.0113333 --32112 -2114 -211 0 0.0056667 --32112 -211 -12112 0 0.0113333 --32112 111 -12212 0 0.0056667 --32112 -2212 9000221 0 0.04 --32212 211 -2212 0 0.552333 --32212 111 -2112 0 0.276667 --32212 -2112 221 0 0.01 --32212 -3122 -311 0 0.07 --32212 -1114 -211 0 0.017 --32212 -2114 111 0 0.0113333 --32212 -2214 211 0 0.0056667 --32212 211 -12212 0 0.0113333 --32212 111 -12112 0 0.0056667 --32212 -2112 9000221 0 0.04 -3334 3122 -321 0 0.68 -3334 3322 -211 0 0.24 -3334 3312 111 0 0.08 --3334 -3122 321 0 0.68 --3334 -3322 211 0 0.24 --3334 -3312 111 0 0.08 -227 213 -211 0 0.166666 -227 -213 211 0 0.166667 -227 113 111 0 0.166667 -227 223 -211 211 0.3333 -227 223 111 111 0.1667 -30223 213 -211 0 0.166667 -30223 -213 211 0 0.166667 -30223 113 111 0 0.166666 -30223 223 -211 211 0.3333 -30223 223 111 111 0.1667 -45553 3322 111 0 0.333333 -45553 3312 211 0 0.666667 -46653 3312 111 0 0.333333 -46653 3322 -211 0 0.666667 --45553 -3322 111 0 0.333333 --45553 -3312 -211 0 0.666667 --46653 -3312 111 0 0.333333 --46653 -3322 211 0 0.666667 -1112 2224 111 0 0.27 -1112 2214 211 0 0.18 -1112 211 2212 0 0.25 -1112 213 2212 0 0.25 -1112 211 12212 0 0.05 -1212 2224 -211 0 0.18 -1212 2214 111 0 0.03 -1212 2114 211 0 0.24 -1212 211 2112 0 0.083333 -1212 111 2212 0 0.166667 -1212 213 2112 0 0.083333 -1212 113 2212 0 0.166667 -1212 211 12112 0 0.0166667 -1212 111 12212 0 0.0333333 -2122 2214 -211 0 0.24 -2122 2114 111 0 0.03 -2122 1114 211 0 0.18 -2122 111 2112 0 0.166667 -2122 -211 2212 0 0.083333 -2122 113 2112 0 0.166667 -2122 -213 2212 0 0.083333 -2122 111 12112 0 0.0333333 -2122 -211 12212 0 0.0166667 -2222 2114 -211 0 0.18 -2222 1114 111 0 0.27 -2222 -211 2112 0 0.25 -2222 -213 2112 0 0.25 -2222 -211 12112 0 0.05 --1212 -2224 211 0 0.18 --1212 -2214 111 0 0.03 --1212 -2114 -211 0 0.24 --1212 -211 -2112 0 0.083333 --1212 111 -2212 0 0.166667 --1212 -213 -2112 0 0.083333 --1212 113 -2212 0 0.166667 --1212 -211 -12112 0 0.0166667 --1212 111 -12212 0 0.0333333 --1112 -2224 111 0 0.27 --1112 -2214 -211 0 0.18 --1112 -211 -2212 0 0.25 --1112 -213 -2212 0 0.25 --1112 -211 -12212 0 0.05 --2122 -2214 211 0 0.24 --2122 -2114 111 0 0.03 --2122 -1114 -211 0 0.18 --2122 111 -2112 0 0.166667 --2122 211 -2212 0 0.083333 --2122 113 -2112 0 0.166667 --2122 213 -2212 0 0.083333 --2122 111 -12112 0 0.0333333 --2122 211 -12212 0 0.0166667 --2222 -2114 211 0 0.18 --2222 -1114 111 0 0.27 --2222 211 -2112 0 0.25 --2222 213 -2112 0 0.25 --2222 211 -12112 0 0.05 -31114 2224 111 0 0.33 -31114 2214 211 0 0.22 -31114 211 2212 0 0.17 -31114 213 2212 0 0.055 -31114 211 12212 0 0.225 -32114 2224 -211 0 0.22 -32114 2214 111 0 0.0366667 -32114 2114 211 0 0.2933333 -32114 211 2112 0 0.0566667 -32114 111 2212 0 0.1133333 -32114 213 2112 0 0.0183333 -32114 113 2212 0 0.0366667 -32114 211 12112 0 0.075 -32114 111 12212 0 0.15 -32214 2214 -211 0 0.2933333 -32214 2114 111 0 0.0366667 -32214 1114 211 0 0.22 -32214 111 2112 0 0.1133333 -32214 -211 2212 0 0.0566667 -32214 113 2112 0 0.0366667 -32214 -213 2212 0 0.0183333 -32214 111 12112 0 0.15 -32214 -211 12212 0 0.075 -32224 2114 -211 0 0.22 -32224 1114 111 0 0.33 -32224 -211 2112 0 0.17 -32224 -213 2112 0 0.055 -32224 -211 12112 0 0.225 --31114 -2224 111 0 0.33 --31114 -2214 -211 0 0.22 --31114 -211 -2212 0 0.17 --31114 -213 -2212 0 0.055 --31114 -211 -12212 0 0.225 --32114 -2224 211 0 0.22 --32114 -2214 111 0 0.0366667 --32114 -2114 -211 0 0.2933333 --32114 -211 -2112 0 0.0566667 --32114 111 -2212 0 0.1133333 --32114 -213 -2112 0 0.0183333 --32114 113 -2212 0 0.0366667 --32114 -211 -12112 0 0.075 --32114 111 -12212 0 0.15 --32214 -2214 211 0 0.2933333 --32214 -2114 111 0 0.0366667 --32214 -1114 -211 0 0.22 --32214 111 -2112 0 0.1133333 --32214 211 -2212 0 0.0566667 --32214 113 -2112 0 0.0366667 --32214 213 -2212 0 0.0183333 --32214 111 -12112 0 0.15 --32214 211 -12212 0 0.075 --32224 -2114 211 0 0.22 --32224 -1114 111 0 0.33 --32224 211 -2112 0 0.17 --32224 213 -2112 0 0.055 --32224 211 -12112 0 0.225 -23122 2212 -321 0 0.195 -23122 2112 -311 0 0.195 -23122 3222 -211 0 0.203333 -23122 3212 111 0 0.203333 -23122 3112 211 0 0.203334 --23122 -2212 321 0 0.195 --23122 -2112 311 0 0.195 --23122 -3222 211 0 0.203333 --23122 -3212 111 0 0.203333 --23122 -3112 -211 0 0.203334 -22212 211 2112 0 0.32 -22212 111 2212 0 0.16 -22212 2212 221 0 0.4 -22212 2224 -211 0 0.02 -22212 2214 111 0 0.0133333 -22212 2114 211 0 0.0066667 -22212 211 12112 0 0.0266667 -22212 111 12212 0 0.0133333 -22212 213 2112 0 0.0266667 -22212 113 2212 0 0.0133333 -22122 -211 2212 0 0.32 -22122 111 2112 0 0.16 -22122 2112 221 0 0.4 -22122 1114 211 0 0.02 -22122 2114 111 0 0.0133333 -22122 2214 -211 0 0.0066667 -22122 -211 12212 0 0.0266667 -22122 111 12112 0 0.0133333 -22122 -213 2212 0 0.0266667 -22122 113 2112 0 0.0133333 --22212 -211 -2112 0 0.32 --22212 111 -2212 0 0.16 --22212 -2212 221 0 0.4 --22212 -2224 211 0 0.02 --22212 -2214 111 0 0.0133333 --22212 -2114 -211 0 0.0066667 --22212 -211 -12112 0 0.0266667 --22212 111 -12212 0 0.0133333 --22212 -213 -2112 0 0.0266667 --22212 113 -2212 0 0.0133333 --22122 211 -2212 0 0.32 --22122 111 -2112 0 0.16 --22122 -2112 221 0 0.4 --22122 -1114 -211 0 0.02 --22122 -2114 111 0 0.0133333 --22122 -2214 211 0 0.0066667 --22122 211 -12212 0 0.0266667 --22122 111 -12112 0 0.0133333 --22122 213 -2212 0 0.0266667 --22122 113 -2112 0 0.0133333 -3314 3322 111 0 0.333333 -3314 3312 211 0 0.666667 -3324 3312 111 0 0.333333 -3324 3322 -211 0 0.666667 --3314 -3322 111 0 0.333333 --3314 -3312 -211 0 0.666667 --3324 -3312 111 0 0.333333 --3324 -3322 211 0 0.666667 -335 321 -321 0 0.444 -335 311 -311 0 0.444 -335 221 221 0 0.103 -335 211 -211 0 0.006 -335 111 111 0 0.003 -2124 211 2112 0 0.366667 -2124 111 2212 0 0.183333 -2124 213 2112 0 0.133333 -2124 113 2212 0 0.066667 -2124 2224 -211 0 0.125 -2124 2214 111 0 0.0833333 -2124 2114 211 0 0.0416667 -1214 -211 2212 0 0.366667 -1214 111 2112 0 0.183333 -1214 -213 2212 0 0.133333 -1214 113 2112 0 0.066667 -1214 1114 211 0 0.125 -1214 2114 111 0 0.0833333 -1214 2214 -211 0 0.0416667 --2124 -211 -2112 0 0.366667 --2124 111 -2212 0 0.183333 --2124 -213 -2112 0 0.133333 --2124 113 -2212 0 0.066667 --2124 -2224 211 0 0.125 --2124 -2214 111 0 0.0833333 --2124 -2114 -211 0 0.0416667 --1214 211 -2212 0 0.366667 --1214 111 -2112 0 0.183333 --1214 213 -2212 0 0.133333 --1214 113 -2112 0 0.066667 --1214 -1114 -211 0 0.125 --1214 -2114 111 0 0.0833333 --1214 -2214 211 0 0.0416667 -3124 2212 -321 0 0.2325 -3124 2112 -311 0 0.2325 -3124 3222 -211 0 0.141667 -3124 3212 111 0 0.141667 -3124 3112 211 0 0.141666 -3124 3122 22 0 0.01 -3124 3122 111 111 0.0333 -3124 3122 211 -211 0.0667 --3124 -2212 321 0 0.2325 --3124 -2112 311 0 0.2325 --3124 -3222 211 0 0.141667 --3124 -3212 111 0 0.141667 --3124 -3112 -211 0 0.141666 --3124 -3122 22 0 0.01 --3124 -3122 111 111 0.0333 --3124 -3122 -211 211 0.0667 -9000223 221 331 0 0.25 -9000223 221 221 0 0.25 -9000223 211 -211 0 0.166667 -9000223 111 111 0 0.083333 -9000223 321 -321 0 0.125 -9000223 311 -311 0 0.125 -100213 211 111 0 1 --100213 -211 111 0 1 -100113 211 -211 0 1 -10211 211 221 0 0.3333 -10211 211 331 0 0.3333 -10211 321 -311 0 0.3334 --10211 -211 221 0 0.3333 --10211 -211 331 0 0.3333 --10211 -321 311 0 0.3334 -10111 111 221 0 0.33335 -10111 111 331 0 0.33335 -10111 321 -321 0 0.16665 -10111 311 -311 0 0.16665 -12212 211 2112 0 0.466667 -12212 111 2212 0 0.233333 -12212 2224 -211 0 0.15 -12212 2214 111 0 0.1 -12212 2114 211 0 0.05 -12112 -211 2212 0 0.466667 -12112 111 2112 0 0.233333 -12112 1114 211 0 0.15 -12112 2114 111 0 0.1 -12112 2214 -211 0 0.05 --12212 -211 -2112 0 0.466667 --12212 111 -2212 0 0.233333 --12212 -2224 211 0 0.15 --12212 -2214 111 0 0.1 --12212 -2114 -211 0 0.05 --12112 211 -2212 0 0.466667 --12112 111 -2112 0 0.233333 --12112 -1114 -211 0 0.15 --12112 -2114 111 0 0.1 --12112 -2214 211 0 0.05 -100331 321 -323 0 0.05 -100331 -321 323 0 0.05 -100331 311 -313 0 0.05 -100331 -311 313 0 0.05 -100331 9000211 -211 0 0.0666667 -100331 -9000211 211 0 0.0666667 -100331 9000111 111 0 0.0666666 -100331 221 9000221 0 0.2 -100331 9010221 221 0 0.2 -100331 321 -321 111 0.0333 -100331 311 -311 111 0.0333 -100331 311 -321 211 0.0667 -100331 321 -311 -211 0.0667 -10321 211 311 0 0.331333 -10321 111 321 0 0.165667 -10321 211 313 0 0.165667 -10321 111 323 0 0.083333 -10321 213 311 0 0.06 -10321 113 321 0 0.03 -10321 223 321 0 0.03 -10321 323 211 -211 0.067 -10321 323 111 111 0.0223 -10321 313 211 111 0.0447 -10311 -211 321 0 0.331333 -10311 111 311 0 0.165667 -10311 -211 323 0 0.165667 -10311 111 313 0 0.083333 -10311 -213 321 0 0.06 -10311 113 311 0 0.03 -10311 223 311 0 0.03 -10311 313 211 -211 0.067 -10311 323 -211 111 0.0447 -10311 313 111 111 0.0223 --10321 -211 -311 0 0.331333 --10321 111 -321 0 0.165667 --10321 -211 -313 0 0.165667 --10321 111 -323 0 0.083333 --10321 -213 -311 0 0.06 --10321 113 -321 0 0.03 --10321 223 -321 0 0.03 --10321 -323 -211 211 0.067 --10321 -323 111 111 0.0223 --10321 -313 -211 111 0.0447 --10311 211 -321 0 0.331333 --10311 111 -311 0 0.165667 --10311 211 -323 0 0.165667 --10311 111 -313 0 0.083333 --10311 213 -321 0 0.06 --10311 113 -311 0 0.03 --10311 223 -311 0 0.03 --10311 -313 -211 211 0.067 --10311 -323 211 111 0.0447 --10311 -313 111 111 0.0223 -20333 321 -323 0 0.25 -20333 -321 323 0 0.25 -20333 311 -313 0 0.25 -20333 -311 313 0 0.25 -100223 213 -211 0 0.333 -100223 -213 211 0 0.333 -100223 113 111 0 0.334 -100313 -211 321 0 0.666667 -100313 111 311 0 0.333333 --100313 211 -321 0 0.666667 --100313 111 -311 0 0.333333 -100323 211 313 0 0.573333 -100323 111 323 0 0.286667 -100323 211 311 0 0.0466667 -100323 111 321 0 0.0233333 -100323 213 311 0 0.0466667 -100323 113 321 0 0.0233333 -203130001 -211 323 0 0.573333 -203130001 111 313 0 0.286667 -203130001 -211 321 0 0.0466667 -203130001 111 311 0 0.0233333 -203130001 -213 321 0 0.0466667 -203130001 113 311 0 0.0233333 --100323 -211 -313 0 0.573333 --100323 111 -323 0 0.286667 --100323 -211 -311 0 0.0466667 --100323 111 -321 0 0.0233333 --100323 -213 -311 0 0.0466667 --100323 113 -321 0 0.0233333 --203130001 211 -323 0 0.573333 --203130001 111 -313 0 0.286667 --203130001 211 -321 0 0.0466667 --203130001 111 -311 0 0.0233333 --203130001 213 -321 0 0.0466667 --203130001 113 -311 0 0.0233333 -13122 3222 -211 0 0.333333 -13122 3112 211 0 0.333333 -13122 3212 111 0 0.333334 --13122 -3222 211 0 0.333333 --13122 -3112 -211 0 0.333333 --13122 -3212 111 0 0.333334 -20323 211 313 0 0.626667 -20323 111 323 0 0.313333 -20323 213 311 0 0.02 -20323 113 321 0 0.01 -20323 10221 321 0 0.02 -20323 223 321 0 0.01 -20313 -211 323 0 0.626667 -20313 111 313 0 0.313333 -20313 -213 321 0 0.02 -20313 113 311 0 0.01 -20313 10221 311 0 0.02 -20313 223 311 0 0.01 --20323 -211 -313 0 0.626667 --20323 111 -323 0 0.313333 --20323 -213 -311 0 0.02 --20323 113 -321 0 0.01 --20323 10221 -321 0 0.02 --20323 223 -321 0 0.01 --20313 211 -323 0 0.626667 --20313 111 -313 0 0.313333 --20313 213 -321 0 0.02 --20313 113 -311 0 0.01 --20313 10221 -311 0 0.02 --20313 223 -311 0 0.01 -3114 3122 -211 0 0.88 -3114 3112 111 0 0.06 -3114 3212 -211 0 0.06 --3114 -3122 211 0 0.88 --3114 -3112 111 0 0.06 --3114 -3212 211 0 0.06 -3214 3122 111 0 0.88 -3214 3222 -211 0 0.06 -3214 3112 211 0 0.06 --3214 -3122 111 0 0.88 --3214 -3222 211 0 0.06 --3214 -3112 -211 0 0.06 -3224 3122 211 0 0.88 -3224 3222 111 0 0.06 -3224 3212 211 0 0.06 --3224 -3122 -211 0 0.88 --3224 -3222 111 0 0.06 --3224 -3212 -211 0 0.06 -10221 111 111 0 0.083333 -10221 113 113 0 0.083333 -10221 213 -213 0 0.166667 -10221 211 -211 0 0.166667 -10221 321 -321 0 0.125 -10221 311 -311 0 0.125 -10221 221 221 0 0.25 -215 213 111 0 0.35 -215 113 211 0 0.35 -215 221 211 0 0.15 -215 321 -311 0 0.05 -215 223 111 211 0.1 --215 -213 111 0 0.35 --215 113 -211 0 0.35 --215 221 -211 0 0.15 --215 -321 311 0 0.05 --215 223 111 -211 0.1 -115 213 -211 0 0.35 -115 -213 211 0 0.35 -115 221 111 0 0.15 -115 321 -321 0 0.025 -115 311 -311 0 0.025 -115 223 -211 211 0.1 -100211 213 111 0 0.25 -100211 113 211 0 0.25 -100211 211 9000221 0 0.5 --100211 -213 111 0 0.25 --100211 113 -211 0 0.25 --100211 -211 9000221 0 0.5 -100111 213 -211 0 0.25 -100111 -213 211 0 0.25 -100111 111 9000221 0 0.5 -100221 9000211 -211 0 0.0833333 -100221 -9000211 211 0 0.0833333 -100221 9000111 111 0 0.0833334 -100221 221 9000221 0 0.25 -100221 221 211 -211 0.25 -100221 221 111 111 0.25 -20223 221 111 111 0.173 -20223 221 211 -211 0.347 -20223 9000221 9000221 0 0.33 -20223 311 -311 111 0.015 -20223 311 -321 211 0.03 -20223 321 -311 -211 0.03 -20223 321 -321 111 0.015 -20223 113 22 0 0.06 -225 111 111 0 0.333333 -225 211 -211 0 0.666667 -10323 213 311 0 0.28 -10323 113 321 0 0.14 -10323 211 313 0 0.106667 -10323 111 323 0 0.053333 -10323 223 321 0 0.11 -10323 321 10221 0 0.03 -10323 -211 211 321 0.14 -10323 111 211 311 0.0933 -10323 111 111 321 0.0467 -10313 -213 321 0 0.28 -10313 113 311 0 0.14 -10313 -211 323 0 0.106667 -10313 111 313 0 0.053333 -10313 223 311 0 0.11 -10313 311 10221 0 0.03 -10313 -211 211 311 0.14 -10313 -211 111 321 0.09333 -10313 111 111 311 0.04667 --10323 -213 -311 0 0.28 --10323 113 -321 0 0.14 --10323 -211 -313 0 0.106667 --10323 111 -323 0 0.053333 --10323 223 -321 0 0.11 --10323 211 -211 -321 0.14 --10323 111 -211 -311 0.09333 --10323 111 111 -321 0.04667 --10323 -321 10221 0 0.03 --10313 213 -321 0 0.28 --10313 113 -311 0 0.14 --10313 211 -323 0 0.106667 --10313 111 -313 0 0.053333 --10313 223 -311 0 0.11 --10313 211 -211 -311 0.14 --10313 211 111 -321 0.09333 --10313 111 111 -311 0.04667 --10313 -311 10221 0 0.03 -3322 3122 111 0 1 --3322 -3122 111 0 1 -3312 3122 -211 0 1 --3312 -3122 211 0 1 -2224 211 2212 0 1 -2214 211 2112 0 0.333333 -2214 111 2212 0 0.666667 -2114 -211 2212 0 0.333333 -2114 111 2112 0 0.666667 -1114 -211 2112 0 1 --2224 -211 -2212 0 1 --2214 -211 -2112 0 0.333333 --2214 111 -2212 0 0.666667 --2114 211 -2212 0 0.333333 --2114 111 -2112 0 0.666667 --1114 211 -2112 0 1 -20213 213 111 0 0.5 -20213 113 211 0 0.5 --20213 -213 111 0 0.5 --20213 113 -211 0 0.5 -20113 213 -211 0 0.5 -20113 -213 211 0 0.5 -10113 223 111 0 1 -10213 223 211 0 1 --10213 223 -211 0 1 -3112 2112 -211 0 1 --3112 -2112 211 0 1 -3212 3122 22 0 1 --3212 -3122 22 0 1 -3222 2212 111 0 0.52 -3222 2112 211 0 0.48 --3222 -2212 111 0 0.52 --3222 -2112 -211 0 0.48 -10223 213 -211 0 0.333333 -10223 -213 211 0 0.333333 -10223 113 111 0 0.333334 -3122 2212 -211 0 0.64 -3122 2112 111 0 0.36 --3122 -2212 211 0 0.64 --3122 -2112 111 0 0.36 -333 321 -321 0 0.49 -333 311 -311 0 0.34 -333 213 -211 0 0.0266667 -333 -213 211 0 0.0266667 -333 113 111 0 0.0266666 -333 221 22 0 0.01 -333 211 -211 111 0.08 -9000211 221 211 0 1 --9000211 221 -211 0 1 -9000111 221 111 0 1 -9010221 111 111 0 0.333333 -9010221 211 -211 0 0.666667 -331 113 22 0 0.2955 -331 223 22 0 0.0303 -331 22 22 0 0.0212 -331 211 -211 221 0.4437 -331 111 111 221 0.2093 -323 211 311 0 0.666667 -323 111 321 0 0.333333 -313 -211 321 0 0.666667 -313 111 311 0 0.333333 --323 -211 -311 0 0.666667 --323 111 -321 0 0.333333 --313 211 -321 0 0.666667 --313 111 -311 0 0.333333 -223 111 22 0 0.0875 -223 211 -211 0 0.0171 -223 211 -211 111 0.8954 -113 211 -211 0 1 -213 211 111 0 1 --213 -211 111 0 1 -9000221 111 111 0 0.333333 -9000221 211 -211 0 0.666667 -221 22 22 0 0.3963 -221 111 111 111 0.3282 -221 211 -211 111 0.2291 -221 211 -211 22 0.0464 -311 310 0 0 0.5 -311 130 0 0 0.5 --311 -310 0 0 0.5 --311 -130 0 0 0.5 -310 211 -211 0 0.686 -310 111 111 0 0.314 --310 211 -211 0 0.686 --310 111 111 0 0.314 -111 22 22 0 0.98798 -111 11 -11 22 0.01202 -443 11 -11 0 0.5004 -443 13 -13 0 0.4996 -411 -11 12 -311 0.0903 -411 -11 12 -313 0.0840 -411 -11 12 111 0.0013 -411 -11 12 221 0.0013 -411 -11 12 331 0.0013 -411 -11 12 113 0.0013 -411 -11 12 223 0.0013 -411 -13 14 -311 0.0903 -411 -13 14 -313 0.0840 -411 -13 14 111 0.0013 -411 -13 14 221 0.0013 -411 -13 14 331 0.0013 -411 -13 14 113 0.0013 -411 -13 14 223 0.0013 -411 -311 211 0 0.0336 -411 -313 211 0 0.0245 -411 -311 213 0 0.0853 -411 -313 213 0 0.0530 -411 -20313 211 0 0.0581 -411 -311 20213 0 0.0981 -411 -311 321 0 0.0094 -411 -313 321 0 0.0061 -411 -311 323 0 0.0061 -411 -313 323 0 0.0336 -411 111 211 0 0.0013 -411 111 213 0 0.0008 -411 221 211 0 0.0085 -411 221 213 0 0.0065 -411 331 211 0 0.0039 -411 331 213 0 0.0039 -411 113 211 0 0.0008 -411 113 213 0 0.0008 -411 223 211 0 0.0013 -411 223 213 0 0.0013 -411 333 211 0 0.0078 -411 333 213 0 0.0065 -411 -311 211 111 0.0155 -411 -313 211 113 0.0074 -411 -321 211 211 0.0866 -411 -321 213 211 0.0103 -411 211 211 -211 0.0028 -411 -311 321 -311 0.0349 -411 -321 321 211 0.0052 -411 333 211 111 0.0245 --411 11 -12 311 0.0903 --411 11 -12 313 0.0840 --411 11 -12 111 0.0013 --411 11 -12 221 0.0013 --411 11 -12 331 0.0013 --411 11 -12 113 0.0013 --411 11 -12 223 0.0013 --411 13 -14 311 0.0903 --411 13 -14 313 0.0840 --411 13 -14 111 0.0013 --411 13 -14 221 0.0013 --411 13 -14 331 0.0013 --411 13 -14 113 0.0013 --411 13 -14 223 0.0013 --411 311 -211 0 0.0336 --411 313 -211 0 0.0245 --411 311 -213 0 0.0853 --411 313 -213 0 0.0530 --411 20313 -211 0 0.0581 --411 311 -20213 0 0.0981 --411 311 -321 0 0.0094 --411 313 -321 0 0.0061 --411 311 -323 0 0.0061 --411 313 -323 0 0.0336 --411 111 -211 0 0.0013 --411 111 -213 0 0.0008 --411 221 211 0 0.0085 --411 221 -213 0 0.0065 --411 331 -211 0 0.0039 --411 331 -213 0 0.0039 --411 113 -211 0 0.0008 --411 113 -213 0 0.0008 --411 223 -211 0 0.0013 --411 223 -213 0 0.0013 --411 333 -211 0 0.0078 --411 333 -213 0 0.0065 --411 311 -211 111 0.0155 --411 313 -211 113 0.0074 --411 321 -211 -211 0.0866 --411 321 -213 -211 0.0103 --411 -211 -211 211 0.0028 --411 311 -321 311 0.0349 --411 321 -321 -211 0.0052 --411 333 -211 111 0.0245 -421 -11 12 -321 0.0524 -421 -11 12 -323 0.0416 -421 -11 12 -211 0.0031 -421 -11 12 -213 0.0031 -421 -13 14 -321 0.0524 -421 -13 14 -323 0.0416 -421 -13 14 -211 0.0031 -421 -13 14 -213 0.0031 -421 -321 211 0 0.0563 -421 -323 211 0 0.0694 -421 -321 213 0 0.1124 -421 -323 213 0 0.0956 -421 -311 111 0 0.0324 -421 -313 111 0 0.0324 -421 -313 221 0 0.0324 -421 -311 113 0 0.0094 -421 -313 113 0 0.0231 -421 -311 223 0 0.0385 -421 -311 333 0 0.0136 -421 -321 20213 0 0.1141 -421 -10323 211 0 0.0168 -421 -321 321 0 0.0063 -421 -323 321 0 0.0031 -421 -321 321 0 0.0054 -421 -311 311 0 0.0017 -421 -313 311 0 0.0015 -421 -313 313 0 0.0042 -421 211 -211 0 0.0025 -421 111 111 0 0.0025 -421 333 113 0 0.0028 -421 -321 211 111 0.0170 -421 -321 211 113 0.0097 -421 -321 321 -311 0.0080 -421 -311 211 -211 0.0277 -421 -313 211 -211 0.0247 -421 -321 311 211 0.0052 -421 -313 321 -211 0.0055 -421 311 311 311 0.0014 -421 333 211 -211 0.0009 -421 211 -211 111 0.0231 --421 11 -12 321 0.0524 --421 11 -12 323 0.0416 --421 11 -12 211 0.0031 --421 11 -12 213 0.0031 --421 13 -14 321 0.0524 --421 13 -14 323 0.0416 --421 13 -14 211 0.0031 --421 13 -14 213 0.0031 --421 321 -211 0 0.0563 --421 323 -211 0 0.0694 --421 321 -213 0 0.1124 --421 323 -213 0 0.0956 --421 311 111 0 0.0324 --421 313 111 0 0.0324 --421 313 221 0 0.0324 --421 311 113 0 0.0094 --421 313 113 0 0.0231 --421 311 223 0 0.0385 --421 311 333 0 0.0136 --421 321 -20213 0 0.1141 --421 10323 -211 0 0.0168 --421 321 -321 0 0.0063 --421 323 -321 0 0.0031 --421 321 -321 0 0.0054 --421 311 -311 0 0.0017 --421 313 -311 0 0.0015 --421 313 -313 0 0.0042 --421 -211 211 0 0.0025 --421 111 111 0 0.0025 --421 333 113 0 0.0028 --421 321 -211 111 0.0170 --421 321 -211 113 0.0097 --421 321 -321 311 0.0080 --421 311 -211 211 0.0277 --421 313 -211 211 0.0247 --421 321 -311 -211 0.0052 --421 313 -321 211 0.0055 --421 -311 -311 -311 0.0014 --421 333 -211 211 0.0009 --421 -211 211 111 0.0231 -413 421 211 0 0.683 -413 411 111 0 0.306 -413 411 22 0 0.011 --413 -421 -211 0 0.683 --413 -411 111 0 0.306 --413 -411 22 0 0.011 -423 421 111 0 0.619 -423 421 22 0 0.381 --423 -421 111 0 0.619 --423 -421 22 0 0.381 -10411 421 211 0.667 -10411 411 111 0.333 --10411 -421 -211 0.667 --10411 -411 111 0.333 -10413 423 211 0.667 -10413 413 111 0.333 --10413 -423 -211 0.667 --10413 -413 111 0.333 -20413 423 211 0.667 -20413 411 111 0.333 --20413 -423 -211 0.667 --20413 -411 111 0.333 -20423 413 -211 0.667 -20423 423 111 0.333 --20423 -413 211 0.667 --20423 -423 111 0.333 -20433 423 321 0.5 -20433 413 323 0.5 --20433 -423 -321 0.5 --20433 -413 -323 0.5 -10421 411 -211 0.667 -10421 421 111 0.333 --10421 -411 211 0.667 --10421 -421 111 0.333 -10423 413 -211 0.667 -10423 423 111 0.333 --10423 -413 211 0.667 --10423 -423 111 0.333 -431 -15 16 0.010000 -431 -11 12 221 0.02 -431 -11 12 331 0.02 -431 -11 12 333 0.03 -431 -13 14 221 0.02 -431 -13 14 331 0.02 -431 -13 14 333 0.03 -431 221 211 0.015 -431 331 211 0.037 -431 333 211 0.028 -431 221 213 0.079 -431 331 213 0.095 -431 333 213 0.052 -431 10221 211 0.0078 -431 211 111 0.001 -431 213 111 0.001 -431 211 113 0.001 -431 213 113 0.028 -431 321 -311 0.033 -431 323 -311 0.026 -431 321 -313 0.05 -431 323 -313 0.01 -431 2212 -2112 0.005 -431 221 321 0.005 -431 331 321 0.005 -431 333 321 0.005 -431 221 323 0.005 --431 15 16 0.010000 --431 11 12 221 0.02 --431 11 12 331 0.02 --431 11 12 333 0.03 --431 13 14 221 0.02 --431 13 14 331 0.02 --431 13 14 333 0.03 --431 221 -211 0.015 --431 331 -211 0.037 --431 333 -211 0.028 --431 221 -213 0.079 --431 331 -213 0.095 --431 333 -213 0.052 --431 10221 -211 0.0078 --431 -211 111 0.001 --431 213 111 0.001 --431 -211 113 0.001 --431 213 113 0.028 --431 -321 -311 0.033 --431 -323 -311 0.026 --431 -321 313 0.05 --431 -323 313 0.01 --431 -2212 2112 0.005 --431 221 -321 0.005 --431 331 -321 0.005 --431 333 -321 0.005 --431 221 -323 0.005 -433 431 22 0.940000 -433 431 111 0.060000 --433 -431 22 0.94 --433 -431 111 0.06 -435 421 321 0.04 -435 421 311 0.4 -435 423 321 0.1 -435 413 311 0.1 --435 421 -321 0.4 --435 -411 311 0.4 --435 423 321 0.1 --435 -413 311 0.1 -10431 411 311 0.5 -10431 421 321 0.5 --10431 -411 311 0.5 --10431 421 -321 0.5 -10433 423 321 0.5 -10433 413 311 0.5 --10433 423 -321 0.5 --10433 -413 311 0.5 -100443 11 -11 0.0083 -100443 13 -13 0.0083 -100443 443 211 -211 0.324000 -100443 443 111 111 0.184000 -100443 443 221 0.027000 -100443 443 111 0.001000 -425 411 -211 0.3 -425 421 111 0.15 -425 413 -211 0.16 -425 423 111 0.08 -425 413 211 111 0.13 -425 423 211 -211 0.06 -425 411 -211 111 0.08 -425 421 211 -211 0.04 --425 -411 211 0.3 --425 -421 111 0.15 --425 -413 211 0.16 --425 -423 111 0.08 --425 -413 211 111 0.13 --425 423 -211 211 0.06 --425 -411 211 111 0.08 --425 -421 -211 211 0.04 -415 421 211 0.3 -415 411 111 0.15 -415 423 211 0.16 -415 413 111 0.08 -415 423 211 111 0.13 -415 413 211 -211 0.06 -415 421 211 111 0.08 -415 411 211 -211 0.04 -415 -421 -211 0.3 -415 -411 111 0.15 -415 -423 -211 0.16 -415 -413 111 0.08 -415 -423 -211 111 0.13 -415 -413 -211 211 0.06 -415 -421 -211 111 0.08 -415 -411 211 -211 0.04 -4122 -11 12 3122 0.018000 -4122 12 3212 -11 0.005000 -4122 -11 12 3214 0.005000 -4122 -11 12 2112 0.003000 -4122 -11 12 2114 0.002000 -4122 -13 14 3122 0.018000 -4122 -13 14 3212 0.005000 -4122 -13 14 3214 0.005000 -4122 -13 14 2112 0.003000 -4122 -13 14 2114 0.002000 -4122 2224 -321 0.006600 -4122 2224 -323 0.025000 -4122 2212 -311 0.016000 -4122 2212 -313 0.008800 -4122 2214 -311 0.005000 -4122 2214 -313 0.005000 -4122 3212 211 0.005800 -4122 3212 213 0.005000 -4122 3212 211 0.005500 -4122 3212 213 0.004000 -4122 3214 111 0.004000 -4122 3214 213 0.004000 -4122 3222 111 0.004000 -4122 3222 221 0.002000 -4122 3222 331 0.002000 -4122 3222 113 0.004000 -4122 3222 223 0.003000 -4122 3224 111 0.002000 -4122 3224 221 0.002000 -4122 3224 113 0.003000 -4122 3224 223 0.003000 -4122 3322 321 0.002000 -4122 3322 323 0.002000 -4122 3324 321 0.002000 -4122 2224 -211 0.00100 -4122 2224 -213 0.00100 -4122 2212 111 0.002000 -4122 2212 221 0.001000 -4122 2212 331 0.001000 -4122 2212 113 0.002000 -4122 2212 223 0.002000 -4122 2212 333 0.001300 -4122 2212 10221 0.0018 -4122 2214 111 0.001000 -4122 2214 221 0.001000 -4122 2214 331 0.001000 -4122 2214 113 0.001000 -4122 2214 223 0.001000 -4122 2112 211 0.003000 -4122 2112 213 0.003000 -4122 2114 211 0.003000 -4122 2114 213 0.003000 -4122 3122 321 0.005000 -4122 3122 323 0.005000 -4122 3212 321 0.002000 -4122 3212 323 0.002000 -4122 3214 321 0.001000 -4122 3214 323 0.001000 -4122 3222 313 0.002000 -4122 3224 311 0.001000 -4122 3224 313 0.001000 --4122 11 12 -3122 0.018000 --4122 12 -3212 11 0.005000 --4122 11 12 -3214 0.005000 --4122 11 12 -2112 0.003000 --4122 11 12 -2114 0.002000 --4122 13 14 -3122 0.018000 --4122 13 14 -3212 0.005000 --4122 13 14 -3214 0.005000 --4122 13 14 -2112 0.003000 --4122 13 14 -2114 0.002000 --4122 -2224 -321 0.006600 --4122 -2224 -323 0.025000 --4122 -2212 -311 0.016000 --4122 -2212 -313 0.008800 --4122 -2214 -311 0.005000 --4122 -2214 -313 0.005000 --4122 -3212 211 0.005800 --4122 -3212 213 0.005000 --4122 -3212 211 0.005500 --4122 -3212 -213 0.004000 --4122 -3214 111 0.004000 --4122 -3214 -213 0.004000 --4122 -3222 111 0.004000 --4122 -3222 221 0.002000 --4122 -3222 331 0.002000 --4122 -3222 113 0.004000 --4122 -3222 223 0.003000 --4122 -3224 111 0.002000 --4122 -3224 221 0.002000 --4122 -3224 113 0.003000 --4122 -3224 223 0.003000 --4122 -3322 -321 0.002000 --4122 -3322 -323 0.002000 --4122 -3324 -321 0.002000 --4122 -2224 211 0.00100 --4122 -2224 213 0.00100 --4122 -2212 111 0.002000 --4122 -2212 221 0.001000 --4122 -2212 331 0.001000 --4122 -2212 113 0.002000 --4122 -2212 223 0.002000 --4122 -2212 333 0.001300 --4122 -2212 10221 0.0018 --4122 -2214 111 0.001000 --4122 -2214 221 0.001000 --4122 -2214 331 0.001000 --4122 -2214 113 0.001000 --4122 -2214 223 0.001000 --4122 -2112 -211 0.003000 --4122 -2112 -213 0.003000 --4122 -2114 -211 0.003000 --4122 -2114 -213 0.003000 --4122 -3122 -321 0.005000 --4122 -3122 -323 0.005000 --4122 -3212 -321 0.002000 --4122 -3212 -323 0.002000 --4122 -3214 -321 0.001000 --4122 -3214 -323 0.001000 --4122 -3222 -313 0.002000 --4122 -3224 -311 0.001000 --4122 -3224 -313 0.001000 -4112 4122 -211 1.0 --4112 -4122 -211 1.0 -4212 4122 111 1.0 --4212 -4122 111 1.0 -4222 4122 211 1.0 --4222 -4122 211 1.0 -4114 4122 -211 1.0 --4114 -4122 -211 1.0 -4214 4122 111 1.0 --4214 -4122 111 1.0 -4224 4122 211 1.0 --4224 -4122 211 1.0 diff --git a/GeneratorInterface/Hydjet2Interface/interface/DatabasePDG.h b/GeneratorInterface/Hydjet2Interface/interface/DatabasePDG.h deleted file mode 100644 index f63143b48ce97..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/DatabasePDG.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decay lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef DATABASE_PDG -#define DATABASE_PDG - -#include "Rtypes.h" - -#ifndef PARTICLE_PDG -#include "ParticlePDG.h" -#endif - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CommonTools/UtilAlgos/interface/TFileService.h" -#include "DataFormats/HepMCCandidate/interface/GenParticle.h" - -const int kMaxParticles = 1000; - -class DatabasePDG { -private: - int fNParticles; // no. of particles in database - ParticlePDG *fParticles[kMaxParticles]; // array of particle pointers - bool fStatus[kMaxParticles]; // status of each particle - char fParticleFilename[256]; // particle list filename - char fDecayFilename[256]; // decay channels filename - bool fUseCharmParticles; // flag for using (or not) charm particles - double fMinimumWidth; // minimum allowed width for resonances - double fMaximumWidth; // maximum allowed width for resonances - double fMinimumMass; // minimum allowed mass for resonances - double fMaximumMass; // maximum allowed mass for resonances - - bool LoadParticles(); - bool LoadDecays(); - void SortParticles(); // put the good status particles at the beggining of the list -public: - DatabasePDG(); - ~DatabasePDG(); - - // Load the particle PDG information from the particle and decay files - bool LoadData(); - - // Set particle and decay filenames - void SetParticleFilename(char *filename); - void SetDecayFilename(char *filename); - // Set criteria for using particles. Those particle which do not match - // these criteria will be flagged with FALSE in the fStatus array. - void SetUseCharmParticles(bool flag); - void SetMinimumWidth(double value); - void SetMaximumWidth(double value); - void SetMinimumMass(double value); - void SetMaximumMass(double value); - void SetWidthRange(double min, double max); - void SetMassRange(double min, double max); - - // Read a list of pdg codes from a specified file. The corresponding particles - // will be flagged as good particles. If the exclusive flag is TRUE than - // only this criteria will be used in selecting particles and, in consequence, - // all the other particles will be flagged as NOT good. If the exclusive flag - // is FALSE than we will take into account all the previous applied criterias - // and we will flag as good only particles in this list which match also the mass, width and - // charmness criteria. - // Note: In order for the exclusive=FALSE to be effective, this function must be called after - // calling all the width, mass and charmness criteria functions. - void UseThisListOfParticles(char *filename, bool exclusive = kTRUE); - - char *GetParticleFilename() { return fParticleFilename; } - char *GetDecayFilename() { return fDecayFilename; } - int GetNParticles(bool all = kFALSE); // true - no. of all particles; false - no. of good status particles - ParticlePDG *GetPDGParticleByIndex(int index); - bool GetPDGParticleStatusByIndex(int index); - ParticlePDG *GetPDGParticle(int pdg); - bool GetPDGParticleStatus(int pdg); - ParticlePDG *GetPDGParticle(char *name); - bool GetPDGParticleStatus(char *name); - bool GetUseCharmParticles() { return fUseCharmParticles; }; - double GetMinimumWidth() { return fMinimumWidth; }; - double GetMaximumWidth() { return fMaximumWidth; }; - double GetMinimumMass() { return fMinimumMass; }; - double GetMaximumMass() { return fMaximumMass; }; - void DumpData(bool dumpAll = kFALSE); // print the PDG information in the console - int CheckImpossibleDecays(bool dump = kFALSE); // print all impossible decays included in the database - bool IsChannelAllowed(DecayChannel *channel, double motherMass); - int GetNAllowedChannels(ParticlePDG *particle, double motherMass); -}; -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/DecayChannel.h b/GeneratorInterface/Hydjet2Interface/interface/DecayChannel.h deleted file mode 100644 index fb956775e4374..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/DecayChannel.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decays lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef DECAY_CHANNEL -#define DECAY_CHANNEL - -#include "Rtypes.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -const int kMaxDaughters = 3; -const int kNonsensePDG = 1000000000; - -class DecayChannel { -private: - int fMotherPDG; - double fBranchingRatio; - int fNDaughters; - int fDaughtersPDG[kMaxDaughters]; - -public: - DecayChannel(); // default constructor - DecayChannel(const DecayChannel ©); // copy constructor - DecayChannel(int mother, double branching, int nDaughters, int *daughters); // explicit constructor - ~DecayChannel(){}; // destructor - - void SetMotherPDG(int value) { fMotherPDG = value; } - void SetBranching(double value) { fBranchingRatio = value; } - void SetDaughters(int *values, int n); - void AddDaughter(int pdg); - int GetMotherPDG() { return fMotherPDG; } - double GetBranching() { return fBranchingRatio; } - int GetNDaughters() { return fNDaughters; } - int *GetDaughters() { return fDaughtersPDG; } - int GetDaughterPDG(int i); // i --> must be the zero-based index of daughter -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.h b/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.h deleted file mode 100644 index 1e37d8e74de74..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ -//This equation solver class is taken from GEANT4 and modified!! - -#ifndef NAEquationSolver_h -#define NAEquationSolver_h 1 -#include -#include "MathUtil.h" - -#define DefaultTolerance 5.0e-14 - -template -class NAEquationSolver { -public: - enum { DefaultMaxIter = 100 }; - -private: - // Maximum number of iterations - int fMaxIter; - double fTolerance; - // interval limits [a,b] which should bracket the root - double fA; - double fB; - // root - double fRoot; - -public: - // default constructor - NAEquationSolver() : fMaxIter(DefaultMaxIter), fTolerance(DefaultTolerance), fA(0.0), fB(0.0), fRoot(0.0){}; - - NAEquationSolver(const int iterations, const double tol) - : fMaxIter(iterations), fTolerance(tol), fA(0.0), fB(0.0), fRoot(0.0){}; - - // copy constructor - NAEquationSolver(const NAEquationSolver& right); - - // destructor - ~NAEquationSolver(){}; - - // operators - NAEquationSolver& operator=(const NAEquationSolver& right); - bool operator==(const NAEquationSolver& right) const; - bool operator!=(const NAEquationSolver& right) const; - - int GetMaxIterations(void) const { return fMaxIter; } - void SetMaxIterations(const int iterations) { fMaxIter = iterations; } - - double GetTolerance(void) const { return fTolerance; } - void SetTolerance(const double epsilon) { fTolerance = epsilon; } - - double GetIntervalLowerLimit(void) const { return fA; } - double GetIntervalUpperLimit(void) const { return fB; } - - void SetIntervalLimits(const double Limit1, const double Limit2); - - double GetRoot(void) const { return fRoot; } - - // Calculates the root by the Brent's method - bool Brent(Function& theFunction); -}; - -#include "GeneratorInterface/Hydjet2Interface/interface/EquationSolver.icc" - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.icc b/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.icc deleted file mode 100644 index 6a32b00d9c086..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/EquationSolver.icc +++ /dev/null @@ -1,118 +0,0 @@ -/* - - Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna - amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru - November. 2, 2006 - -*/ -//This equation solver class is taken from GEANT4 and modified!! - -template -bool NAEquationSolver::Brent(Function& theFunction) { - const double precision = 3.0e-8; - - // Check the interval before start - if (fA > fB || Abs(fA - fB) <= fTolerance) { - std::cerr << "NAEquationSolver::Brent: The interval must be properly set." << std::endl; - return false; - } - double fa = theFunction(fA); - double fb = theFunction(fB); - if (fa * fb > 0.0) { - std::cerr << "NAEquationSolver::Brent: The interval must include a root." << std::endl; - return false; - } - - double c = fB; - double fc = fb; - double d = 0.0; - double e = 0.0; - - for (int i = 0; i < fMaxIter; i++) { - // Rename a,b,c and adjust bounding interval d - if (fb * fc > 0.0) { - c = fA; - fc = fa; - d = fB - fA; - e = d; - } - if (Abs(fc) < Abs(fb)) { - fA = fB; - fB = c; - c = fA; - fa = fb; - fb = fc; - fc = fa; - } - double Tol1 = 2.0 * precision * Abs(fB) + 0.5 * fTolerance; - double xm = 0.5 * (c - fB); - if (Abs(xm) <= Tol1 || fb == 0.0) { - fRoot = fB; - return true; - } - // Inverse quadratic interpolation - if (Abs(e) >= Tol1 && Abs(fa) > Abs(fb)) { - double s = fb / fa; - double p = 0.0; - double q = 0.0; - if (fA == c) { - p = 2.0 * xm * s; - q = 1.0 - s; - } else { - q = fa / fc; - double r = fb / fc; - p = s * (2.0 * xm * q * (q - r) - (fB - fA) * (r - 1.0)); - q = (q - 1.0) * (r - 1.0) * (s - 1.0); - } - // Check bounds - if (p > 0.0) - q = -q; - p = Abs(p); - double min1 = 3.0 * xm * q - Abs(Tol1 * q); - double min2 = Abs(e * q); - if (2.0 * p < Min(min1, min2)) { - // Interpolation - e = d; - d = p / q; - } else { - // Bisection - d = xm; - e = d; - } - } else { - // Bounds decreasing too slowly, use bisection - d = xm; - e = d; - } - // Move last guess to a - fA = fB; - fa = fb; - if (Abs(d) > Tol1) - fB += d; - else { - if (xm >= 0.0) - fB += Abs(Tol1); - else - fB -= Abs(Tol1); - } - fb = theFunction(fB); - } - std::cerr << "NAEquationSolver::Brent: Number of iterations exceeded." << std::endl; - return false; -} - -template -void NAEquationSolver::SetIntervalLimits(const double Limit1, const double Limit2) { - if (Abs(Limit1 - Limit2) <= fTolerance) { - std::cerr << "NAEquationSolver::SetIntervalLimits: Interval must be wider than tolerance." << std::endl; - return; - } - if (Limit1 < Limit2) { - fA = Limit1; - fB = Limit2; - } else { - fA = Limit2; - fB = Limit1; - } - return; -} diff --git a/GeneratorInterface/Hydjet2Interface/interface/GrandCanonical.h b/GeneratorInterface/Hydjet2Interface/interface/GrandCanonical.h deleted file mode 100644 index 90579a7677d28..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/GrandCanonical.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#ifndef GRANDCANONICAL_INCLUDED -#define GRANDCANONICAL_INCLUDED -#include "ParticlePDG.h" -#include "DatabasePDG.h" - -class GrandCanonical { -private: - double fTemperature; - double fBaryonPotential; - double fStrangePotential; - double fElectroPotential; - double fCharmPotential; - - // Number of terms for summation, if fNMax = 1 then - // Maxwell-Boltzmann distribution will be recovered - int fNMax; - bool fInitialized; - -public: - GrandCanonical(); - GrandCanonical(int nmax, - double temperature, - double baryonPotential, - double strangePotential, - double electroPotential, - double charmPotential); - ~GrandCanonical(); - - void Temperature(double value); - double Temperature() { return fTemperature; } - void BaryonPotential(double value); - double BaryonPotential() { return fBaryonPotential; } - void StrangePotential(double value); - double StrangePotential() { return fStrangePotential; } - void ElectroPotential(double value); - double ElectroPotential() { return fElectroPotential; } - void CharmPotential(double value); - double CharmPotential() { return fCharmPotential; } - - void NMax(int value); - int NMax() { return fNMax; } - - // compute of system baryon number, system strangeness, system charge and - // system energy - // calculate system energy density - double EnergyDensity(DatabasePDG* database); - // calculate system baryon density - double BaryonDensity(DatabasePDG* database); - // calculate system strangeness density - double StrangeDensity(DatabasePDG* database); - // calculate system electro density - double ElectroDensity(DatabasePDG* database); - // compute of particle number density - double CharmDensity(DatabasePDG* database); - - // compute of particle number density - double ParticleNumberDensity(ParticlePDG* particle); - // compute the particle energy density - double ParticleEnergyDensity(ParticlePDG* particle); -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/HYJET_COMMONS.h b/GeneratorInterface/Hydjet2Interface/interface/HYJET_COMMONS.h deleted file mode 100644 index 4c540e3671020..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/HYJET_COMMONS.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef HYJETCOMMON -#define HYJETCOMMON - -extern "C" { - -#define f2cFortran -#include "cfortran.h" - -//---------------------------------------------------------------- -// common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr -typedef struct //HYIPAR -{ - double bminh; - double bmaxh; - double AW; - double RA; - double npar0; - double nbco0; - double Apb; - double Rpb; - double np; - int init; - int ipr; -} HYIPARCommon; - -#define HYIPAR COMMON_BLOCK(HYIPAR, hyipar) -COMMON_BLOCK_DEF(HYIPARCommon, HYIPAR); -//---------------------------------------------------------------- - -// common/service/iseed_fromC,iPythDecay,parPYTH(100) -typedef struct //SERVICE -{ - int iseed_fromC; - int iPythDecay; - double charm; -} SERVICECommon; - -#define SERVICE COMMON_BLOCK(SERVICE, service) -COMMON_BLOCK_DEF(SERVICECommon, SERVICE); -//---------------------------------------------------------------- - -// common/SERVICEEV/ipdg,delta - -typedef struct //SERVICEEV -{ - float psiv3; - float delta; - int KC; - int ipdg; -} SERVICEEVCommon; - -#define SERVICEEV COMMON_BLOCK(SERVICEEV, serviceev) -COMMON_BLOCK_DEF(SERVICEEVCommon, SERVICEEV); - -//---------------------------------------------------------------- - -// common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet -typedef struct //HYJPAR -{ - double ptmin; - double sigin; - double sigjet; - int nhsel; - int iPyhist; - int ishad; - int njet; -} HYJPARCommon; - -#define HYJPAR COMMON_BLOCK(HYJPAR, hyjpar) -COMMON_BLOCK_DEF(HYJPARCommon, HYJPAR); -//---------------------------------------------------------------- - -// common /hypyin/ ene,rzta,rnta,bfix,ifb,nh -typedef struct //HYPYIN -{ - double ene; - double rzta; - double rnta; - double bfix; - int ifb; - int nh; -} HYPYINCommon; - -#define HYPYIN COMMON_BLOCK(HYPYIN, hypyin) -COMMON_BLOCK_DEF(HYPYINCommon, HYPYIN); - -//---------------------------------------------------------------- -// common /hyfpar/ bgen,nbcol,npart,npyt,nhyd,npart0 -typedef struct //HYFPAR -{ - double bgen; - double nbcol; - double npart; - double npart0; - int npyt; - int nhyd; -} HYFPARCommon; - -#define HYFPAR COMMON_BLOCK(HYFPAR, hyfpar) -COMMON_BLOCK_DEF(HYFPARCommon, HYFPAR); - -//---------------------------------------------------------------- -typedef struct //HYPART -{ - double ppart[150000][20]; - double bmin; - double bmax; - int njp; -} HYPARTCommon; - -#define HYPART COMMON_BLOCK(HYPART, hypart) -COMMON_BLOCK_DEF(HYPARTCommon, HYPART); -//---------------------------------------------------------------- - -// common /pyqpar/ T0,tau0,nf,ienglu,ianglu - -typedef struct //PYQPAR -{ - double T0; - double tau0; - int nf; - int ienglu; - int ianglu; -} PYQPARCommon; - -#define PYQPAR COMMON_BLOCK(PYQPAR, pyqpar) -COMMON_BLOCK_DEF(PYQPARCommon, PYQPAR); -} -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h b/GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h deleted file mode 100644 index 832dc5388caeb..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#ifndef HADRONDECAYER_INCLUDED -#define HADRONDECAYER_INCLUDED - -#include "DatabasePDG.h" -#include "Particle.h" - -double GetDecayTime(const Particle &p, double weakDecayLimit); -void Decay(List_t &output, Particle &p, ParticleAllocator &allocator, DatabasePDG *database); - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/HankelFunction.h b/GeneratorInterface/Hydjet2Interface/interface/HankelFunction.h deleted file mode 100644 index 5210793dea599..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/HankelFunction.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#ifndef HANKELFUNCTION_INCLUDED -#define HANKELFUNCTION_INCLUDED - -#include - -double HankelK0(double x); -double HankelK1(double x); -// compute modified Hankel function of the second,...,order -double HankelKn(int n, double x); - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/Hydjet2GeneratorFilter.h b/GeneratorInterface/Hydjet2Interface/interface/Hydjet2GeneratorFilter.h index f132974cc66ae..dbe0933f0e244 100644 --- a/GeneratorInterface/Hydjet2Interface/interface/Hydjet2GeneratorFilter.h +++ b/GeneratorInterface/Hydjet2Interface/interface/Hydjet2GeneratorFilter.h @@ -1,9 +1,17 @@ -#ifndef gen_HydjetGeneratorFilter_h -#define gen_HydjetGeneratorFilter_h +#ifndef gen_Hydjet2GeneratorFilter_h +#define gen_Hydjet2GeneratorFilter_h -#include "GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h" #include "GeneratorInterface/Core/interface/GeneratorFilter.h" #include "GeneratorInterface/ExternalDecays/interface/ExternalDecayDriver.h" +#include "GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h" + +namespace edm { + template <> + inline GeneratorFilter::GeneratorFilter(ParameterSet const &ps) + : hadronizer_(ps, consumesCollector()) { + init(ps); + } +} // namespace edm namespace gen { typedef edm::GeneratorFilter Hydjet2GeneratorFilter; diff --git a/GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h b/GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h index 0f5539c2e7d00..527a6552d2f3b 100644 --- a/GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h +++ b/GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h @@ -1,49 +1,30 @@ -/* - Based on class InitalStateHydjet: - Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna - amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru - November. 2, 2005 - -*/ - #ifndef Hydjet2Hadronizer_h #define Hydjet2Hadronizer_h -/** \class Hydjet2Hadronizer - * - * Generates HYDJET++ ==> HepMC events - * - * Andrey Belyaev - * for the Generator Interface. Sep 2014 - *********************************************/ - -#include "DatabasePDG.h" -#include "Particle.h" -#include "InitialState.h" - -#define PYCOMP pycomp_ +/** + * \class HydjetHadronizer + * \brief Interface to the HYDJET++ (Hydjet2) generator (since core v. 2.4.2), produces HepMC events + * \version 1.0 + * \author Andrey Belyaev + */ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "GeneratorInterface/Core/interface/BaseHadronizer.h" -#include "CLHEP/Random/RandomEngine.h" -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandPoisson.h" -#include "CLHEP/Random/RandGauss.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/EDProducer.h" +#include "FWCore/Utilities/interface/EDGetToken.h" +#include "SimDataFormats/CrossingFrame/interface/MixCollection.h" +#include "SimDataFormats/PileupSummaryInfo/interface/PileupMixingContent.h" +#include +#include #include #include #include -#include - -#include "HYJET_COMMONS.h" -extern HYIPARCommon HYIPAR; -extern HYFPARCommon HYFPAR; -extern HYJPARCommon HYJPAR; -extern HYPARTCommon HYPART; -extern SERVICECommon SERVICE; -#define kMax 500000 +#include +#include namespace CLHEP { class HepRandomEngine; @@ -52,197 +33,77 @@ namespace CLHEP { class RandGauss; } // namespace CLHEP -extern CLHEP::HepRandomEngine* hjRandomEngine; - namespace HepMC { class GenEvent; class GenParticle; class GenVertex; + class FourVector; } // namespace HepMC namespace gen { class Pythia6Service; - class Hydjet2Hadronizer : public InitialState, public BaseHadronizer { + class Hydjet2Hadronizer : public BaseHadronizer { public: - Hydjet2Hadronizer(const edm::ParameterSet&); + Hydjet2Hadronizer(const edm::ParameterSet &, edm::ConsumesCollector &&); ~Hydjet2Hadronizer() override; bool readSettings(int); - bool declareSpecialSettings(const std::vector&) { return true; } + bool declareSpecialSettings(const std::vector &) { return true; } bool initializeForInternalPartons(); bool initializeForExternalPartons(); //0 bool generatePartonsAndHadronize(); - bool declareStableParticles(const std::vector&); + bool declareStableParticles(const std::vector &); bool hadronize(); //0 bool decay(); //0 bool residualDecay(); void finalizeEvent(); void statistics(); - const char* classname() const; - - //________________________________________ - - void SetVolEff(double value) { fVolEff = value; } - double GetVolEff() { return fVolEff; } - bool RunDecays() override { return (fDecay > 0 ? kTRUE : kFALSE); } - double GetWeakDecayLimit() override { return fWeakDecay; } - - bool IniOfThFreezeoutParameters(); - - double f(double); - double f2(double, double, double); - - double SimpsonIntegrator(double, double, double, double); - double SimpsonIntegrator2(double, double, double, double); - double MidpointIntegrator2(double, double, double, double); - double CharmEnhancementFactor(double, double, double, double); + const char *classname() const; private: - void doSetRandomEngine(CLHEP::HepRandomEngine* v) override; + void doSetRandomEngine(CLHEP::HepRandomEngine *v) override; void rotateEvtPlane(); - bool get_particles(HepMC::GenEvent* evt); - HepMC::GenParticle* build_hyjet2(int index, int barcode); - HepMC::GenVertex* build_hyjet2_vertex(int i, int id); - void add_heavy_ion_rec(HepMC::GenEvent* evt); + bool get_particles(HepMC::GenEvent *evt); + HepMC::GenParticle *build_hyjet2(int index, int barcode); + HepMC::GenVertex *build_hyjet2_vertex(int i, int id); + void add_heavy_ion_rec(HepMC::GenEvent *evt); - std::vector const& doSharedResources() const override { return theSharedResources; } + std::vector const &doSharedResources() const override { return theSharedResources; } static const std::vector theSharedResources; inline double nuclear_radius() const; + InitialParamsHydjet_t fParams; + Hydjet2 *hj2; - double fVolEff; // the effective volume - - // the list of initial state parameters - - //int fNevnt; // number of events - double fSqrtS; // cms energy per nucleon - double fAw; // atomic number of colliding nuclei - int fIfb; // flag of type of centrality generation (=0 is fixed by fBfix, not 0 - // impact parameter is generated in each event between fBfmin - // and fBmax according with Glauber model (f-la 30) - double fBmin; // minimum impact parameter in units of nuclear radius RA - double fBmax; // maximum impact parameter in units of nuclear radius RA - double fBfix; // fix impact parameter in units of nuclear radius RA - - double fT; // chemical freeze-out temperature in GeV - double fMuB; // baryon potential - double fMuS; // strangeness potential - double fMuC; // charm potential - double fMuI3; // isospin potential - double fThFO; // thermal freeze-out temperature T^th in GeV - double fMu_th_pip; // effective chemical potential of positivly charged pions at thermal in GeV - - double fTau; // proper time value - double fSigmaTau; // its standart deviation (emission duration) - double fR; // maximal transverse radius - double fYlmax; // maximal longitudinal rapidity - double fUmax; // maximal transverse velocity multiplaed on \gamma_r - double fDelta; // momentum asymmetry parameter - double fEpsilon; // coordinate asymmetry parameter - int fIfDeltaEpsilon; // flag to specify fDelta and fEpsilon values(=0 user's ones, >=1 parametrized) - - int fDecay; // flag to switch on/off hadron decays (=0 decays off, >=1 decays on), (default: 1) - double fWeakDecay; // flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0) - int fPythDecay; // Flag to choose how to decay resonances in high-pt part, fPythDecay: 0 by PYTHIA decayer, - // 1 by FASTMC decayer(mstj(21)=0) - - int fEtaType; // flag to choose rapidity distribution, if fEtaType<=0, - // then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0, - // then Gaussian with dispertion = fYlmax - - int fTMuType; // flag to use calculated chemical freeze-out temperature, - // baryon potential and strangeness potential as a function of fSqrtS - - double fCorrS; // flag and value to include strangeness supression factor - int fCharmProd; // flag to include statistical charm production - double fCorrC; // flag and value to include charmness supression factor - - int fNhsel; // flag to switch on/off jet and hydro-state production (0: jet - // production off and hydro on, 1: jet production on and jet quenching - // off and hydro on, 2: jet production on and jet quenching on and - // hydro on, 3: jet production on and jet quenching off and hydro - // off, 4: jet production on and jet quenching on and hydro off - int fPyhist; // Suppress PYTHIA particle history (=1 only final state particles from hard part; =0 include full particle history) - int fIshad; // flag to switch on/off impact parameter dependent nuclear - // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off, - // 1: shadowing on for fAw=207, 197, 110, 40, default: 1 - - double fPtmin; // minimal transverse momentum transfer p_T of hard - // parton-parton scatterings in GeV (the PYTHIA parameter ckin(3)=fPtmin) - - // PYQUEN energy loss model parameters: - - double fT0; // initial temperature (in GeV) of QGP for - // central Pb+Pb collisions at mid-rapidity (initial temperature for other - // centralities and atomic numbers will be calculated automatically) (allowed range is 0.2 signalVtx_; // Pset double vector to set event signal vertex - edm::ParameterSet pset; - edm::Service fs; - - int ev, sseed, Njet, Nbcol, Npart, Ntot, Npyt, Nhyd; - double psiforv3; - float Bgen, Sigin, Sigjet; - float Px[kMax]; - float Py[kMax]; - float Pz[kMax]; - float E[kMax]; - float X[kMax]; - float Y[kMax]; - float Z[kMax]; - float T[kMax]; - int pdg[kMax]; - int Mpdg[kMax]; - int type[kMax]; - int pythiaStatus[kMax]; - int Index[kMax]; - int MotherIndex[kMax]; - int NDaughters[kMax]; - int FirstDaughterIndex[kMax]; - int LastDaughterIndex[kMax]; - int final[kMax]; - - ParticleAllocator allocator; - List_t source; + Pythia6Service *pythia6Service_; + edm::EDGetTokenT> src_; }; + double Hydjet2Hadronizer::nuclear_radius() const { // Return the nuclear radius derived from the // beam/target atomic mass number. - return 1.15 * pow((double)fAw, 1. / 3.); + + return 1.15 * pow((double)fParams.fAw, 1. / 3.); } } // namespace gen #endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/InitialState.h b/GeneratorInterface/Hydjet2Interface/interface/InitialState.h deleted file mode 100644 index fcb35d6ae565a..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/InitialState.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Ludmila Malinina malinina@lav01.sinp.msu.ru, SINP MSU/Moscow and JINR/Dubna - Ionut Arsene i.c.arsene@fys.uio.no, Oslo University and ISS-Bucharest - Date : 2007/05/30 -*/ - -#ifndef INITIALSTATE -#define INITIALSTATE -// Virtual class for the initial state classes -// Include here common methods, but always declare them as virtual -#include "Particle.h" -#include "DatabasePDG.h" - -class InitialState { -protected: - DatabasePDG *fDatabase; - -public: - InitialState() { - fDatabase = new DatabasePDG(); - fDatabase->LoadData(); - fDatabase->SetMassRange(0.0, 200.); - fDatabase->SetWidthRange(0., 10.); - }; - virtual ~InitialState() noexcept(false) { delete fDatabase; }; - - virtual bool RunDecays() = 0; - virtual double GetWeakDecayLimit() = 0; - - virtual void Evolve(List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit); -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/MathUtil.h b/GeneratorInterface/Hydjet2Interface/interface/MathUtil.h deleted file mode 100644 index 9b8b7625966c2..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/MathUtil.h +++ /dev/null @@ -1,67 +0,0 @@ -// -//############################################################################## -// -// Nikolai Amelin (C) JINR/Dubna 1999 -// -//############################################################################## -// - -#ifndef NAMathUtil_h -#define NAMathUtil_h 1 - -#include -#include -#include - -const double GeV = 1.; -const double fermi = 1.; -const double hbarc = 0.197 * GeV * fermi; -const double N_PI = 3.14159265359; - -const double N_INFINITY = 9.0E99; -const double N_SMALL = 1.E-10; - -template -inline void SwapObj(T* a, T* b) { - T tmp = *a; - *a = *b; - *b = tmp; -} - -template -inline void Swap(T& a, T& b) { - T tmp = a; - a = b; - b = tmp; -} - -template -inline T Min(T a, T b) { - return (a < b) ? a : b; -} - -template -inline T Max(T a, T b) { - return (a > b) ? a : b; -} - -template -inline T Abs(T a) { - return (a > 0) ? a : -a; -} - -template -inline T Sign(T A, T B) { - return (B > 0) ? Abs(A) : -Abs(A); -} -template -inline T min(T a, T b) { - return (a < b) ? a : b; -} - -template -inline T max(T a, T b) { - return (a > b) ? a : b; -} - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/Particle.h b/GeneratorInterface/Hydjet2Interface/interface/Particle.h deleted file mode 100644 index 6b0f755d9ce33..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/Particle.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#ifndef PARTICLE_INCLUDED -#define PARTICLE_INCLUDED - -#include - -#include -#include - -#include -#include "ParticlePDG.h" -#include - -class Particle { -protected: - TLorentzVector fPosition; - TLorentzVector fMomentum; - TLorentzVector fLastMotherDecayCoor; - TLorentzVector fLastMotherDecayMom; - ParticlePDG *fParticleProperties; - double fLastInteractionTime; - int fInteractionNumber; - int fPythiaStatusCode; - int fLastMotherPdg; - int fType; //0-hydro, 1-jets - int fIndex; // index (0 based) of particle in the final particle list which will contain both primaries and secondaries - int fMotherIndex; // index of the mother (-1 if its a primary particle) - int fNDaughters; // number of daughter particles (0 if the particle had not decayed) - int fFirstDaughterIndex; // index for the first daughter particle (-1 if non-existing) - int fLastDaughterIndex; // index for the last daughter particle (-1 if non-existing) - static int fLastIndex; // the last index assigned - bool fDecayed; // true if the decay procedure already applied - -public: - Particle(ParticlePDG *pdg = nullptr); - Particle(ParticlePDG *pdg, - const TLorentzVector &pos, - const TLorentzVector &mom, - double lastInterTime = 0., - int lastInterNum = 0, - int type = 0); - Particle(ParticlePDG *pdg, - const TLorentzVector &pos, - const TLorentzVector &mom, - double lastInterTime, - int lastInterNum, - int type, - int motherPdg, - const TLorentzVector &motherPos, - const TLorentzVector &motherMom); - - double X() const { return fPosition.X(); } - double X(double val) { - fPosition.SetX(val); - return val; - } - double Y() const { return fPosition.Y(); } - double Y(double val) { - fPosition.SetY(val); - return val; - } - double Z() const { return fPosition.Z(); } - double Z(double val) { - fPosition.SetZ(val); - return val; - } - double T() const { return fPosition.T(); } - double T(double val) { - fPosition.SetT(val); - return val; - } - double Px() const { return fMomentum.Px(); } - double Px(double val) { - fMomentum.SetPx(val); - return val; - } - double Py() const { return fMomentum.Py(); } - double Py(double val) { - fMomentum.SetPy(val); - return val; - } - double Pz() const { return fMomentum.Pz(); } - double Pz(double val) { - fMomentum.SetPz(val); - return val; - } - double E() const { return fMomentum.E(); } - double E(double val) { - fMomentum.SetE(val); - return val; - } - - TLorentzVector &Pos() { return fPosition; } - const TLorentzVector &Pos() const { return fPosition; } - TLorentzVector &Pos(const TLorentzVector &val) { return fPosition = val; } - TLorentzVector &Mom() { return fMomentum; } - const TLorentzVector &Mom() const { return fMomentum; } - TLorentzVector &Mom(const TLorentzVector &val) { return fMomentum = val; } - - void SetDecayed() { fDecayed = kTRUE; } - bool GetDecayed() const { return fDecayed; } - - void Boost(const TVector3 &val) { fMomentum.Boost(val); } - void Boost(const TLorentzVector &val) { fMomentum.Boost(val.BoostVector()); } - void TransformMomentum(const TRotation &rotator) { fMomentum *= rotator; } - void TransformPosition(const TRotation &rotator) { fPosition *= rotator; } - void Shift(const TVector3 &val) { fPosition += TLorentzVector(val, 0.); } - - //Pseudorapidity - double Eta() const; - //Rapidity - double Rapidity() const; - double Phi() const; - double Theta() const; - double Pt() const; - - int Encoding() const; - double TableMass() const; - ParticlePDG *Def() const { return fParticleProperties; } - ParticlePDG *Def(ParticlePDG *newProp) { return fParticleProperties = newProp; } - //mother - void SetLastMotherPdg(int value) { fLastMotherPdg = value; } - int GetLastMotherPdg() const { return fLastMotherPdg; } - - // aic(2008/08/08): functions added in order to enable tracking of mother/daughter particles by a unique index - // The index coincides with the position of the particle in the secondaries list. - int SetIndex() { - fIndex = ++fLastIndex; - return fIndex; - } - int GetIndex() { return fIndex; } - static int GetLastIndex() { return fLastIndex; } - static void InitIndexing() { fLastIndex = -1; } - void SetMother(int value) { fMotherIndex = value; } - int GetMother() { return fMotherIndex; } - void SetFirstDaughterIndex(int index) { fFirstDaughterIndex = index; } - void SetLastDaughterIndex(int index) { fLastDaughterIndex = index; } - void SetPythiaStatusCode(int code) { fPythiaStatusCode = code; } - int GetPythiaStatusCode() { return fPythiaStatusCode; } - int GetNDaughters() { - if (fFirstDaughterIndex == -1 || fLastDaughterIndex == -1) - return 0; - else - return fLastDaughterIndex - fFirstDaughterIndex + 1; - } - int GetFirstDaughterIndex() { return fFirstDaughterIndex; } - int GetLastDaughterIndex() { return fLastDaughterIndex; } - - TLorentzVector &SetLastMotherDecayCoor(const TLorentzVector &val) { return fLastMotherDecayCoor = val; } - const TLorentzVector &GetLastMotherDecayCoor() const { return fLastMotherDecayCoor; } - TLorentzVector &SetLastMotherDecayMom(const TLorentzVector &val) { return fLastMotherDecayMom = val; } - const TLorentzVector &GetLastMotherDecayMom() const { return fLastMotherDecayMom; } - - void SetLastInterTime(double value) { fLastInteractionTime = value; } - double GetLastInterTime() const { return fLastInteractionTime; } - void SetLastInterNumber(int value) { fInteractionNumber = value; } - int GetLastInterNumber() const { return fInteractionNumber; } - void IncInter() { ++fInteractionNumber; } - - void SetType(int value) { fType = value; } - int GetType() const { return fType; } -}; - -double S(const TLorentzVector &, const TLorentzVector &); -double T(const TLorentzVector &, const TLorentzVector &); - -typedef std::list List_t; -typedef std::list::iterator LPIT_t; - -class ParticleAllocator { -public: - void AddParticle(const Particle &particle, List_t &list); - void FreeListNode(List_t &list, LPIT_t it); - void FreeList(List_t &list); - -private: - List_t fFreeNodes; -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h b/GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h deleted file mode 100644 index b969abbef66fb..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decay lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef PARTICLE_PDG -#define PARTICLE_PDG - -#include "Rtypes.h" - -#ifndef DECAY_CHANNEL -#include "DecayChannel.h" -#endif - -const int kMaxDecayChannels = 100; - -class ParticlePDG { -private: - char fName[9]; - int fPDG; - double fMass; - double fWidth; - double fSpin; // J - double fIsospin; // I - double fIsospinZ; // I3 - double fLightQuarkNumber; // u, d quark number - double fAntiLightQuarkNumber; // u-, d- quark number - double fStrangeQuarkNumber; // s quark number - double fAntiStrangeQuarkNumber; // s- quark number - double fCharmQuarkNumber; // c quark number - double fAntiCharmQuarkNumber; // c- quark number - int fNDecayChannels; - DecayChannel* fDecayChannels[kMaxDecayChannels]; - -public: - ParticlePDG(); - ParticlePDG(char* name, int pdg, double mass, double width); - ~ParticlePDG(); - - void AddChannel(DecayChannel& channel); - void SetName(char* name) { - for (int i = 0; i < 9; i++) - if (*(name + i) != '\0') - fName[i] = *(name + i); - else - break; - } - void SetPDG(int value) { fPDG = value; } - void SetMass(double value) { fMass = value; } - void SetWidth(double value) { fWidth = value; } - void SetSpin(double value) { fSpin = value; } - void SetIsospin(double value) { fIsospin = value; } - void SetIsospinZ(double value) { fIsospinZ = value; } - void SetLightQNumber(double value) { fLightQuarkNumber = value; } - void SetLightAQNumber(double value) { fAntiLightQuarkNumber = value; } - void SetStrangeQNumber(double value) { fStrangeQuarkNumber = value; } - void SetStrangeAQNumber(double value) { fAntiStrangeQuarkNumber = value; } - void SetCharmQNumber(double value) { fCharmQuarkNumber = value; } - void SetCharmAQNumber(double value) { fAntiCharmQuarkNumber = value; } - - char* GetName() { return fName; } - int GetPDG() { return fPDG; } - double GetMass() { return fMass; } - double GetWidth() { return fWidth; } - int GetNDecayChannels() { return fNDecayChannels; } - double GetSpin() { return fSpin; } - double GetIsospin() { return fIsospin; } - double GetIsospinZ() { return fIsospinZ; } - double GetLightQNumber() { return fLightQuarkNumber; } - double GetLightAQNumber() { return fAntiLightQuarkNumber; } - double GetStrangeQNumber() { return fStrangeQuarkNumber; } - double GetStrangeAQNumber() { return fAntiStrangeQuarkNumber; } - double GetCharmQNumber() { return fCharmQuarkNumber; } - double GetCharmAQNumber() { return fAntiCharmQuarkNumber; } - double GetBaryonNumber() { - return (fLightQuarkNumber + fStrangeQuarkNumber + fCharmQuarkNumber - fAntiLightQuarkNumber - - fAntiStrangeQuarkNumber - fAntiCharmQuarkNumber) / - 3.; - } - double GetStrangeness() { return (fAntiStrangeQuarkNumber - fStrangeQuarkNumber); } - double GetCharmness() { return (fCharmQuarkNumber - fAntiCharmQuarkNumber); } - double GetElectricCharge() { return fIsospinZ + (GetBaryonNumber() + GetStrangeness() + GetCharmness()) / 2.; } - - double GetFullBranching(); - DecayChannel* GetDecayChannel(int i) { - if (0 <= i && i < fNDecayChannels) - return fDecayChannels[i]; - else - return nullptr; - } -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/ParticleTable.h b/GeneratorInterface/Hydjet2Interface/interface/ParticleTable.h deleted file mode 100644 index 61433be822402..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/ParticleTable.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#ifndef PARTICLETABLE_INCLUDED -#define PARTICLETABLE_INCLUDED - -#include -#include - -struct ParticleInfo { - int fBaryonNumber; - int fStrangeness; - int fIsospin; - int fSpin; - int fCharge; - - ParticleInfo(int bN, int s, int s1, int s2, int c) { - fBaryonNumber = bN; - fStrangeness = s; - fIsospin = s1; //2S - fSpin = s2; //2I - fCharge = c; //fCharge = 2 * I3 - } -}; - -extern const std::map gParticleTable; -typedef std::map::const_iterator MapIt_t; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/RandArrayFunction.h b/GeneratorInterface/Hydjet2Interface/interface/RandArrayFunction.h deleted file mode 100644 index 9bd91668634b1..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/RandArrayFunction.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef RANDARRAYFUNCTION_INCLUDED -#define RANDARRAYFUNCTION_INCLUDED - -#include -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "CLHEP/Random/RandomEngine.h" -#include "CLHEP/Random/RandFlat.h" -extern CLHEP::HepRandomEngine *hjRandomEngine; -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ -//This class is taken from the GEANT4 tool kit and changed!!!!! - -//======================================================================================== -//RandArrayFunction defines several methods for shooting generally distributed random values, -//given a user-defined probability distribution function. - -//The probability distribution function Pdf must be provided by the user as an array of -//positive real numbers. The array size must also be provided. Pdf doesn't need to be -//normalized to 1. - -// if IntType = 0 ( default value ) a uniform random number is -// generated using the StandardRand() engine. The uniform number is then transformed -// to the user's distribution using the cumulative probability -// distribution constructed from his histogram. The cumulative -// distribution is inverted using a binary search for the nearest -// bin boundary and a linear interpolation within the -// bin. RandArrayFunction therefore generates a constant density within -// each bin. -// if IntType = 1 no interpolation is performed and the result is a -// discrete distribution. - -//A speculate set of Shoot()/ShootArray() and Fire()/FireArray() methods is provided -//to Shoot random numbers via an instantiated RandArrayFunction object. These methods -//act directly on the flat distribution provided by a StandardRand() engine. -//An Operator () is also provided. - -// example. -// ... -// double* Pdf; -// int fNBins; -// ... -// RandArrayFunction FunctDist(Pdf,fNBins); -// ... -// double num = FunctDist.Shoot();//Shoot() provides the same functionality as Fire() - -// example. -// ... -// double* Pdf; -// int fNBins; -// ... -// RandArrayFunction FunctDist(Pdf,fNBins); -// ... -// double num = FunctDist(); - -// example. -// ... -// double* Pdf; -// int fNBins; -// ... -// RandArrayFunction FunctDist(Pdf,fNBins); -// ... -// int size = 50; -// double* vect = new double[size]; -// FunctDist.FireArray (size, vect); - -//======================================================================================== - -class RandArrayFunction { -private: - std::vector fIntegralPdf; - int fNBins; - double fOneOverNbins; - int fInterpolationType; - -public: - RandArrayFunction(const double *aProbFunc, int theProbSize, int interpolationType = 0); - RandArrayFunction(int probSize, int interpolationType = 0); - - double Shoot() const; - double Fire() const; - double operator()() const; - void ShootArray(int size, double *array) const; - void FireArray(int size, double *array) const; - - void PrepareTable(const double *aProbFunc); - -private: - void UseFlatDistribution(); - double MapRandom(double rand) const; - double StandardRand() const; -}; - -inline double RandArrayFunction::StandardRand() const { return CLHEP::RandFlat::shoot(hjRandomEngine); } - -inline double RandArrayFunction::Fire() const { return MapRandom(StandardRand()); } - -inline double RandArrayFunction::Shoot() const { return Fire(); } - -inline double RandArrayFunction::operator()() const { return Fire(); } - -inline void RandArrayFunction::ShootArray(int size, double *array) const { FireArray(size, array); } - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/StrangeDensity.h b/GeneratorInterface/Hydjet2Interface/interface/StrangeDensity.h deleted file mode 100644 index 4653dc7427635..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/StrangeDensity.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -//This class is used to obtain grand canonical description of strange density -//by means of the temperature and chemical potentials (input). As for output -//we get strange density. - -#ifndef NAStrangeDensity_h -#define NAStrangeDensity_h 1 - -#include "MathUtil.h" - -#include "HankelFunction.h" -#include "Particle.h" -#include "DatabasePDG.h" -#include "ParticlePDG.h" - -class NAStrangeDensity { -private: - //input - double fTemperature; - double fBaryonPotential; - double fStrangePotential; - int fNMax; //number of terms for summation, if nMax = 1 then - //Maxwell-Boltzmann distribution will be recovered - - double ParticleNumberDensity(ParticlePDG* particle); - -public: - NAStrangeDensity(); - ~NAStrangeDensity(){}; - - //for input - void SetTemperature(double value) { fTemperature = value; } - void SetBaryonPotential(double value) { fBaryonPotential = value; } - void SetStrangePotential(double value) { fStrangePotential = value; } - void SetNMax(int value) { - fNMax = value; - if (fNMax < 1) - fNMax = 1; - } - // compute hadron system strangeness density - double StrangenessDensity(DatabasePDG* database); -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/StrangePotential.h b/GeneratorInterface/Hydjet2Interface/interface/StrangePotential.h deleted file mode 100644 index afb642a014a89..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/StrangePotential.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -//This class is used to calculate strange potential from -//the known initial strange density = 0 at given temperature and baryon potential. - -#ifndef NAStrangePotential_h -#define NAStrangePotential_h 1 - -#include "StrangeDensity.h" -#include "EquationSolver.h" -#include "DatabasePDG.h" - -class NAStrangePotential { -private: - double fTemperature; - double fBaryonPotential; - double fStrangeDensity; - double fMinStrangePotential; //initial min value of strange potential - double fMaxStrangePotential; //initial max value of strange potential - int fNIteration; //to find proper [minStrangePotential, maxStrangePotential] interval - int fNSolverIteration; //to find root in [minStrangePotential,maxStrangePotential] interval - double fTolerance; //to find root - DatabasePDG* fDatabase; - NAStrangeDensity fGc; - //compute hadron system strange density through strange potential - double CalculateStrangeDensity(const double strangePotential); - //default constructor is not accesible - NAStrangePotential(){}; - -public: - NAStrangePotential(const double initialStrangeDensity, DatabasePDG* database) - : fStrangeDensity(initialStrangeDensity), - fMinStrangePotential(0.0001 * GeV), - fMaxStrangePotential(0.9 * GeV), - fNIteration(100), - fNSolverIteration(100), - fTolerance(1.e-8), - fDatabase(database){}; - - ~NAStrangePotential(){}; - - double operator()(const double strangePotential) { - return (fStrangeDensity - this->CalculateStrangeDensity(strangePotential)) / fStrangeDensity; - } - - void SetTemperature(double value) { fTemperature = value; } - void SetBaryonPotential(double value) { fBaryonPotential = value; } - void SetMinStrangePotential(double value) { fMinStrangePotential = value; } - void SetMaxStrangePotential(double value) { fMaxStrangePotential = value; } - double CalculateStrangePotential(); -}; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/interface/UKUtility.h b/GeneratorInterface/Hydjet2Interface/interface/UKUtility.h deleted file mode 100644 index 623d3c12f3ed8..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/interface/UKUtility.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 -*/ - -#ifndef UKUTILITY_INCLUDED -#define UKUTILITY_INCLUDED - -class TLorentzVector; -class TVector3; -class TH1F; - -class Particle; - -void IsotropicR3(double r, double *pX, double *pY, double *pZ); -void IsotropicR3(double r, TVector3 &pos); -void MomAntiMom(TLorentzVector &mom, double mass, TLorentzVector &antiMom, double antiMass, double initialMass); - -extern const double GeV; -extern const double MeV; -extern const double fermi; -extern const double mbarn; -extern const double hbarc; -extern const double w; -extern const double hbarc_squared; - -#endif diff --git a/GeneratorInterface/Hydjet2Interface/python/hydjet2DefaultParameters_cff.py b/GeneratorInterface/Hydjet2Interface/python/hydjet2DefaultParameters_cff.py index 7bd6eac3b5d0f..50b82702e9801 100644 --- a/GeneratorInterface/Hydjet2Interface/python/hydjet2DefaultParameters_cff.py +++ b/GeneratorInterface/Hydjet2Interface/python/hydjet2DefaultParameters_cff.py @@ -2,9 +2,45 @@ from Configuration.Generator.PythiaUESettings_cfi import * +collisionParametersRHIC200GeV = cms.PSet( + fAw = cms.double(197.0), # beam/target atomic number + fSqrtS = cms.double(200.0), # + fMuB = cms.double(0.0285), # Chemical baryon potential per unit charge, fMuB [GeV] + fMuS = cms.double(0.007), # Chemical strangeness potential per unit charge, fMuS [GeV] + fMuI3 = cms.double(-0.001), # Chemical isospin potential per unit charge, fMuI3 [GeV] + + ### Thermodinamic parameters at thermal freez-out ### + fThFO = cms.double(0.1), # Temperature at thermal freeze-out, fTthFO [GeV] + fMu_th_pip = cms.double(0.06), # Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] + + ### Maximal longitudinal flow rapidity at thermal freeze-out ### + fYlmax = cms.double(3.3), # Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax + fUmax = cms.double(1.1), # Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax + fPtmin = cms.double(3.55), # Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c] + fT0 = cms.double(0.3), # Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]; allowed range [0.2,2.0]GeV; + + ### Volume parameters at thermal freeze-out ### + fTau = cms.double(8.), # Proper time proper at thermal freeze-out for central collisions, fTau [fm/c] + fR = cms.double(10.), # Maximal transverse radius at thermal freeze-out for central collisions, fR [fm] + fSigmaTau = cms.double(2.), # Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] + + fWeakDecay = cms.double(0.), # Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays +) + collisionParameters2760GeV = cms.PSet( fAw = cms.double(208.0), # beam/target atomic number fSqrtS = cms.double(2760.0), # + fMuB = cms.double(0.), # Chemical baryon potential per unit charge, fMuB [GeV] + fMuS = cms.double(0.), # Chemical strangeness potential per unit charge, fMuS [GeV] + fMuI3 = cms.double(0.), # Chemical isospin potential per unit charge, fMuI3 [GeV] + + ### Thermodinamic parameters at thermal freez-out ### + fThFO = cms.double(0.105), # Temperature at thermal freeze-out, fTthFO [GeV] + fMu_th_pip = cms.double(0.), # Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] + + ### Maximal longitudinal flow rapidity at thermal freeze-out ### + fYlmax = cms.double(4.5), # Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax + fUmax = cms.double(1.265), # Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax fPtmin = cms.double(8.2), # Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c] fT0 = cms.double(1.), # Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]; allowed range [0.2,2.0]GeV; @@ -12,97 +48,126 @@ ### Volume parameters at thermal freeze-out ### fTau = cms.double(12.2), # Proper time proper at thermal freeze-out for central collisions, fTau [fm/c] fR = cms.double(13.45), # Maximal transverse radius at thermal freeze-out for central collisions, fR [fm] + fSigmaTau = cms.double(3.5), # Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] + + fWeakDecay = cms.double(0.000000000000001), # Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays + ) collisionParameters5020GeV = cms.PSet( - fAw = cms.double(208.0), ## beam/target atomic number + fAw = cms.double(208.0), # beam/target atomic number fSqrtS = cms.double(5020.0), + fMuB = cms.double(0.), # Chemical baryon potential per unit charge, fMuB [GeV] + fMuS = cms.double(0.), # Chemical strangeness potential per unit charge, fMuS [GeV] + fMuI3 = cms.double(0.), # Chemical isospin potential per unit charge, fMuI3 [GeV] + + ### Thermodinamic parameters at thermal freez-out ### + fThFO = cms.double(0.105), # Temperature at thermal freeze-out, fTthFO [GeV] + fMu_th_pip = cms.double(0.), # Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] + + ### Maximal longitudinal flow rapidity at thermal freeze-out ### + fYlmax = cms.double(4.5), # Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax + + fUmax = cms.double(1.35), # Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax fPtmin = cms.double(10.), # Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c] - fT0 = cms.double(1.1), # Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]; allowed range [0.2,2.0]GeV; + fT0 = cms.double(1.1), # Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]; allowed range [0.2,2.0]GeV; ### Volume parameters at thermal freeze-out ### fTau = cms.double(13.2), # Proper time proper at thermal freeze-out for central collisions, fTau [fm/c] fR = cms.double(13.9), # Maximal transverse radius at thermal freeze-out for central collisions, fR [fm] + fSigmaTau = cms.double(2.), # Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] + + fWeakDecay = cms.double(0.000000000000001), # Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays ) -qgpParameters = cms.PSet( +qgpParametersLHC = cms.PSet( fTau0 = cms.double(0.1), # Proper QGP formation time in fm/c, fTau0 (0.010 calculated) + fTMuType = cms.double(0.), # Flag to use calculated T_ch, mu_B and mu_S as a function of fSqrtS, fTMuType (=0 user's ones, >0 calculated) fT = cms.double(0.165), # Temperature at chemical freeze-out, fT [GeV] - fMuB = cms.double(0.), # Chemical baryon potential per unit charge, fMuB [GeV] - fMuS = cms.double(0.), # Chemical strangeness potential per unit charge, fMuS [GeV] fMuC = cms.double(0.), # Chemical charm potential per unit charge, fMuC [GeV] (used if charm production is turned on) - fMuI3 = cms.double(0.), # Chemical isospin potential per unit charge, fMuI3 [GeV] - - ### Thermodinamic parameters at thermal freez-out ### - fThFO = cms.double(0.105), # Temperature at thermal freeze-out, fTthFO [GeV] - fMu_th_pip = cms.double(0.), # Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] - - ### Volume parameters at thermal freeze-out ### - fSigmaTau = cms.double(3.5), # Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] - ### Strangeness suppression factor ### fCorrS = cms.double(1.), # Strangeness supression factor gamma_s with fCorrS value (00)/OFF(0) elliptic modulations of collective velocity profile for the alternative treatment of anisotropic flow + fRhou3 = cms.double(0.), # Parameter to specify/switch ON(>0)/OFF(0) triangular modulations of collective velocity profile for the alternative treatment of anisotropic flow + + fRhou4 = cms.double(0.), # Parameter to specify/switch ON(>0)/OFF(0) quadrangular modulations of collective velocity profile for the alternative treatment of anisotropic flow + ### Anizotropy parameter at thermal freeze-out ### - fIfDeltaEpsilon = cms.double(1.), # Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated) + fIfDeltaEpsilon = cms.double(1.), # Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated) fDelta = cms.double(0.1), # Momentum azimuthal anizotropy parameter at thermal freeze-out, fDelta - fEpsilon = cms.double(0.05), # Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon + fEpsilon = cms.double(0.05), # Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon + + fKeps2 = cms.double(0.34), # Parameter to specify/switch ON(>0)/OFF(0) elliptic flow fluctuations + + fKeps3 = cms.double(0.52), # Parameter to specify/switch ON(>0)/OFF(0) triangular flow fluctuations ### Decays ### fDecay = cms.int32(1), # Flag to switch on/off hadron decays, fDecay (=0 decays off, >=1 decays on) - fWeakDecay = cms.double(0.000000000000001), # Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays ### Charm ### - fCharmProd = cms.int32(1), # Flag to include thermal charm production, fIcharm (=0 no charm production, >=1 charm production) + fCharmProd = cms.int32(1), # Flag to include thermal charm production, fCharmProd (=0 no charm production, >=1 charm production) fCorrC = cms.double(-1.), # Charmness enhancement factor gamma_c with fCorrC value (fCorrC >0, if fCorrC<0 then it is calculated) - fEtaType = cms.double(1.), # Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax) + fEtaType = cms.double(1.), # Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax) fIshad = cms.int32(1), # Flag to switch on/off nuclear shadowing, fIshad (0 shadowing off, 1 shadowing on) - fPyhist = cms.int32(0), # Flag to suppress the output of particle history from PYTHIA, fPyhist (=1 only final state particles; =0 full particle history from PYTHIA) - fIenglu = cms.int32(0), # Flag to fix type of partonic energy loss, fIenglu (0 radiative and collisional loss, 1 radiative loss only, 2 collisional loss only) - fIanglu = cms.int32(1), # Flag to fix type of angular distribution of in-medium emitted gluons, fIanglu (0 small-angular, 1 wide-angular, 2 collinear). - embeddingMode = cms.bool(False), - rotateEventPlane = cms.bool(True) + fPyhist = cms.int32(0), # Flag to suppress the output of particle history from PYTHIA, fPyhist (=1 only final state particles; =0 full particle history from PYTHIA) + fIenglu = cms.int32(0), # Flag to fix type of partonic energy loss, fIenglu (0 radiative and collisional loss, 1 radiative loss only, 2 collisional loss only) + fIanglu = cms.int32(0), # Flag to fix type of angular distribution of in-medium emitted gluons, fIanglu (0 small-angular, 1 wide-angular, 2 collinear). + embeddingMode = cms.int32(0), + rotateEventPlane= cms.bool(True) ) PythiaDefaultBlock = cms.PSet( pythiaUESettingsBlock, TDB = cms.vstring( - 'PARJ(14)=0.' # ! replacing the same parametr from pythiaQuarkoniaSettings block to avoid producing h'_1 (pdg - 10333) + 'PARJ(14)=0.' # ! replacing the same parametr from pythiaQuarkoniaSettings block to avoid producing h'_1 (pdg - 10333) ), hydjet2PythiaDefault = cms.vstring( 'MSEL=1', # ! type of hard QCD production process 'MSTU(21) = 1', # ! controle parameter to avoid stopping run 'PARU(14)=1.', # ! tolerance parameter to adjust fragmentation' + 'MSTP(81)=1', # ! pp multiple scattering on (UE model) 'MSTJ(21) = 1', # ! hadron decays on (if off - decays by FASTMC decayer) 'MSTP(2) = 1', # ! which order running alphaS - 'MSTJ(22)=2', # ! particle decays if lifetime < parj(71) - 'PARJ(71)=10.', # ! ctau=10 mm - 'MSTP(52) = 1', # ! NO LAPDF - 'mstp(122)=0' # ! no printout of Pythia initialization information hereinafter + 'MSTP(33) = 0', # ! inclusion of k factor in cross section (on/off) + + #Mod for proQ20 + 'parp(67)=1.', # ! ISR Q2max factor (amount of initial-state radiation) + 'parp(82)=2.', # ! UE IR cutoff at reference ecm + 'mstj(11)=3', # ! HAD choice of fragmentation function(s) + + #'MSTJ(22)=2', # ! particle decays if lifetime < parj(71) + #'PARJ(71)=10.',# ! ctau=10 mm + #'MSTP(52) = 1',# ! NO LAPDF + #'mstp(122)=0' # ! no printout of Pythia initialization information hereinafter ), ProQ2Otune = cms.vstring( 'mstp(51)=7', # ! PDF set: structure function chosen - CTEQ5M pdf 'mstp(3)=2', # ! QCD switch for choice of LambdaQCD 'parp(62)=2.9', # ! ISR IR cutoff 'parp(64)=0.14',# ! ISR renormalization scale prefactor - 'parp(67)=2.65',# ! ISR Q2max factor + #'parp(67)=2.65',# ! ISR Q2max factor 'mstp(68)=3', # ! ISR phase space choice & ME corrections 'parp(71)=4.', # ! FSR Q2max factor for non-s-channel procs 'parj(81)=0.29',# ! FSR Lambda_QCD scale 'parj(82)=1.65',# ! FSR IR cutoff 'mstp(33)=0', # ! "K" switch for K-factor on/off & type 'mstp(81)=1', # ! UE model - 'parp(82)=1.9', # ! UE IR cutoff at reference ecm + #'parp(82)=1.9',# ! UE IR cutoff at reference ecm 'parp(89)=1800.',# ! UE IR cutoff reference ecm 'parp(90)=0.22',# ! UE IR cutoff ecm scaling power 'mstp(82)=4', # ! UE hadron transverse mass distribution @@ -113,7 +178,7 @@ 'mstp(91)=1', # ! BR primordial kT distribution 'parp(91)=2.1', # ! BR primordial kT width <|kT|> 'parp(93)=5.', # ! BR primordial kT UV cutoff - 'mstj(11)=5', # ! HAD choice of fragmentation function(s) + #'mstj(11)=5', # ! HAD choice of fragmentation function(s) 'parj(1)=0.073',# ! HAD diquark suppression 'parj(2)=0.2', # ! HAD strangeness suppression 'parj(3)=0.94', # ! HAD strange diquark suppression diff --git a/GeneratorInterface/Hydjet2Interface/python/hydjet2Default_cfi.py b/GeneratorInterface/Hydjet2Interface/python/hydjet2Default_cfi.py index 0ffab5aa1977c..aa7c0f8f2ac32 100644 --- a/GeneratorInterface/Hydjet2Interface/python/hydjet2Default_cfi.py +++ b/GeneratorInterface/Hydjet2Interface/python/hydjet2Default_cfi.py @@ -6,23 +6,23 @@ generator = cms.EDFilter("Hydjet2GeneratorFilter", collisionParameters5020GeV, - qgpParameters, + qgpParametersLHC, hydjet2Parameters, - fNhsel = cms.int32(2), # Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) + fNhsel = cms.int32(2), # Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) PythiaParameters = cms.PSet(PythiaDefaultBlock, parameterSets = cms.vstring( #'pythiaUESettings', 'ProQ2Otune', 'hydjet2PythiaDefault', - 'pythiaJets', - 'pythiaPromptPhotons', - 'myParameters', - 'pythiaZjets', - 'pythiaBottomoniumNRQCD', - 'pythiaCharmoniumNRQCD', - 'pythiaQuarkoniaSettings', - 'pythiaWeakBosons', - 'TDB' + #'pythiaJets', + #'pythiaPromptPhotons', + #'myParameters', + #'pythiaZjets', + #'pythiaBottomoniumNRQCD', + #'pythiaCharmoniumNRQCD', + #'pythiaQuarkoniaSettings', + #'pythiaWeakBosons', + #'TDB' ) ), @@ -30,31 +30,52 @@ pythiaPylistVerbosity = cms.untracked.int32(0), fIfb = cms.int32(1), # Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax]) - fBmin = cms.double(0.), # Minimum impact parameter, fBmin - fBmax = cms.double(30.), # Maximum impact parameter, fBmax - fBfix = cms.double(0.), # Fixed impact parameter, fBfix + fBmin = cms.double(0.), # Minimal impact parameter, fBmin (fm) + fBmax = cms.double(21.), # Maximal impact parameter, fBmax (fm) + fBfix = cms.double(0.), # Fixed impact parameter, fBfix (fm) ) ''' RA(Pb) ~= 6.813740957 fm +RA(Au) ~= 6.691445048 fm + + RHIC LHC +% centrality b/RA(Au) b/RA(Pb) +--------------------------------------------- +0 0 0 +--------------------------------------------- +5 0.5 0.51 +--------------------------------------------- +6 0.55 0.57 +--------------------------------------------- +10 0.72 0.74 +--------------------------------------------- +12 0.79 0.81 +--------------------------------------------- +15 0.89 0.91 +--------------------------------------------- +20 1.02 1.05 +--------------------------------------------- +25 1.15 1.18 +--------------------------------------------- +30 1.26 1.29 +--------------------------------------------- +35 1.36 1.39 +--------------------------------------------- +40 1.46 1.49 +--------------------------------------------- +45 1.55 1.58 +--------------------------------------------- +50 1.63 1.67 +--------------------------------------------- +55 1.71 1.75 +--------------------------------------------- +60 1.79 1.83 +--------------------------------------------- +65 1.86 1.90 +--------------------------------------------- +70 1.93 1.97 +--------------------------------------------- +75 2.01 2.06 -% cent b/RA -0 0 -5 0.51 -6 0.57 -10 0.74 -12 0.81 -15 0.91 -20 1.05 -25 1.18 -30 1.29 -35 1.39 -40 1.49 -45 1.58 -50 1.67 -55 1.75 -60 1.83 -65 1.90 -70 1.97 -75 2.06 ''' diff --git a/GeneratorInterface/Hydjet2Interface/python/hydjet2_RHIC200GV_cfi.py b/GeneratorInterface/Hydjet2Interface/python/hydjet2_RHIC200GV_cfi.py new file mode 100644 index 0000000000000..f7af1de2f637c --- /dev/null +++ b/GeneratorInterface/Hydjet2Interface/python/hydjet2_RHIC200GV_cfi.py @@ -0,0 +1,81 @@ +import FWCore.ParameterSet.Config as cms + +source = cms.Source("EmptySource") + +from GeneratorInterface.Hydjet2Interface.hydjet2DefaultParameters_cff import * + +generator = cms.EDFilter("Hydjet2GeneratorFilter", + collisionParametersRHIC200GeV, + qgpParametersRHIC, + hydjet2Parameters, + fNhsel = cms.int32(2), # Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) + PythiaParameters = cms.PSet(PythiaDefaultBlock, + parameterSets = cms.vstring( + #'pythiaUESettings', + 'ProQ2Otune', + 'hydjet2PythiaDefault', + #'pythiaJets', + #'pythiaPromptPhotons', + #'myParameters', + #'pythiaZjets', + #'pythiaBottomoniumNRQCD', + #'pythiaCharmoniumNRQCD', + #'pythiaQuarkoniaSettings', + #'pythiaWeakBosons', + #'TDB' + ) + ), + + maxEventsToPrint = cms.untracked.int32(0), + pythiaPylistVerbosity = cms.untracked.int32(0), + + fIfb = cms.int32(1), # Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax]) + fBmin = cms.double(0.), # Minimal impact parameter, fBmin (fm) + fBmax = cms.double(3.680294776), # Maximal impact parameter, fBmax (fm) + fBfix = cms.double(0.), # Fixed impact parameter, fBfix (fm) + +) +''' +RA(Pb) ~= 6.813740957 fm +RA(Au) ~= 6.691445048 fm + + RHIC LHC +% centrality b/RA(Au) b/RA(Pb) +--------------------------------------------- +0 0 0 +--------------------------------------------- +5 0.5 0.51 +--------------------------------------------- +6 0.55 0.57 +--------------------------------------------- +10 0.72 0.74 +--------------------------------------------- +12 0.79 0.81 +--------------------------------------------- +15 0.89 0.91 +--------------------------------------------- +20 1.02 1.05 +--------------------------------------------- +25 1.15 1.18 +--------------------------------------------- +30 1.26 1.29 +--------------------------------------------- +35 1.36 1.39 +--------------------------------------------- +40 1.46 1.49 +--------------------------------------------- +45 1.55 1.58 +--------------------------------------------- +50 1.63 1.67 +--------------------------------------------- +55 1.71 1.75 +--------------------------------------------- +60 1.79 1.83 +--------------------------------------------- +65 1.86 1.90 +--------------------------------------------- +70 1.93 1.97 +--------------------------------------------- +75 2.01 2.06 + +''' diff --git a/GeneratorInterface/Hydjet2Interface/src/DatabasePDG.cc b/GeneratorInterface/Hydjet2Interface/src/DatabasePDG.cc deleted file mode 100644 index c710030884291..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/DatabasePDG.cc +++ /dev/null @@ -1,662 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decay lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef DATABASE_PDG -#include "GeneratorInterface/Hydjet2Interface/interface/DatabasePDG.h" -#endif - -#include -#include -#include -#include - -using namespace std; -using namespace edm; - -const char *particlesDATAstr; -const char *tableDECAYstr; - -DatabasePDG::DatabasePDG() { - fNParticles = 0; - - std::string file1 = "GeneratorInterface/Hydjet2Interface/data/particles.data"; - edm::FileInPath f1(file1); - particlesDATAstr = ((f1.fullPath()).c_str()); - - std::string file2 = "GeneratorInterface/Hydjet2Interface/data/tabledecay.txt"; - edm::FileInPath f2(file2); - tableDECAYstr = ((f2.fullPath()).c_str()); - - strcpy(fParticleFilename, particlesDATAstr); - strcpy(fDecayFilename, tableDECAYstr); - for (int i = 0; i < kMaxParticles; i++) { - fParticles[i] = new ParticlePDG(); - fStatus[i] = kFALSE; - } - fUseCharmParticles = kTRUE; - fMinimumWidth = 0.; - fMaximumWidth = 10.; - fMinimumMass = 0.; - fMaximumMass = 200.; -} - -DatabasePDG::~DatabasePDG() { - for (int i = 0; i < kMaxParticles; i++) - delete fParticles[i]; -} - -void DatabasePDG::SetParticleFilename(char *filename) { strcpy(fParticleFilename, filename); } - -void DatabasePDG::SetDecayFilename(char *filename) { strcpy(fDecayFilename, filename); } - -bool DatabasePDG::LoadData() { return (LoadParticles() && LoadDecays()); } - -bool DatabasePDG::LoadParticles() { - ifstream particleFile; - particleFile.open(fParticleFilename); - if (!particleFile) { - edm::LogError("DatabasePDG") << "The ASCII file containing the PDG particle list " << fParticleFilename - << " was not found"; - return kFALSE; - } - - char name[9]; - double mass, width, spin, isospin, isospinZ, q, s, aq, as, c, ac; - int pdg; - int goodStatusParticles = 0; - - edm::LogInfo("DatabasePDG") << "Start loading particles with the following criteria:" << endl - << " Use particles containing charm quarks (1:yes;0:no) : " << fUseCharmParticles - << endl - << " Mass range : (" << fMinimumMass << "; " - << fMaximumMass << ")" << endl - << " Width range : (" << fMinimumWidth - << "; " << fMaximumWidth << ")"; - - particleFile.exceptions(ios::failbit); - while (!particleFile.eof()) { - try { - particleFile >> name >> mass >> width >> spin >> isospin >> isospinZ >> q >> s >> aq >> as >> c >> ac >> pdg; - } catch (ios::failure const &problem) { - LogDebug("DatabasePDG") << " ios:failure in particle file " << problem.what(); - break; - } - - fParticles[fNParticles]->SetName(name); - fParticles[fNParticles]->SetPDG(pdg); - fParticles[fNParticles]->SetMass(mass); - fParticles[fNParticles]->SetWidth(width); - fParticles[fNParticles]->SetSpin(spin); - fParticles[fNParticles]->SetIsospin(isospin); - fParticles[fNParticles]->SetIsospinZ(isospinZ); - fParticles[fNParticles]->SetLightQNumber(q); - fParticles[fNParticles]->SetStrangeQNumber(s); - fParticles[fNParticles]->SetLightAQNumber(aq); - fParticles[fNParticles]->SetStrangeAQNumber(as); - fParticles[fNParticles]->SetCharmQNumber(c); - fParticles[fNParticles]->SetCharmAQNumber(ac); - goodStatusParticles++; - fStatus[fNParticles] = kTRUE; - // check if we want charmed particles - if (!fUseCharmParticles && (c > 0 || ac > 0)) { - fStatus[fNParticles] = kFALSE; - goodStatusParticles--; - } - // check that the particle mass is inside accepted limits - if (!(fMinimumMass <= mass && mass <= fMaximumMass)) { - fStatus[fNParticles] = kFALSE; - goodStatusParticles--; - } - // check that the particle width is inside accepted limits - if (!(fMinimumWidth <= width && width <= fMaximumWidth)) { - fStatus[fNParticles] = kFALSE; - goodStatusParticles--; - } - - fNParticles++; - } - particleFile.close(); - if (fNParticles == 0) { - LogWarning("DatabasePDG") << " No particles were found in the file specified!!"; - return kFALSE; - } - SortParticles(); - edm::LogInfo("DatabasePDG") << " Particle definitions found: " << fNParticles - << ". Good status particles: " << goodStatusParticles; - return kTRUE; -} - -bool DatabasePDG::LoadDecays() { - ifstream decayFile; - decayFile.open(fDecayFilename); - if (!decayFile) { - edm::LogError("DatabasePDG") << "The ASCII file containing the decays list " << fDecayFilename << " was not found"; - return kFALSE; - } - - int mother_pdg, daughter_pdg[3]; - double branching; - - decayFile.exceptions(ios::failbit); - while (!decayFile.eof()) { - mother_pdg = 0; - for (int i = 0; i < 3; i++) - daughter_pdg[i] = 0; - branching = -1.0; - try { - decayFile >> mother_pdg; - for (int i = 0; i < 3; i++) - decayFile >> daughter_pdg[i]; - decayFile >> branching; - } catch (ios::failure const &problem) { - LogDebug("DatabasePDG") << " ios:failure in decay file " << problem.what(); - break; - } - if ((mother_pdg != 0) && (daughter_pdg[0] != 0) && (branching >= 0)) { - int nDaughters = 0; - for (int i = 0; i < 3; i++) - if (daughter_pdg[i] != 0) - nDaughters++; - ParticlePDG *particle = GetPDGParticle(mother_pdg); - if (!particle) { - LogWarning("DatabasePDG") << " Mother particle PDG (" << mother_pdg - << ") not found in the particle definition list:" << mother_pdg << " >>> "; - for (int kk = 0; kk < nDaughters; kk++) - LogWarning("DatabasePDG") << daughter_pdg[kk] << " "; - return kFALSE; - } - for (int kk = 0; kk < nDaughters; kk++) { - if (!GetPDGParticle(daughter_pdg[kk])) { - LogWarning("DatabasePDG") << "Daughter particle PDG (" << daughter_pdg[kk] - << ") not found in the particle definition list: " << mother_pdg << ">>> "; - for (int kkk = 0; kkk < nDaughters; kkk++) - LogWarning("DatabasePDG") << daughter_pdg[kkk] << " "; - } - } - DecayChannel decay(mother_pdg, branching, nDaughters, daughter_pdg); - particle->AddChannel(decay); - } - } - decayFile.close(); - int nDecayChannels = 0; - for (int i = 0; i < fNParticles; i++) { - nDecayChannels += fParticles[i]->GetNDecayChannels(); - } - edm::LogInfo("DatabasePDG") << "Number of decays found in the database is " << nDecayChannels; - return kTRUE; -} - -ParticlePDG *DatabasePDG::GetPDGParticleByIndex(int index) { - if (index < 0 || index > fNParticles) { - edm::LogWarning("DatabasePDG") << "Particle index is negative or too big !!" << endl - << " It must be inside this range: (0, " << fNParticles - 1 << ")" << endl - << " Returning null pointer!!"; - return nullptr; - } - return fParticles[index]; -} - -bool DatabasePDG::GetPDGParticleStatusByIndex(int index) { - if (index < 0 || index > fNParticles) { - edm::LogWarning("DatabasePDG") << "Particle index is negative or too big !!" << endl - << " It must be inside this range: (0, " << fNParticles - 1 << ")" << endl - << " Returning null pointer!!"; - return kFALSE; - } - return fStatus[index]; -} - -ParticlePDG *DatabasePDG::GetPDGParticle(int pdg) { - int nFindings = 0; - int firstTimeIndex = 0; - for (int i = 0; i < fNParticles; i++) { - if (pdg == fParticles[i]->GetPDG()) { - if (nFindings == 0) - firstTimeIndex = i; - nFindings++; - } - } - if (nFindings == 1) - return fParticles[firstTimeIndex]; - if (nFindings == 0) { - edm::LogWarning("DatabasePDG") << "The particle required with PDG: " << pdg << " was not found in the database!!"; - return nullptr; - } - if (nFindings >= 2) { - edm::LogWarning("DatabasePDG") << "The particle required with PDG: " << pdg << " was found with " << nFindings - << " entries in the database. Check it out !!" << endl - << "Returning the first instance found"; - return fParticles[firstTimeIndex]; - } - return nullptr; -} - -bool DatabasePDG::GetPDGParticleStatus(int pdg) { - int nFindings = 0; - int firstTimeIndex = 0; - for (int i = 0; i < fNParticles; i++) { - if (pdg == fParticles[i]->GetPDG()) { - if (nFindings == 0) - firstTimeIndex = i; - nFindings++; - } - } - if (nFindings == 1) - return fStatus[firstTimeIndex]; - if (nFindings == 0) { - edm::LogWarning("DatabasePDG") << "The particle required with PDG: " << pdg << " was not found in the database!!"; - return kFALSE; - } - if (nFindings >= 2) { - edm::LogWarning("DatabasePDG") << "The particle status required for PDG: " << pdg << " was found with " << nFindings - << " entries in the database. Check it out !!" << endl - << "Returning the status of first instance found"; - return fStatus[firstTimeIndex]; - } - return kFALSE; -} - -ParticlePDG *DatabasePDG::GetPDGParticle(char *name) { - int nFindings = 0; - int firstTimeIndex = 0; - for (int i = 0; i < fNParticles; i++) { - if (!strcmp(name, fParticles[i]->GetName())) { - if (nFindings == 0) - firstTimeIndex = i; - nFindings++; - } - } - if (nFindings == 1) - return fParticles[firstTimeIndex]; - if (nFindings == 0) { - edm::LogWarning("DatabasePDG") << "The particle required with name (" << name - << ") was not found in the database!!"; - return nullptr; - } - if (nFindings >= 2) { - edm::LogWarning("DatabasePDG") << "The particle required with name (" << name << ") was found with " << nFindings - << " entries in the database. Check it out !!" << endl - << "Returning the first instance found"; - return fParticles[firstTimeIndex]; - } - return nullptr; -} - -bool DatabasePDG::GetPDGParticleStatus(char *name) { - int nFindings = 0; - int firstTimeIndex = 0; - for (int i = 0; i < fNParticles; i++) { - if (!strcmp(name, fParticles[i]->GetName())) { - if (nFindings == 0) - firstTimeIndex = i; - nFindings++; - } - } - if (nFindings == 1) - return fStatus[firstTimeIndex]; - if (nFindings == 0) { - edm::LogWarning("DatabasePDG") << "The particle required with name (" << name - << ") was not found in the database!!"; - return kFALSE; - } - if (nFindings >= 2) { - edm::LogWarning("DatabasePDG") << "The particle status required for name (" << name << ") was found with " - << nFindings << " entries in the database. Check it out !!" << endl - << "Returning the first instance found"; - return fStatus[firstTimeIndex]; - } - return kFALSE; -} - -void DatabasePDG::DumpData(bool dumpAll) { - cout << "***********************************************************************************************************" - << endl; - cout << "Dumping all the information contained in the database..." << endl; - int nDecays = 0; - int nGoodStatusDecays = 0; - int nGoodStatusParticles = 0; - for (int currPart = 0; currPart < fNParticles; currPart++) { - nGoodStatusParticles += (fStatus[currPart] ? 1 : 0); - nGoodStatusDecays += (fStatus[currPart] ? fParticles[currPart]->GetNDecayChannels() : 0); - nDecays += fParticles[currPart]->GetNDecayChannels(); - if (!(dumpAll || (!dumpAll && fStatus[currPart]))) - continue; - cout << "###### Particle: " << fParticles[currPart]->GetName() << " with PDG code " - << fParticles[currPart]->GetPDG() << endl; - cout << " status = " << fStatus[currPart] << endl; - cout << " mass = " << fParticles[currPart]->GetMass() << " GeV" << endl; - cout << " width = " << fParticles[currPart]->GetWidth() << " GeV" << endl; - cout << " 2*spin = " << int(2. * fParticles[currPart]->GetSpin()) << endl; - cout << " 2*isospin = " << int(2. * fParticles[currPart]->GetIsospin()) << endl; - cout << " 2*isospin3 = " << int(2. * fParticles[currPart]->GetIsospinZ()) << endl; - cout << " u,d quarks = " << int(fParticles[currPart]->GetLightQNumber()) << endl; - cout << " s quarks = " << int(fParticles[currPart]->GetStrangeQNumber()) << endl; - cout << " c quarks = " << int(fParticles[currPart]->GetCharmQNumber()) << endl; - cout << " anti u,d quarks = " << int(fParticles[currPart]->GetLightAQNumber()) << endl; - cout << " anti s quarks = " << int(fParticles[currPart]->GetStrangeAQNumber()) << endl; - cout << " anti c quarks = " << int(fParticles[currPart]->GetCharmAQNumber()) << endl; - cout << " baryon number = " << int(fParticles[currPart]->GetBaryonNumber()) << endl; - cout << " strangeness = " << int(fParticles[currPart]->GetStrangeness()) << endl; - cout << " charmness = " << int(fParticles[currPart]->GetCharmness()) << endl; - cout << " electric charge = " << int(fParticles[currPart]->GetElectricCharge()) << endl; - cout << " full branching = " << fParticles[currPart]->GetFullBranching() << endl; - cout << " decay modes = " << fParticles[currPart]->GetNDecayChannels() << endl; - for (int currChannel = 0; currChannel < fParticles[currPart]->GetNDecayChannels(); currChannel++) { - cout << " channel " << currChannel + 1 << " with branching " - << fParticles[currPart]->GetDecayChannel(currChannel)->GetBranching() << endl; - cout << " daughters PDG codes: "; - double daughtersMass = 0.0; - for (int currDaughter = 0; currDaughter < fParticles[currPart]->GetDecayChannel(currChannel)->GetNDaughters(); - currDaughter++) { - cout << fParticles[currPart]->GetDecayChannel(currChannel)->GetDaughterPDG(currDaughter) << "\t"; - ParticlePDG *daughter = - GetPDGParticle(fParticles[currPart]->GetDecayChannel(currChannel)->GetDaughterPDG(currDaughter)); - daughtersMass += daughter->GetMass(); - } - cout << endl; - cout << " daughters sum mass = " << daughtersMass << endl; - } - } - if (dumpAll) { - cout << "Finished dumping information for " << fNParticles << " particles with " << nDecays - << " decay channels in total." << endl; - cout << "**********************************************************************************************************" - "***" - << endl; - } else { - cout << "Finished dumping information for " << nGoodStatusParticles << "(" << fNParticles << ")" - << " particles with " << nGoodStatusDecays << "(" << nDecays << ")" - << " decay channels in total." << endl; - cout << "**********************************************************************************************************" - "***" - << endl; - } -} - -int DatabasePDG::CheckImpossibleDecays(bool dump) { - // Check the database for impossible decays - int nImpossibleDecays = 0; - for (int currPart = 0; currPart < fNParticles; currPart++) { - if (!fStatus[currPart]) - continue; - int allChannels = fParticles[currPart]->GetNDecayChannels(); - int allowedChannels = GetNAllowedChannels(fParticles[currPart], fParticles[currPart]->GetMass()); - if (dump) { - cout << "Particle " << fParticles[currPart]->GetPDG() << " has " << allChannels - << " decay channels specified in the database" << endl; - cout << " Allowed channels assuming table mass = " << allowedChannels << endl; - } - if (dump && allChannels > 0 && allowedChannels == 0) { - cout << "**********************************************************************" << endl; - cout << " All channels for this particles are not allowed" << endl; - cout << "**********************************************************************" << endl; - } - if (dump && fParticles[currPart]->GetWidth() > 0. && allChannels == 0) { - cout << "**********************************************************************" << endl; - cout << " Particle has finite width but no decay channels specified" << endl; - cout << "**********************************************************************" << endl; - } - for (int currChannel = 0; currChannel < fParticles[currPart]->GetNDecayChannels(); currChannel++) { - double motherMass = fParticles[currPart]->GetMass(); - double daughtersSumMass = 0.; - for (int currDaughter = 0; currDaughter < fParticles[currPart]->GetDecayChannel(currChannel)->GetNDaughters(); - currDaughter++) { - ParticlePDG *daughter = - GetPDGParticle(fParticles[currPart]->GetDecayChannel(currChannel)->GetDaughterPDG(currDaughter)); - daughtersSumMass += daughter->GetMass(); - } - if (daughtersSumMass >= motherMass) { - nImpossibleDecays++; - if (dump) { - cout << "Imposible decay for particle " << fParticles[currPart]->GetPDG() << endl; - cout << " Channel: " << fParticles[currPart]->GetPDG() << " --> "; - for (int currDaughter = 0; currDaughter < fParticles[currPart]->GetDecayChannel(currChannel)->GetNDaughters(); - currDaughter++) { - ParticlePDG *daughter = - GetPDGParticle(fParticles[currPart]->GetDecayChannel(currChannel)->GetDaughterPDG(currDaughter)); - cout << daughter->GetPDG() << " "; - } - cout << endl; - cout << " Mother particle mass = " << motherMass << endl; - cout << " Daughters sum mass = " << daughtersSumMass << endl; - } - } - } - } - return nImpossibleDecays; -} - -void DatabasePDG::SetUseCharmParticles(bool flag) { - if (fNParticles > 0) { - fUseCharmParticles = flag; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetCharmQNumber() > 0 || fParticles[i]->GetCharmAQNumber()) - fStatus[i] = flag; - } - SortParticles(); - return; - } else - fUseCharmParticles = flag; - return; -} - -void DatabasePDG::SetMinimumWidth(double value) { - if (fNParticles > 0) { - fMinimumWidth = value; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetWidth() < fMinimumWidth) - fStatus[i] = kFALSE; - } - SortParticles(); - return; - } else - fMinimumWidth = value; - return; -} - -void DatabasePDG::SetMaximumWidth(double value) { - if (fNParticles > 0) { - fMaximumWidth = value; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetWidth() > fMaximumWidth) - fStatus[i] = kFALSE; - } - SortParticles(); - return; - } else - fMaximumWidth = value; - return; -} - -void DatabasePDG::SetWidthRange(double min, double max) { - if (fNParticles > 0) { - fMinimumWidth = min; - fMaximumWidth = max; - for (int i = 0; i < fNParticles; i++) { - if ((fParticles[i]->GetWidth() < fMinimumWidth) || (fParticles[i]->GetWidth() > fMaximumWidth)) - fStatus[i] = kFALSE; - } - SortParticles(); - - return; - } else { - fMinimumWidth = min; - fMaximumWidth = max; - } - - return; -} - -void DatabasePDG::SetMinimumMass(double value) { - if (fNParticles > 0) { - fMinimumMass = value; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetMass() < fMinimumMass) - fStatus[i] = kFALSE; - } - SortParticles(); - return; - } else - fMinimumMass = value; - return; -} - -void DatabasePDG::SetMaximumMass(double value) { - if (fNParticles > 0) { - fMaximumMass = value; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetMass() > fMaximumMass) - fStatus[i] = kFALSE; - } - SortParticles(); - return; - } else - fMaximumMass = value; - return; -} - -void DatabasePDG::SetMassRange(double min, double max) { - if (fNParticles > 0) { - fMinimumMass = min; - fMaximumMass = max; - for (int i = 0; i < fNParticles; i++) { - if ((fParticles[i]->GetMass() < fMinimumMass) || (fParticles[i]->GetMass() > fMaximumMass)) - fStatus[i] = kFALSE; - } - SortParticles(); - - return; - } else { - fMinimumMass = min; - fMaximumMass = max; - } - - return; -} - -void DatabasePDG::SortParticles() { - if (fNParticles < 2) { - edm::LogWarning("DatabasePDG") << "No particles to sort. Load data first!!"; - return; - } - - int nGoodStatus = 0; - for (int i = 0; i < fNParticles; i++) - if (fStatus[i]) - nGoodStatus++; - - if (nGoodStatus == fNParticles) // if all particles have good status then there is nothing to do - return; - - if (nGoodStatus == 0) // no good status particles, again nothing to do - return; - - int shifts = 1; - while (shifts) { - shifts = 0; - for (int i = 0; i < fNParticles - 1; i++) { - if (!fStatus[i] && fStatus[i + 1]) { // switch if false status is imediately before a true status particle - ParticlePDG *temporaryPointer = fParticles[i]; - fParticles[i] = fParticles[i + 1]; - fParticles[i + 1] = temporaryPointer; - bool temporaryStatus = fStatus[i]; - fStatus[i] = fStatus[i + 1]; - fStatus[i + 1] = temporaryStatus; - shifts++; - } - } - } - - return; -} - -int DatabasePDG::GetNParticles(bool all) { - if (all) - return fNParticles; - - int nGoodStatus = 0; - for (int i = 0; i < fNParticles; i++) - if (fStatus[i]) - nGoodStatus++; - return nGoodStatus; -} - -void DatabasePDG::UseThisListOfParticles(char *filename, bool exclusive) { - if (fNParticles < 1) { - edm::LogError("DatabasePDG") << "You must load the data before calling this function!!"; - return; - } - - ifstream listFile; - listFile.open(filename); - if (!listFile) { - edm::LogError("DatabasePDG") << "The ASCII file containing the PDG codes list (" << filename - << ") was not found !!"; - return; - } - - bool flaggedIndexes[kMaxParticles]; - for (int i = 0; i < kMaxParticles; i++) - flaggedIndexes[i] = kFALSE; - int pdg = 0; - listFile.exceptions(ios::failbit); - while (!listFile.eof()) { - try { - listFile >> pdg; - } catch (ios::failure const &problem) { - LogDebug("DatabasePDG") << "ios:failure in list file" << problem.what(); - break; - } - int found = 0; - for (int i = 0; i < fNParticles; i++) { - if (fParticles[i]->GetPDG() == pdg) { - found++; - flaggedIndexes[i] = kTRUE; - } - } - if (!found) { - edm::LogWarning("DatabasePDG") << "The particle with PDG code " << pdg - << " was asked but not found in the database!!"; - } - if (found > 1) { - edm::LogWarning("DatabasePDG") << "The particle with PDG code " << pdg - << " was found more than once in the database!!"; - } - } - - if (exclusive) { - for (int i = 0; i < kMaxParticles; i++) - fStatus[i] = flaggedIndexes[i]; - } else { - for (int i = 0; i < kMaxParticles; i++) - fStatus[i] = (fStatus[i] && flaggedIndexes[i]); - } - SortParticles(); - - return; -} - -bool DatabasePDG::IsChannelAllowed(DecayChannel *channel, double motherMass) { - double daughtersSumMass = 0.0; - for (int i = 0; i < channel->GetNDaughters(); i++) - daughtersSumMass += GetPDGParticle(channel->GetDaughterPDG(i))->GetMass(); - if (daughtersSumMass <= motherMass) - return kTRUE; - return kFALSE; -} - -int DatabasePDG::GetNAllowedChannels(ParticlePDG *particle, double motherMass) { - int nAllowedChannels = 0; - for (int i = 0; i < particle->GetNDecayChannels(); i++) - nAllowedChannels += (IsChannelAllowed(particle->GetDecayChannel(i), motherMass) ? 1 : 0); - return nAllowedChannels; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/DecayChannel.cc b/GeneratorInterface/Hydjet2Interface/src/DecayChannel.cc deleted file mode 100644 index 89db0a5e69d6d..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/DecayChannel.cc +++ /dev/null @@ -1,77 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decay lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef DECAY_CHANNEL -#include "GeneratorInterface/Hydjet2Interface/interface/DecayChannel.h" -#endif -#include - -using namespace std; - -DecayChannel::DecayChannel() { - fMotherPDG = kNonsensePDG; - fBranchingRatio = 0.0; - fNDaughters = 0; - for (int i = 0; i < kMaxDaughters; i++) - fDaughtersPDG[i] = kNonsensePDG; -} - -DecayChannel::DecayChannel(const DecayChannel ©) { - fMotherPDG = copy.fMotherPDG; - fBranchingRatio = copy.fBranchingRatio; - fNDaughters = copy.fNDaughters; - for (int i = 0; i < fNDaughters; i++) - fDaughtersPDG[i] = copy.fDaughtersPDG[i]; -} - -DecayChannel::DecayChannel(int mother, double branching, int nDaughters, int *daughters) { - fMotherPDG = mother; - fBranchingRatio = branching; - fNDaughters = 0; - for (int i = 0; i < nDaughters; i++) { - if (i >= kMaxDaughters) { - edm::LogError("DecayChannel") - << "From explicit constructor: Number of daughters bigger than the maximum allowed one (" << kMaxDaughters - << ") !!"; - } - fDaughtersPDG[fNDaughters++] = *(daughters + i); - } -} - -void DecayChannel::SetDaughters(int *daughters, int n) { - for (int i = 0; i < n; i++) { - if (i >= kMaxDaughters) { - edm::LogError("DecayChannel") << "From SetDaughters(): Number of daughters bigger than the maximum allowed one (" - << kMaxDaughters << ") !!"; - } - fDaughtersPDG[fNDaughters++] = *(daughters + i); - } -} - -void DecayChannel::AddDaughter(int pdg) { - if (fNDaughters >= kMaxDaughters) { - edm::LogError("DecayChannel") - << "From AddDaughter(): Number of daughters is already >= than the maximum allowed one (" << kMaxDaughters - << ") !!"; - } - fDaughtersPDG[fNDaughters++] = pdg; -} - -int DecayChannel::GetDaughterPDG(int i) { - if ((i >= fNDaughters) || (i < 0)) { - edm::LogError("DecayChannel") - << "From GetDaughterPDG(): Daughter index required is too big or less than zero!! There are only " - << fNDaughters << " secondaries in this channel !!"; - return kNonsensePDG; - } - return fDaughtersPDG[i]; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/EquationSolver.cc b/GeneratorInterface/Hydjet2Interface/src/EquationSolver.cc deleted file mode 100644 index baf44a2e75981..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/EquationSolver.cc +++ /dev/null @@ -1,44 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2006 - -*/ - -//This equation solver class is taken from GEANT4 and modified!! - -#include "GeneratorInterface/Hydjet2Interface/interface/EquationSolver.h" - -template -NAEquationSolver::NAEquationSolver(const NAEquationSolver& right) { - fMaxIter = right.GetMaxIterations(); - fTolerance = right.GetTolerance(); - fA = right.GetIntervalLowerLimit(); - fB = right.GetIntervalUpperLimit(); - fRoot = right.GetRoot(); -} - -// operators -template -NAEquationSolver& NAEquationSolver::operator=(const NAEquationSolver& right) { - fMaxIter = right.GetMaxIterations(); - fTolerance = right.GetTolerance(); - fA = right.GetIntervalLowerLimit(); - fB = right.GetIntervalUpperLimit(); - fRoot = right.GetRoot(); - return *this; -} - -template -bool NAEquationSolver::operator==(const NAEquationSolver& right) const { - if (this == &right) - return true; - else - return false; -} - -template -bool NAEquationSolver::operator!=(const NAEquationSolver& right) const { - return !operator==(right); -} diff --git a/GeneratorInterface/Hydjet2Interface/src/GrandCanonical.cc b/GeneratorInterface/Hydjet2Interface/src/GrandCanonical.cc deleted file mode 100644 index e67aa220691fc..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/GrandCanonical.cc +++ /dev/null @@ -1,204 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ -#include -#include - -#include "GeneratorInterface/Hydjet2Interface/interface/GrandCanonical.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HankelFunction.h" -#include "GeneratorInterface/Hydjet2Interface/interface/UKUtility.h" - -GrandCanonical::GrandCanonical() { - fInitialized = kFALSE; - fNMax = -1111; - fTemperature = -1111; - fBaryonPotential = -1111; - fStrangePotential = -1111; - fElectroPotential = -1111; - fCharmPotential = -1111; -} - -GrandCanonical::GrandCanonical(int nmax, - double temperature, - double baryonPotential, - double strangePotential, - double electroPotential, - double charmPotential) { - fNMax = nmax; - fTemperature = temperature; - fBaryonPotential = baryonPotential; - fStrangePotential = strangePotential; - fElectroPotential = electroPotential; - fCharmPotential = charmPotential; - fInitialized = kTRUE; -} - -GrandCanonical::~GrandCanonical() {} - -void GrandCanonical::Temperature(double value) { - fTemperature = value; - if (fNMax != -1111 && fBaryonPotential != -1111 && fStrangePotential != -1111 && fElectroPotential != -1111 && - fCharmPotential != -1111) - fInitialized = kTRUE; -} - -void GrandCanonical::BaryonPotential(double value) { - fBaryonPotential = value; - if (fNMax != -1111 && fTemperature != -1111 && fStrangePotential != -1111 && fElectroPotential != -1111 && - fCharmPotential != -1111) - fInitialized = kTRUE; -} - -void GrandCanonical::StrangePotential(double value) { - fStrangePotential = value; - if (fNMax != -1111 && fTemperature != -1111 && fBaryonPotential != -1111 && fElectroPotential != -1111 && - fCharmPotential != -1111) - fInitialized = kTRUE; -} - -void GrandCanonical::ElectroPotential(double value) { - fElectroPotential = value; - if (fNMax != -1111 && fTemperature != -1111 && fBaryonPotential != -1111 && fStrangePotential != -1111 && - fCharmPotential != -1111) - fInitialized = kTRUE; -} - -void GrandCanonical::CharmPotential(double value) { - fCharmPotential = value; - if (fNMax != -1111 && fTemperature != -1111 && fBaryonPotential != -1111 && fStrangePotential != -1111 && - fElectroPotential != -1111) - fInitialized = kTRUE; -} - -void GrandCanonical::NMax(int value) { - fNMax = value; - if (fTemperature != -1111 && fBaryonPotential != -1111 && fStrangePotential != -1111 && fElectroPotential != -1111 && - fCharmPotential != -1111) - fInitialized = kTRUE; -} - -double GrandCanonical::ParticleEnergyDensity(ParticlePDG* particle) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::ParticleEnergyDensity", "GrandCanonical object not fully initialized!!"); - - // Compute the particle energy density - double degFactor = 2. * particle->GetSpin() + 1.; // degeneracy factor - double mass = particle->GetMass(); // PDG table mass - double d = int(2. * particle->GetSpin()) & 1 ? 1. : -1; // Bose-Einstein/Fermi-Dirac factor - double preFactor = (degFactor * mass * mass * fTemperature * fTemperature / hbarc / hbarc / hbarc) / - (2. * TMath::Pi() * TMath::Pi()); - - double postFactor = 0.; - //compute chemical potential - double potential = fBaryonPotential * particle->GetBaryonNumber() + fStrangePotential * particle->GetStrangeness() + - fElectroPotential * particle->GetElectricCharge() + fCharmPotential * particle->GetCharmness(); - - for (int n = 1; n <= fNMax; ++n) { - postFactor += - TMath::Power(-d, n + 1) / (n * n) * TMath::Exp(n * potential / fTemperature) * - (3. * HankelKn(2, n * mass / fTemperature) + n * mass / fTemperature * HankelK1(n * mass / fTemperature)); - } - return preFactor * postFactor; -} - -double GrandCanonical::ParticleNumberDensity(ParticlePDG* particle) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::ParticleNumberDensity", "GrandCanonical object not fully initialized!!"); - - double degFactor = 2. * particle->GetSpin() + 1.; - double mass = particle->GetMass(); - double d = int(2 * particle->GetSpin()) & 1 ? 1. : -1.; - double preFactor = - (degFactor * mass * mass * fTemperature / hbarc / hbarc / hbarc) / (2. * TMath::Pi() * TMath::Pi()); - - double postFactor = 0.; - double potential = fBaryonPotential * particle->GetBaryonNumber() + fStrangePotential * particle->GetStrangeness() + - fElectroPotential * particle->GetElectricCharge() + fCharmPotential * particle->GetCharmness(); - - for (int n = 1; n <= fNMax; ++n) { - postFactor += - TMath::Power(-d, n + 1) / n * TMath::Exp(n * potential / fTemperature) * HankelKn(2, n * mass / fTemperature); - } - return preFactor * postFactor; -} - -double GrandCanonical::EnergyDensity(DatabasePDG* database) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::EnergyDensity", "GrandCanonical object not fully initialized!!"); - - double meanEnergyDensity = 0.; - - for (int currParticle = 0; currParticle < database->GetNParticles(); currParticle++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(currParticle); - meanEnergyDensity += ParticleEnergyDensity(particle); - } - - return meanEnergyDensity; -} - -double GrandCanonical::BaryonDensity(DatabasePDG* database) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::BaryonDensity", "GrandCanonical object not fully initialized!!"); - - double meanBaryonDensity = 0.; - - for (int currParticle = 0; currParticle < database->GetNParticles(); currParticle++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(currParticle); - meanBaryonDensity += ParticleNumberDensity(particle) * particle->GetBaryonNumber(); - } - return meanBaryonDensity; -} - -double GrandCanonical::StrangeDensity(DatabasePDG* database) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::StrangeDensity", "GrandCanonical object not fully initialized!!"); - - double meanStrangeDensity = 0.; - - for (int currParticle = 0; currParticle < database->GetNParticles(); currParticle++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(currParticle); - meanStrangeDensity += ParticleNumberDensity(particle) * particle->GetStrangeness(); - } - - return meanStrangeDensity; -} - -double GrandCanonical::ElectroDensity(DatabasePDG* database) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::ElectroDensity", "GrandCanonical object not fully initialized!!"); - - double meanElectroDensity = 0.; - - //hadrons - for (int currParticle = 0; currParticle < database->GetNParticles(); currParticle++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(currParticle); - meanElectroDensity += ParticleNumberDensity(particle) * particle->GetElectricCharge(); - } - - return meanElectroDensity; -} - -double GrandCanonical::CharmDensity(DatabasePDG* database) { - // Check if all the thermodinamic parameters are set - if (!fInitialized) - Fatal("GrandCanonical::CharmDensity", "GrandCanonical object not fully initialized!!"); - - double meanCharmDensity = 0.; - - for (int currParticle = 0; currParticle < database->GetNParticles(); currParticle++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(currParticle); - meanCharmDensity += ParticleNumberDensity(particle) * particle->GetCharmness(); - } - - return meanCharmDensity; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/HadronDecayer.cc b/GeneratorInterface/Hydjet2Interface/src/HadronDecayer.cc deleted file mode 100644 index 2916e90764b96..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/HadronDecayer.cc +++ /dev/null @@ -1,415 +0,0 @@ -/* - -July 2008 BW mass is limited by "PYTHIA method", by I. Lokhtin and L. Malinina - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#include -#include -#include -#include -#include - -#include "GeneratorInterface/Hydjet2Interface/interface/DatabasePDG.h" -#include "GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h" -#include "GeneratorInterface/Hydjet2Interface/interface/DecayChannel.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h" -#include "GeneratorInterface/Hydjet2Interface/interface/UKUtility.h" -#include "GeneratorInterface/Hydjet2Interface/interface/Particle.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HYJET_COMMONS.h" - -//calculates decay time in fm/c -//calculates 1,2 and 3 body decays - -using namespace std; - -#include "CLHEP/Random/RandomEngine.h" -#include "CLHEP/Random/RandBreitWigner.h" -extern CLHEP::HepRandomEngine *hjRandomEngine; - -double GetDecayTime(const Particle &parent, double weakDecayLimit) { - ParticlePDG *pDef = parent.Def(); - double width = pDef->GetWidth(); //GeV - - double fullBranching = pDef->GetFullBranching(); // Only 3 or less body decays - // check if full branching is 100% - if (pDef->GetNDecayChannels() > 0 && fullBranching < 0.9999) { - LogDebug("HadronDecayer") << "GetDecayTime(): WARNING!!! The full branching for specie " << pDef->GetPDG() - << " is less than 100% (" << fullBranching * 100 << "%) and decay channels exist!"; - } - - if (width > weakDecayLimit) { - double slope = parent.E() * 0.1973 / (pDef->GetMass() * width); - return -slope * TMath::Log(CLHEP::RandFlat::shoot(hjRandomEngine)); //in fm/c - } - - return 0.; -} - -extern "C" void mydelta_(); -extern SERVICEEVCommon SERVICEEV; - -void Decay(List_t &output, Particle &parent, ParticleAllocator &allocator, DatabasePDG *database) { - // Get the PDG properties of the particle - ParticlePDG *pDef = parent.Def(); - - // Get the number of posible decay channels - int nDecayChannel = pDef->GetNDecayChannels(); - if (pDef->GetWidth() > 0 && nDecayChannel == 0) { - LogDebug("HadronDecayer") << "Decay(): WARNING!! Particle " << pDef->GetPDG() << " has finite width (" - << pDef->GetWidth() - << ") but NO decay channels specified in the database. Check it out!!"; - return; - } - - // check the full branching of this specie - double fullBranching = pDef->GetFullBranching(); // Only 3 or less body decays - - // return if particle has no branching - if (fullBranching < 0.00001) - return; - - // get the PDG mass of the specie - double PDGmass = pDef->GetMass(); - int ComprCodePyth = 0; - float Delta = 0; - - bool success = kFALSE; - int iterations = 0; - // Try to decay the particle - while (!success) { - if (iterations > 1000) { //??? - LogDebug("HadronDecayer") << "Decay(): WARNING!!! iterations to decay " << pDef->GetPDG() << " : " << iterations - << " Check it out!!!"; - } - - // get a random mass using the Breit-Wigner distribution - double BWmass = CLHEP::RandBreitWigner::shoot(hjRandomEngine, PDGmass, pDef->GetWidth()); - - // Try to cut the Breit Wigner tail of the particle using the cuts from pythia - // The Delta variable is obtained from pythia based on the specie - int encoding = pDef->GetPDG(); - SERVICEEV.ipdg = encoding; - mydelta_(); - ComprCodePyth = SERVICEEV.KC; - Delta = SERVICEEV.delta; // PYDAT2.PMAS[KC][3]; - - //if there are no such particle in PYTHIA particle table, we take Delta=0.4 - if (ComprCodePyth == 0) { - BWmass = PDGmass; - Delta = 0.0; - } - - //bad delta - an exception - if (ComprCodePyth == 254) { - BWmass = PDGmass; - Delta = 0.0; - } - - // K0 decay into K0s or K0l - if (TMath::Abs(encoding) == 311) { - BWmass = PDGmass; - Delta = 0.0; - } - - //for particles from PYTHIA table only, if the BW mass is outside the cut range then quit this iteration and generate another BW mass - if (ComprCodePyth != 0 && Delta > 0 && (BWmass < PDGmass - Delta || BWmass > PDGmass + Delta)) { - iterations++; - continue; - } - - if (BWmass > 5) - LogDebug("HadronDecayer") << "Decay(): Breit-Wigner mass > 5GeV for encoding: " << encoding - << "; PDG mass: " << PDGmass << "; delta: " << Delta << "; width: " << pDef->GetWidth() - << "; mass: " << BWmass << "; ComprCodePyth: " << ComprCodePyth; - - // check how many decay channels are allowed with the generated mass - int nAllowedChannels = database->GetNAllowedChannels(pDef, BWmass); - // if no decay channels are posible with this mass, then generate another BW mass - if (nAllowedChannels == 0) { - iterations++; - continue; - } - - std::vector apDaughter; - std::vector dMass; //daughters'mass - std::vector dMom; - std::vector sm; - std::vector rd; - - // we need to choose an allowed decay channel - double randValue = CLHEP::RandFlat::shoot(hjRandomEngine) * fullBranching; - - int chosenChannel = 1000; - bool found = kFALSE; - int channelIterations = 0; - while (!found) { - if (channelIterations > 1000) { - LogDebug("HadronDecayer") << "Decay(): More than 1000 iterations to choose a decay channel. Check it out !!"; - } - for (int nChannel = 0; nChannel < nDecayChannel; ++nChannel) { - randValue -= pDef->GetDecayChannel(nChannel)->GetBranching(); - if (randValue <= 0. && database->IsChannelAllowed(pDef->GetDecayChannel(nChannel), BWmass)) { - chosenChannel = nChannel; - found = kTRUE; - break; - } - } - channelIterations++; - } - - // get the PDG information for the chosen decay channel - DecayChannel *dc = pDef->GetDecayChannel(chosenChannel); - int nSec = dc->GetNDaughters(); - - // Adjust the parent momentum four-vector for the MC generated Breit-Wigner mass - Particle parentBW(database->GetPDGParticle(parent.Encoding())); - parentBW.Pos(parent.Pos()); - double BWenergy = TMath::Sqrt(parent.Mom().X() * parent.Mom().X() + parent.Mom().Y() * parent.Mom().Y() + - parent.Mom().Z() * parent.Mom().Z() + BWmass * BWmass); - - int NB = (int)parent.GetType(); //particle from jets - - TLorentzVector MomparentBW(parent.Mom().X(), parent.Mom().Y(), parent.Mom().Z(), BWenergy); - parentBW.Mom(MomparentBW); - // take into account BW when calculating boost velocity (for wide resonances it matters) - TVector3 velocityBW(parentBW.Mom().BoostVector()); - - // now we have an allowed decay - // first case: one daughter particle - if (nSec == 1) { - // initialize the daughter particle - Particle p1(database->GetPDGParticle(dc->GetDaughterPDG(0))); - p1.Pos(parentBW.Pos()); - p1.Mom(parent.Mom()); - p1.SetLastMotherPdg(parentBW.Encoding()); - p1.SetLastMotherDecayCoor(parentBW.Pos()); - p1.SetLastMotherDecayMom(parentBW.Mom()); - p1.SetType(NB); - p1.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - - // add the daughter particle to the list of secondaries - int parentIndex = parent.GetIndex(); - int p1Index = p1.SetIndex(); - p1.SetMother(parentIndex); - parent.SetFirstDaughterIndex(p1Index); - parent.SetLastDaughterIndex(p1Index); - allocator.AddParticle(p1, output); - success = kTRUE; - } - // second case: two daughter particles - else if (nSec == 2) { - // initialize the daughter particles - Particle p1(database->GetPDGParticle(dc->GetDaughterPDG(0))); - p1.Pos(parentBW.Pos()); - Particle p2(database->GetPDGParticle(dc->GetDaughterPDG(1))); - p2.Pos(parentBW.Pos()); - - // calculate the momenta in rest frame of mother for the two particles (theta and phi are isotropic) - MomAntiMom(p1.Mom(), p1.TableMass(), p2.Mom(), p2.TableMass(), BWmass); - - // boost to the laboratory system (to the mother velocity) - p1.Mom().Boost(velocityBW); - p2.Mom().Boost(velocityBW); - - //store information about mother - p1.SetLastMotherPdg(parentBW.Encoding()); - p1.SetLastMotherDecayCoor(parentBW.Pos()); - p1.SetLastMotherDecayMom(parentBW.Mom()); - p2.SetLastMotherPdg(parentBW.Encoding()); - p2.SetLastMotherDecayCoor(parentBW.Pos()); - p2.SetLastMotherDecayMom(parentBW.Mom()); - //set to daughters the same type as has mother - p1.SetType(NB); - p2.SetType(NB); - p1.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - p2.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - - // check the kinematics in the lab system - double deltaS = TMath::Sqrt( - (parentBW.Mom().X() - p1.Mom().X() - p2.Mom().X()) * (parentBW.Mom().X() - p1.Mom().X() - p2.Mom().X()) + - (parentBW.Mom().Y() - p1.Mom().Y() - p2.Mom().Y()) * (parentBW.Mom().Y() - p1.Mom().Y() - p2.Mom().Y()) + - (parentBW.Mom().Z() - p1.Mom().Z() - p2.Mom().Z()) * (parentBW.Mom().Z() - p1.Mom().Z() - p2.Mom().Z()) + - (parentBW.Mom().E() - p1.Mom().E() - p2.Mom().E()) * (parentBW.Mom().E() - p1.Mom().E() - p2.Mom().E())); - // if deltaS is too big then repeat the kinematic procedure - - if (deltaS > 0.001) { - LogDebug("HadronDecayer|deltaS") << "2-body decay kinematic check in lab system: " << pDef->GetPDG() << " >>> " - << p1.Encoding() << " + " << p2.Encoding() << endl - << " Mother (e,px,py,pz): " << parentBW.Mom().E() << " : " - << parentBW.Mom().X() << " : " << parentBW.Mom().Y() << " : " - << parentBW.Mom().Z() << endl - << " Mother (x,y,z,t): " << parentBW.Pos().X() << " : " - << parentBW.Pos().Y() << " : " << parentBW.Pos().Z() << " : " - << parentBW.Pos().T() << endl - << " Daughter1 (e,px,py,pz): " << p1.Mom().E() << " : " << p1.Mom().X() - << " : " << p1.Mom().Y() << " : " << p1.Mom().Z() << endl - << " Daughter2 (e,px,py,pz): " << p2.Mom().E() << " : " << p2.Mom().X() - << " : " << p2.Mom().Y() << " : " << p2.Mom().Z() << endl - << " 2-body decay delta(sqrtS): " << deltaS << endl - << " Repeating the decay algorithm"; - - iterations++; - continue; - } - // push particles to the list of secondaries - int parentIndex = parent.GetIndex(); - p1.SetIndex(); - p2.SetIndex(); - p1.SetMother(parentIndex); - p2.SetMother(parentIndex); - parent.SetFirstDaughterIndex(p1.GetIndex()); - parent.SetLastDaughterIndex(p2.GetIndex()); - allocator.AddParticle(p1, output); - allocator.AddParticle(p2, output); - success = kTRUE; - } - - // third case: three daughter particle - else if (nSec == 3) { - // initialize the daughter particle - Particle p1(database->GetPDGParticle(dc->GetDaughterPDG(0))); - p1.Pos(parentBW.Pos()); - Particle p2(database->GetPDGParticle(dc->GetDaughterPDG(1))); - p2.Pos(parentBW.Pos()); - Particle p3(database->GetPDGParticle(dc->GetDaughterPDG(2))); - p3.Pos(parentBW.Pos()); - // calculate the momenta in the rest frame of the mother particle - double pAbs1 = 0., pAbs2 = 0., pAbs3 = 0., sumPabs = 0., maxPabs = 0.; - double mass1 = p1.TableMass(), mass2 = p2.TableMass(), mass3 = p3.TableMass(); - TLorentzVector &mom1 = p1.Mom(), &mom2 = p2.Mom(), &mom3 = p3.Mom(); - double deltaMass = BWmass - mass1 - mass2 - mass3; - - do { - double rd1 = CLHEP::RandFlat::shoot(hjRandomEngine); - double rd2 = CLHEP::RandFlat::shoot(hjRandomEngine); - if (rd2 > rd1) - std::swap(rd1, rd2); - // 1 - double e = rd2 * deltaMass; - pAbs1 = TMath::Sqrt(e * e + 2 * e * mass1); - sumPabs = pAbs1; - maxPabs = sumPabs; - // 2 - e = (1 - rd1) * deltaMass; - pAbs2 = TMath::Sqrt(e * e + 2 * e * mass2); - - if (pAbs2 > maxPabs) - maxPabs = pAbs2; - - sumPabs += pAbs2; - // 3 - e = (rd1 - rd2) * deltaMass; - pAbs3 = TMath::Sqrt(e * e + 2 * e * mass3); - - if (pAbs3 > maxPabs) - maxPabs = pAbs3; - sumPabs += pAbs3; - } while (maxPabs > sumPabs - maxPabs); - - // isotropic sample first particle 3-momentum - double cosTheta = 2 * (CLHEP::RandFlat::shoot(hjRandomEngine)) - 1; - double sinTheta = TMath::Sqrt(1 - cosTheta * cosTheta); - double phi = TMath::TwoPi() * (CLHEP::RandFlat::shoot(hjRandomEngine)); - double sinPhi = TMath::Sin(phi); - double cosPhi = TMath::Cos(phi); - - mom1.SetPxPyPzE(sinTheta * cosPhi, sinTheta * sinPhi, cosTheta, 0); - mom1 *= pAbs1; - // sample rest particle 3-momentum - double cosThetaN = (pAbs2 * pAbs2 - pAbs3 * pAbs3 - pAbs1 * pAbs1) / (2 * pAbs1 * pAbs3); - double sinThetaN = TMath::Sqrt(1 - cosThetaN * cosThetaN); - double phiN = TMath::TwoPi() * (CLHEP::RandFlat::shoot(hjRandomEngine)); - double sinPhiN = TMath::Sin(phiN); - double cosPhiN = TMath::Cos(phiN); - - mom3.SetPxPyPzE( - sinThetaN * cosPhiN * cosTheta * cosPhi - sinThetaN * sinPhiN * sinPhi + cosThetaN * sinTheta * cosPhi, - sinThetaN * cosPhiN * cosTheta * sinPhi + sinThetaN * sinPhiN * cosPhi + cosThetaN * sinTheta * sinPhi, - -sinThetaN * cosPhiN * sinTheta + cosThetaN * cosTheta, - 0.); - - mom3 *= pAbs3 * mom3.P(); - mom2 = mom1; - mom2 += mom3; - mom2 *= -1.; - // calculate energy - mom1.SetE(TMath::Sqrt(mom1.P() * mom1.P() + mass1 * mass1)); - mom2.SetE(TMath::Sqrt(mom2.P() * mom2.P() + mass2 * mass2)); - mom3.SetE(TMath::Sqrt(mom3.P() * mom3.P() + mass3 * mass3)); - - // boost to Lab system - mom1.Boost(velocityBW); - mom2.Boost(velocityBW); - mom3.Boost(velocityBW); - - p1.SetLastMotherPdg(parentBW.Encoding()); - p1.SetLastMotherDecayCoor(parentBW.Pos()); - p1.SetLastMotherDecayMom(parentBW.Mom()); - p2.SetLastMotherPdg(parentBW.Encoding()); - p2.SetLastMotherDecayCoor(parentBW.Pos()); - p2.SetLastMotherDecayMom(parentBW.Mom()); - p3.SetLastMotherPdg(parentBW.Encoding()); - p3.SetLastMotherDecayCoor(parentBW.Pos()); - p3.SetLastMotherDecayMom(parentBW.Mom()); - - //set to daughters the same type as has mother - p1.SetType(NB); - p2.SetType(NB); - p3.SetType(NB); - p1.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - p2.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - p3.SetPythiaStatusCode(parent.GetPythiaStatusCode()); - - // energy conservation check in the lab system - double deltaS = TMath::Sqrt((parentBW.Mom().X() - p1.Mom().X() - p2.Mom().X() - p3.Mom().X()) * - (parentBW.Mom().X() - p1.Mom().X() - p2.Mom().X() - p3.Mom().X()) + - (parentBW.Mom().Y() - p1.Mom().Y() - p2.Mom().Y() - p3.Mom().Y()) * - (parentBW.Mom().Y() - p1.Mom().Y() - p2.Mom().Y() - p3.Mom().Y()) + - (parentBW.Mom().Z() - p1.Mom().Z() - p2.Mom().Z() - p3.Mom().Z()) * - (parentBW.Mom().Z() - p1.Mom().Z() - p2.Mom().Z() - p3.Mom().Z()) + - (parentBW.Mom().E() - p1.Mom().E() - p2.Mom().E() - p3.Mom().E()) * - (parentBW.Mom().E() - p1.Mom().E() - p2.Mom().E() - p3.Mom().E())); - // if deltaS is too big then repeat the kinematic procedure - if (deltaS > 0.001) { - LogDebug("HadronDecayer|deltaS") << "3-body decay kinematic check in lab system: " << pDef->GetPDG() << " >>> " - << p1.Encoding() << " + " << p2.Encoding() << " + " << p3.Encoding() << endl - << "Mother (e,px,py,pz): " << parentBW.Mom().E() << " : " - << parentBW.Mom().X() << " : " << parentBW.Mom().Y() << " : " - << parentBW.Mom().Z() << endl - << "Daughter1 (e,px,py,pz): " << p1.Mom().E() << " : " << p1.Mom().X() << " : " - << p1.Mom().Y() << " : " << p1.Mom().Z() << endl - << "Daughter2 (e,px,py,pz): " << p2.Mom().E() << " : " << p2.Mom().X() << " : " - << p2.Mom().Y() << " : " << p2.Mom().Z() << endl - << "Daughter3 (e,px,py,pz): " << p3.Mom().E() << " : " << p3.Mom().X() << " : " - << p3.Mom().Y() << " : " << p3.Mom().Z() << endl - << "3-body decay delta(sqrtS): " << deltaS << endl - << "Repeating the decay algorithm"; - - iterations++; - continue; - } - - // put particles in the list - int parentIndex = parent.GetIndex(); - p1.SetIndex(); - p2.SetIndex(); - p3.SetIndex(); - p1.SetMother(parentIndex); - p2.SetMother(parentIndex); - p3.SetMother(parentIndex); - parent.SetFirstDaughterIndex(p1.GetIndex()); - parent.SetLastDaughterIndex(p3.GetIndex()); - allocator.AddParticle(p1, output); - allocator.AddParticle(p2, output); - allocator.AddParticle(p3, output); - success = kTRUE; - } - } - - return; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/HankelFunction.cc b/GeneratorInterface/Hydjet2Interface/src/HankelFunction.cc deleted file mode 100644 index 259f95474d0a6..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/HankelFunction.cc +++ /dev/null @@ -1,220 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#include - -#include "GeneratorInterface/Hydjet2Interface/interface/HankelFunction.h" - -//compute Hankel function of zeroth order -enum { kNe = 2, kNCoeff = 9 }; - -const double i0Coefficient[kNCoeff][kNe] = { - //coefficients to compute function I0 - {1.0, 0.39894228}, - {3.5156229, 0.01328592}, - {3.0899424, 0.00225319}, - {1.2067492, -0.00157565}, - {0.2659732, 0.00916281}, - {0.0360768, -0.02057706}, - {0.0045813, 0.02635537}, - {0., -0.01647633}, - {0., 0.00392377}}; - -const double i1Coefficient[kNCoeff][kNe] = { - //coefficients to compute function I1 - {0.5, 0.39894228}, - {0.87890594, -0.03988024}, - {0.51498869, -0.00362018}, - {0.15084934, 0.00163801}, - {0.02658733, -0.01031555}, - {0.00301532, 0.02282967}, - {0.00032411, -0.02895312}, - {0., 0.01787654}, - {0., -0.00420059}}; - -const double k0Coefficient[kNCoeff][kNe] = { - //coefficients to compute modified Hankel function of the zeroth order K0 - {-0.57721566, 1.25331414}, - {0.42278420, -0.07832358}, - {0.23069756, 0.02189568}, - {0.03488590, -0.01062446}, - {0.00262698, 0.00587872}, - {0.00010750, -0.00251540}, - {0.0000074, 0.00053208}, - {0., 0.}, - {0., 0.}}; - -const double k1Coefficient[kNCoeff][kNe] = { - //coefficients to compute modified Hankel function of the first order K1 - {1.0, 1.25331414}, - {0.15443144, 0.23498619}, - {-0.67278579, -0.03655620}, - {-0.18156897, 0.01504268}, - {-0.01919402, -0.00780353}, - {-0.00110404, 0.00325614}, - {-0.00004686, -0.00068245}, - {0., 0.}, - {0., 0.}}; - -double BesselI0(double x) { - // (C) Copr. 1986-92 Numerical Recipes Software +7. - //compute Bessel function of zeroth order - - const double p1 = i0Coefficient[0][0]; - const double p2 = i0Coefficient[1][0]; - const double p3 = i0Coefficient[2][0]; - const double p4 = i0Coefficient[3][0]; - const double p5 = i0Coefficient[4][0]; - const double p6 = i0Coefficient[5][0]; - const double p7 = i0Coefficient[6][0]; - - const double q1 = i0Coefficient[0][1]; - const double q2 = i0Coefficient[1][1]; - const double q3 = i0Coefficient[2][1]; - const double q4 = i0Coefficient[3][1]; - const double q5 = i0Coefficient[4][1]; - const double q6 = i0Coefficient[5][1]; - const double q7 = i0Coefficient[6][1]; - const double q8 = i0Coefficient[7][1]; - const double q9 = i0Coefficient[8][1]; - - double i0 = 0.; - - if (TMath::Abs(x) < 3.75) { - double y = (x / 3.75) * (x / 3.75); - i0 = p1 + y * (p2 + y * (p3 + y * (p4 + y * (p5 + y * (p6 + y * p7))))); - } else { - double ax = TMath::Abs(x); - double y = 3.75 / ax; - i0 = (TMath::Exp(ax) / TMath::Sqrt(ax)) * - (q1 + y * (q2 + y * (q3 + y * (q4 + y * (q5 + y * (q6 + y * (q7 + y * (q8 + y * q9)))))))); - } - - return i0; -} - -double BesselI1(double x) { - // (C) Copr. 1986-92 Numerical Recipes Software +7. - //compute Bessel function of first order - - const double p1 = i1Coefficient[0][0]; - const double p2 = i1Coefficient[1][0]; - const double p3 = i1Coefficient[2][0]; - const double p4 = i1Coefficient[3][0]; - const double p5 = i1Coefficient[4][0]; - const double p6 = i1Coefficient[5][0]; - const double p7 = i1Coefficient[6][0]; - - const double q1 = i1Coefficient[0][1]; - const double q2 = i1Coefficient[1][1]; - const double q3 = i1Coefficient[2][1]; - const double q4 = i1Coefficient[3][1]; - const double q5 = i1Coefficient[4][1]; - const double q6 = i1Coefficient[5][1]; - const double q7 = i1Coefficient[6][1]; - const double q8 = i1Coefficient[7][1]; - const double q9 = i1Coefficient[8][1]; - - double i1 = 0.; - - if (TMath::Abs(x) < 3.75) { - double y = (x / 3.75) * (x / 3.75); - i1 = x * (p1 + y * (p2 + y * (p3 + y * (p4 + y * (p5 + y * (p6 + y * p7)))))); - } else { - double ax = TMath::Abs(x); - double y = 3.75 / ax; - i1 = (TMath::Exp(ax) / TMath::Sqrt(ax)) * - (q1 + y * (q2 + y * (q3 + y * (q4 + y * (q5 + y * (q6 + y * (q7 + y * (q8 + y * q9)))))))); - if (x < 0.) - i1 = -i1; - } - - return i1; -} - -double HankelK0(double x) { - const double p1 = k0Coefficient[0][0]; - const double p2 = k0Coefficient[1][0]; - const double p3 = k0Coefficient[2][0]; - const double p4 = k0Coefficient[3][0]; - const double p5 = k0Coefficient[4][0]; - const double p6 = k0Coefficient[5][0]; - const double p7 = k0Coefficient[6][0]; - - const double q1 = k0Coefficient[0][1]; - const double q2 = k0Coefficient[1][1]; - const double q3 = k0Coefficient[2][1]; - const double q4 = k0Coefficient[3][1]; - const double q5 = k0Coefficient[4][1]; - const double q6 = k0Coefficient[5][1]; - const double q7 = k0Coefficient[6][1]; - - double k0 = 0.; - if (x <= 2.0) { - double y = x * x / 4.0; - k0 = (-TMath::Log(x / 2.0) * BesselI0(x)) + (p1 + y * (p2 + y * (p3 + y * (p4 + y * (p5 + y * (p6 + y * p7)))))); - } else { - double y = (2.0 / x); - k0 = (TMath::Exp(-x) / TMath::Sqrt(x)) * (q1 + y * (q2 + y * (q3 + y * (q4 + y * (q5 + y * (q6 + y * q7)))))); - } - - return k0; -} - -double HankelK1(double x) { - // (C) Copr. 1986-92 Numerical Recipes Software +7. - // compute modified Hankel function of the first order - const double p1 = k1Coefficient[0][0]; - const double p2 = k1Coefficient[1][0]; - const double p3 = k1Coefficient[2][0]; - const double p4 = k1Coefficient[3][0]; - const double p5 = k1Coefficient[4][0]; - const double p6 = k1Coefficient[5][0]; - const double p7 = k1Coefficient[6][0]; - - const double q1 = k1Coefficient[0][1]; - const double q2 = k1Coefficient[1][1]; - const double q3 = k1Coefficient[2][1]; - const double q4 = k1Coefficient[3][1]; - const double q5 = k1Coefficient[4][1]; - const double q6 = k1Coefficient[5][1]; - const double q7 = k1Coefficient[6][1]; - - double k1 = 0.; - - if (x <= 2.0) { - double y = x * x / 4.0; - k1 = (TMath::Log(x / 2.0) * BesselI1(x)) + - (1.0 / x) * (p1 + y * (p2 + y * (p3 + y * (p4 + y * (p5 + y * (p6 + y * p7)))))); - } else { - double y = 2.0 / x; - k1 = (TMath::Exp(-x) / TMath::Sqrt(x)) * (q1 + y * (q2 + y * (q3 + y * (q4 + y * (q5 + y * (q6 + y * q7)))))); - } - - return k1; -} - -double HankelKn(int n, double x) { - // (C) Copr. 1986-92 Numerical Recipes Software +7. - // compute modified Hankel function of the first order - if (n < 2) - throw "Bad argument n in Kn"; - - double tox = 2.0 / x; - double km = HankelK0(x); - double k = HankelK1(x); - double kp = 0.; - - for (int c = 1; c <= n - 1; ++c) { - kp = km + c * tox * k; - km = k; - k = kp; - } - - return k; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/HepEvt.F b/GeneratorInterface/Hydjet2Interface/src/HepEvt.F deleted file mode 100644 index e9f05ac200e6f..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/HepEvt.F +++ /dev/null @@ -1,8 +0,0 @@ - - subroutine ihepevt - -#include "SimDataFormats/GeneratorProducts/interface/stdhep.inc" -#include "SimDataFormats/GeneratorProducts/interface/hepev4.inc" - - return - end diff --git a/GeneratorInterface/Hydjet2Interface/src/Hydjet2GeneratorFilter.cc b/GeneratorInterface/Hydjet2Interface/src/Hydjet2GeneratorFilter.cc new file mode 100644 index 0000000000000..9b9e8c96789b1 --- /dev/null +++ b/GeneratorInterface/Hydjet2Interface/src/Hydjet2GeneratorFilter.cc @@ -0,0 +1 @@ +#include "GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h" diff --git a/GeneratorInterface/Hydjet2Interface/src/Hydjet2Hadronizer.cc b/GeneratorInterface/Hydjet2Interface/src/Hydjet2Hadronizer.cc index e79c20562f6af..56ae20f938082 100644 --- a/GeneratorInterface/Hydjet2Interface/src/Hydjet2Hadronizer.cc +++ b/GeneratorInterface/Hydjet2Interface/src/Hydjet2Hadronizer.cc @@ -1,57 +1,17 @@ -/* - -########################## -# Hydjet2 # -# version: 2.2.0 patch1 # -########################## - - Interface to the HYDJET++ generator, produces HepMC events - - Author: Andrey Belyaev (Andrey.Belyaev@cern.ch) - - Hydjet2Hadronizer is the modified InitialStateHydjet - - HYDJET++ - version 2.2: - InitialStateHydjet is the modified InitialStateBjorken - The high-pt part related with PYTHIA-PYQUEN is included - InitialStateBjorken (FASTMC) was used. - - - InitialStateBjorken - version 2.0: - Ludmila Malinina malinina@lav01.sinp.msu.ru, SINP MSU/Moscow and JINR/Dubna - Ionut Arsene i.c.arsene@fys.uio.no, Oslo University - June 2007 - - version 1.0: - Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna - amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru - November. 2, 2005 -*/ - -//expanding localy equilibated fireball with volume hadron radiation -//thermal part: Blast wave model, Bjorken-like parametrization -//high-pt: PYTHIA + jet quenching model PYQUEN +/** + * \brief Interface to the HYDJET++ (Hydjet2) generator (since core v. 2.4.3), produces HepMC events + * \version 1.0 + * \author Andrey Belyaev + */ #include -#include #include +#include -#include "GeneratorInterface/Core/interface/FortranInstance.h" #include "GeneratorInterface/Hydjet2Interface/interface/Hydjet2Hadronizer.h" -#include "GeneratorInterface/Hydjet2Interface/interface/RandArrayFunction.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h" -#include "GeneratorInterface/Hydjet2Interface/interface/GrandCanonical.h" -#include "GeneratorInterface/Hydjet2Interface/interface/StrangePotential.h" -#include "GeneratorInterface/Hydjet2Interface/interface/EquationSolver.h" -#include "GeneratorInterface/Hydjet2Interface/interface/Particle.h" -#include "GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h" -#include "GeneratorInterface/Hydjet2Interface/interface/UKUtility.h" - -#include -#include #include +#include +#include #include "FWCore/Concurrency/interface/SharedResourceNames.h" #include "FWCore/Framework/interface/Event.h" @@ -63,37 +23,26 @@ #include "GeneratorInterface/Pythia6Interface/interface/Pythia6Declarations.h" #include "GeneratorInterface/Pythia6Interface/interface/Pythia6Service.h" -#include "HepMC/PythiaWrapper6_4.h" #include "HepMC/GenEvent.h" #include "HepMC/HeavyIon.h" +#include "HepMC/IO_HEPEVT.h" +#include "HepMC/PythiaWrapper6_4.h" #include "HepMC/SimpleVector.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h" #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" #include "SimDataFormats/HiGenData/interface/GenHIEvent.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HYJET_COMMONS.h" - -CLHEP::HepRandomEngine* hjRandomEngine; - -extern "C" void hyevnt_(); -extern "C" void myini_(); - -extern HYIPARCommon HYIPAR; -extern HYFPARCommon HYFPAR; -extern HYJPARCommon HYJPAR; -extern HYPARTCommon HYPART; +CLHEP::HepRandomEngine *hjRandomEngine; using namespace edm; using namespace std; using namespace gen; -TString RunInputHYDJETstr; - -// definition of the static member fLastIndex -int Particle::fLastIndex; bool ev = false; +bool separateHydjetComponents_; + namespace { int convertStatusForComponents(int sta, int typ) { if (sta == 1 && typ == 0) @@ -110,89 +59,25 @@ namespace { } int convertStatus(int st) { - if (st <= 0) - return 0; - if (st <= 10) - return 1; - if (st <= 20) - return 2; - if (st <= 30) - return 3; - - else - return st; + if (!separateHydjetComponents_) { + if (st <= 0) + return 0; + if (st <= 10) + return 1; + if (st <= 20) + return 2; + if (st <= 30) + return 3; + } + return st; } } // namespace -const std::vector Hydjet2Hadronizer::theSharedResources = {edm::SharedResourceNames::kPythia6, - gen::FortranInstance::kFortranInstance}; +const std::vector Hydjet2Hadronizer::theSharedResources = {edm::SharedResourceNames::kPythia6}; //____________________________________________________________________________________________ -Hydjet2Hadronizer::Hydjet2Hadronizer(const edm::ParameterSet& pset) +Hydjet2Hadronizer::Hydjet2Hadronizer(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC) : BaseHadronizer(pset), - fSqrtS(pset.getParameter("fSqrtS")), // C.m.s. energy per nucleon pair - fAw(pset.getParameter("fAw")), // Atomic weigth of nuclei, fAw - fIfb(pset.getParameter( - "fIfb")), // Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax]) - fBmin(pset.getParameter("fBmin")), // Minimum impact parameter in units of nuclear radius, fBmin - fBmax(pset.getParameter("fBmax")), // Maximum impact parameter in units of nuclear radius, fBmax - fBfix(pset.getParameter("fBfix")), // Fixed impact parameter in units of nuclear radius, fBfix - fT(pset.getParameter("fT")), // Temperature at chemical freeze-out, fT [GeV] - fMuB(pset.getParameter("fMuB")), // Chemical baryon potential per unit charge, fMuB [GeV] - fMuS(pset.getParameter("fMuS")), // Chemical strangeness potential per unit charge, fMuS [GeV] - fMuC(pset.getParameter( - "fMuC")), // Chemical charm potential per unit charge, fMuC [GeV] (used if charm production is turned on) - fMuI3(pset.getParameter("fMuI3")), // Chemical isospin potential per unit charge, fMuI3 [GeV] - fThFO(pset.getParameter("fThFO")), // Temperature at thermal freeze-out, fThFO [GeV] - fMu_th_pip(pset.getParameter( - "fMu_th_pip")), // Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] - fTau(pset.getParameter( - "fTau")), // Proper time proper at thermal freeze-out for central collisions, fTau [fm/c] - fSigmaTau(pset.getParameter( - "fSigmaTau")), // Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] - fR(pset.getParameter( - "fR")), // Maximal transverse radius at thermal freeze-out for central collisions, fR [fm] - fYlmax(pset.getParameter("fYlmax")), // Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax - fUmax(pset.getParameter( - "fUmax")), // Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax - fDelta(pset.getParameter( - "fDelta")), // Momentum azimuthal anizotropy parameter at thermal freeze-out, fDelta - fEpsilon(pset.getParameter( - "fEpsilon")), // Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon - fIfDeltaEpsilon(pset.getParameter( - "fIfDeltaEpsilon")), // Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated) - fDecay(pset.getParameter( - "fDecay")), // Flag to switch on/off hadron decays, fDecay (=0 decays off, >=1 decays on) - fWeakDecay(pset.getParameter( - "fWeakDecay")), // Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays - fEtaType(pset.getParameter( - "fEtaType")), // Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax) - fTMuType(pset.getParameter( - "fTMuType")), // Flag to use calculated T_ch, mu_B and mu_S as a function of fSqrtS, fTMuType (=0 user's ones, >0 calculated) - fCorrS(pset.getParameter( - "fCorrS")), // Strangeness supression factor gamma_s with fCorrS value (0( - "fCharmProd")), // Flag to include thermal charm production, fCharmProd (=0 no charm production, >=1 charm production) - fCorrC(pset.getParameter( - "fCorrC")), // Charmness enhancement factor gamma_c with fCorrC value (fCorrC >0, if fCorrC<0 then it is calculated) - fNhsel(pset.getParameter( - "fNhsel")), //Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) - fPyhist(pset.getParameter( - "fPyhist")), // Flag to suppress the output of particle history from PYTHIA, fPyhist (=1 only final state particles; =0 full particle history from PYTHIA) - fIshad(pset.getParameter( - "fIshad")), // Flag to switch on/off nuclear shadowing, fIshad (0 shadowing off, 1 shadowing on) - fPtmin(pset.getParameter( - "fPtmin")), // Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c] - fT0(pset.getParameter( - "fT0")), // Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV] - fTau0(pset.getParameter("fTau0")), // Proper QGP formation time in fm/c, fTau0 (0.01("fNf")), // Number of active quark flavours in QGP, fNf (0, 1, 2 or 3) - fIenglu(pset.getParameter( - "fIenglu")), // Flag to fix type of partonic energy loss, fIenglu (0 radiative and collisional loss, 1 radiative loss only, 2 collisional loss only) - fIanglu(pset.getParameter( - "fIanglu")), // Flag to fix type of angular distribution of in-medium emitted gluons, fIanglu (0 small-angular, 1 wide-angular, 2 collinear). - - embedding_(pset.getParameter("embeddingMode")), rotate_(pset.getParameter("rotateEventPlane")), evt(nullptr), nsub_(0), @@ -201,10 +86,102 @@ Hydjet2Hadronizer::Hydjet2Hadronizer(const edm::ParameterSet& pset) phi0_(0.), sinphi0_(0.), cosphi0_(1.), + fVertex_(nullptr), pythia6Service_(new Pythia6Service(pset)) { - // constructor + fParams.doPrintInfo = false; + fParams.allowEmptyEvent = false; + fParams.fNevnt = 0; //not used in CMSSW + fParams.femb = pset.getParameter("embeddingMode"); // + fParams.fSqrtS = pset.getParameter("fSqrtS"); // C.m.s. energy per nucleon pair + fParams.fAw = pset.getParameter("fAw"); // Atomic weigth of nuclei, fAw + fParams.fIfb = pset.getParameter( + "fIfb"); // Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax]) + fParams.fBmin = pset.getParameter("fBmin"); // Minimum impact parameter in units of nuclear radius, fBmin + fParams.fBmax = pset.getParameter("fBmax"); // Maximum impact parameter in units of nuclear radius, fBmax + fParams.fBfix = pset.getParameter("fBfix"); // Fixed impact parameter in units of nuclear radius, fBfix + fParams.fT = pset.getParameter("fT"); // Temperature at chemical freeze-out, fT [GeV] + fParams.fMuB = pset.getParameter("fMuB"); // Chemical baryon potential per unit charge, fMuB [GeV] + fParams.fMuS = pset.getParameter("fMuS"); // Chemical strangeness potential per unit charge, fMuS [GeV] + fParams.fMuC = pset.getParameter( + "fMuC"); // Chemical charm potential per unit charge, fMuC [GeV] (used if charm production is turned on) + fParams.fMuI3 = pset.getParameter("fMuI3"); // Chemical isospin potential per unit charge, fMuI3 [GeV] + fParams.fThFO = pset.getParameter("fThFO"); // Temperature at thermal freeze-out, fThFO [GeV] + fParams.fMu_th_pip = + pset.getParameter("fMu_th_pip"); // Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV] + fParams.fTau = pset.getParameter( + "fTau"); // Proper time proper at thermal freeze-out for central collisions, fTau [fm/c] + fParams.fSigmaTau = pset.getParameter( + "fSigmaTau"); // Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c] + fParams.fR = pset.getParameter( + "fR"); // Maximal transverse radius at thermal freeze-out for central collisions, fR [fm] + fParams.fYlmax = + pset.getParameter("fYlmax"); // Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax + fParams.fUmax = pset.getParameter( + "fUmax"); // Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax + fParams.frhou2 = pset.getParameter("fRhou2"); //parameter to swich ON/OFF = 0) rhou2 + fParams.frhou3 = pset.getParameter("fRhou3"); //parameter to swich ON/OFF(0) rhou3 + fParams.frhou4 = pset.getParameter("fRhou4"); //parameter to swich ON/OFF(0) rhou4 + fParams.fDelta = + pset.getParameter("fDelta"); // Momentum azimuthal anizotropy parameter at thermal freeze-out, fDelta + fParams.fEpsilon = + pset.getParameter("fEpsilon"); // Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon + fParams.fv2 = pset.getParameter("fKeps2"); //parameter to swich ON/OFF(0) epsilon2 fluctuations + fParams.fv3 = pset.getParameter("fKeps3"); //parameter to swich ON/OFF(0) epsilon3 fluctuations + fParams.fIfDeltaEpsilon = pset.getParameter( + "fIfDeltaEpsilon"); // Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated) + fParams.fDecay = + pset.getParameter("fDecay"); // Flag to switch on/off hadron decays, fDecay (=0 decays off, >=1 decays on) + fParams.fWeakDecay = pset.getParameter( + "fWeakDecay"); // Low decay width threshold fWeakDecay[GeV]: width=fDecayWidth decay on; can be used to switch off weak decays + fParams.fEtaType = pset.getParameter( + "fEtaType"); // Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax) + fParams.fTMuType = pset.getParameter( + "fTMuType"); // Flag to use calculated T_ch, mu_B and mu_S as a function of fSqrtS, fTMuType (=0 user's ones, >0 calculated) + fParams.fCorrS = pset.getParameter( + "fCorrS"); // Strangeness supression factor gamma_s with fCorrS value (0( + "fCharmProd"); // Flag to include thermal charm production, fCharmProd (=0 no charm production, >=1 charm production) + fParams.fCorrC = pset.getParameter( + "fCorrC"); // Charmness enhancement factor gamma_c with fCorrC value (fCorrC >0, if fCorrC<0 then it is calculated) + fParams.fNhsel = pset.getParameter( + "fNhsel"); //Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on) + fParams.fPyhist = pset.getParameter( + "fPyhist"); // Flag to suppress the output of particle history from PYTHIA, fPyhist (=1 only final state particles; =0 full particle history from PYTHIA) + fParams.fIshad = pset.getParameter( + "fIshad"); // Flag to switch on/off nuclear shadowing, fIshad (0 shadowing off, 1 shadowing on) + fParams.fPtmin = + pset.getParameter("fPtmin"); // Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c] + fParams.fT0 = pset.getParameter( + "fT0"); // Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV] + fParams.fTau0 = pset.getParameter("fTau0"); // Proper QGP formation time in fm/c, fTau0 (0.01("fNf"); // Number of active quark flavours in QGP, fNf (0, 1, 2 or 3) + fParams.fIenglu = pset.getParameter( + "fIenglu"); // Flag to fix type of partonic energy loss, fIenglu (0 radiative and collisional loss, 1 radiative loss only, 2 collisional loss only) + fParams.fIanglu = pset.getParameter( + "fIanglu"); // Flag to fix type of angular distribution of in-medium emitted gluons, fIanglu (0 small-angular, 1 wide-angular, 2 collinear). + + edm::FileInPath f1("externals/hydjet2/particles.data"); + strcpy(fParams.partDat, (f1.fullPath()).c_str()); + + edm::FileInPath f2("externals/hydjet2/tabledecay.txt"); + strcpy(fParams.tabDecay, (f2.fullPath()).c_str()); + + fParams.fPythiaTune = false; + + if (pset.exists("signalVtx")) + signalVtx_ = pset.getUntrackedParameter>("signalVtx"); + + if (signalVtx_.size() == 4) { + if (!fVertex_) + fVertex_ = new HepMC::FourVector(); + LogDebug("EventSignalVertex") << "Setting event signal vertex " + << " x = " << signalVtx_.at(0) << " y = " << signalVtx_.at(1) + << " z= " << signalVtx_.at(2) << " t = " << signalVtx_.at(3) << endl; + fVertex_->set(signalVtx_.at(0), signalVtx_.at(1), signalVtx_.at(2), signalVtx_.at(3)); + } + // PYLIST Verbosity Level // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13 pythiaPylistVerbosity_ = pset.getUntrackedParameter("pythiaPylistVerbosity", 0); @@ -212,19 +189,22 @@ Hydjet2Hadronizer::Hydjet2Hadronizer(const edm::ParameterSet& pset) //Max number of events printed on verbosity level maxEventsToPrint_ = pset.getUntrackedParameter("maxEventsToPrint", 0); LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_; - if (embedding_) - src_ = pset.getParameter("backgroundLabel"); -} + if (fParams.femb == 1) { + fParams.fIfb = 0; + src_ = iC.consumes>( + pset.getUntrackedParameter("backgroundLabel", edm::InputTag("mix", "generatorSmeared"))); + } + separateHydjetComponents_ = pset.getUntrackedParameter("separateHydjetComponents", false); +} //__________________________________________________________________________________________ Hydjet2Hadronizer::~Hydjet2Hadronizer() { - // destructor call_pystat(1); delete pythia6Service_; } //_____________________________________________________________________ -void Hydjet2Hadronizer::doSetRandomEngine(CLHEP::HepRandomEngine* v) { +void Hydjet2Hadronizer::doSetRandomEngine(CLHEP::HepRandomEngine *v) { pythia6Service_->setRandomEngine(v); hjRandomEngine = v; } @@ -234,12 +214,10 @@ bool Hydjet2Hadronizer::readSettings(int) { Pythia6Service::InstanceWrapper guard(pythia6Service_); pythia6Service_->setGeneralParams(); - SERVICE.iseed_fromC = hjRandomEngine->CLHEP::HepRandomEngine::getSeed(); + fParams.fSeed = hjRandomEngine->CLHEP::HepRandomEngine::getSeed(); LogInfo("Hydjet2Hadronizer|GenSeed") << "Seed for random number generation: " << hjRandomEngine->CLHEP::HepRandomEngine::getSeed(); - fNPartTypes = 0; //counter of hadron species - return kTRUE; } @@ -248,275 +226,79 @@ bool Hydjet2Hadronizer::initializeForInternalPartons() { Pythia6Service::InstanceWrapper guard(pythia6Service_); // the input impact parameter (bxx_) is in [fm]; transform in [fm/RA] for hydjet usage - const float ra = nuclear_radius(); + const double ra = nuclear_radius(); LogInfo("Hydjet2Hadronizer|RAScaling") << "Nuclear radius(RA) = " << ra; - fBmin /= ra; - fBmax /= ra; - fBfix /= ra; - - //check and redefine input parameters - if (fTMuType > 0 && fSqrtS > 2.24) { - if (fSqrtS < 2.24) { - LogError("Hydjet2Hadronizer|sqrtS") << "SqrtS<2.24 not allowed with fTMuType>0"; - return false; - } + fParams.fBmin /= ra; + fParams.fBmax /= ra; + fParams.fBfix /= ra; - //sqrt(s) = 2.24 ==> T_kin = 0.8 GeV - //see J. Cleymans, H. Oeschler, K. Redlich,S. Wheaton, Phys Rev. C73 034905 (2006) - fMuB = 1.308 / (1. + fSqrtS * 0.273); - fT = 0.166 - 0.139 * fMuB * fMuB - 0.053 * fMuB * fMuB * fMuB * fMuB; - fMuI3 = 0.; - fMuS = 0.; - - //create strange potential object and set strangeness density 0 - NAStrangePotential* psp = new NAStrangePotential(0., fDatabase); - psp->SetBaryonPotential(fMuB); - psp->SetTemperature(fT); - - //compute strangeness potential - if (fMuB > 0.01) - fMuS = psp->CalculateStrangePotential(); - LogInfo("Hydjet2Hadronizer|Strange") << "fMuS = " << fMuS; - - //if user choose fYlmax larger then allowed by kinematics at the specified beam energy sqrt(s) - if (fYlmax > TMath::Log(fSqrtS / 0.94)) { - LogError("Hydjet2Hadronizer|Ylmax") << "fYlmax more then TMath::Log(fSqrtS vs 0.94)!!! "; - return false; - } + hj2 = new Hydjet2(fParams); - if (fCorrS <= 0.) { - //see F. Becattini, J. Mannien, M. Gazdzicki, Phys Rev. C73 044905 (2006) - fCorrS = 1. - 0.386 * TMath::Exp(-1.23 * fT / fMuB); - LogInfo("Hydjet2Hadronizer|Strange") - << "The phenomenological f-la F. Becattini et al. PRC73 044905 (2006) for CorrS was used." << endl - << "Strangeness suppression parameter = " << fCorrS; - } - LogInfo("Hydjet2Hadronizer|Strange") - << "The phenomenological f-la J. Cleymans et al. PRC73 034905 (2006) for Tch mu_B was used." << endl - << "The simulation will be done with the calculated parameters:" << endl - << "Baryon chemical potential = " << fMuB << " [GeV]" << endl - << "Strangeness chemical potential = " << fMuS << " [GeV]" << endl - << "Isospin chemical potential = " << fMuI3 << " [GeV]" << endl - << "Strangeness suppression parameter = " << fCorrS << endl - << "Eta_max = " << fYlmax; - } - - LogInfo("Hydjet2Hadronizer|Param") << "Used eta_max = " << fYlmax << endl - << "maximal allowed eta_max TMath::Log(fSqrtS/0.94)= " - << TMath::Log(fSqrtS / 0.94); - - //initialisation of high-pt part - HYJPAR.nhsel = fNhsel; - HYJPAR.ptmin = fPtmin; - HYJPAR.ishad = fIshad; - HYJPAR.iPyhist = fPyhist; - HYIPAR.bminh = fBmin; - HYIPAR.bmaxh = fBmax; - HYIPAR.AW = fAw; - - HYPYIN.ifb = fIfb; - HYPYIN.bfix = fBfix; - HYPYIN.ene = fSqrtS; - - PYQPAR.T0 = fT0; - PYQPAR.tau0 = fTau0; - PYQPAR.nf = fNf; - PYQPAR.ienglu = fIenglu; - PYQPAR.ianglu = fIanglu; - myini_(); - - // calculation of multiplicities of different particle species - // according to the grand canonical approach - GrandCanonical gc(15, fT, fMuB, fMuS, fMuI3, fMuC); - GrandCanonical gc_ch(15, fT, fMuB, fMuS, fMuI3, fMuC); - GrandCanonical gc_pi_th(15, fThFO, 0., 0., fMu_th_pip, fMuC); - GrandCanonical gc_th_0(15, fThFO, 0., 0., 0., 0.); - - // std::ofstream outMult("densities.txt"); - // outMult<<"encoding particle density chemical potential "< 0) - dYl = TMath::Sqrt(2 * TMath::Pi()) * fYlmax; //Gaussian distr. - fVolEff = 2 * TMath::Pi() * fTau * dYl * (fR * fR) / TMath::Power((fUmax), 2) * - ((fUmax)*TMath::SinH((fUmax)) - TMath::CosH((fUmax)) + 1); - LogInfo("Hydjet2Hadronizer|Param") << "central Effective volume = " << fVolEff << " [fm^3]"; - - double particleDensity_pi_ch = 0; - double particleDensity_pi_th = 0; - // double particleDensity_th_0=0; - - if (fThFO != fT && fThFO > 0) { - GrandCanonical gc_ch(15, fT, fMuB, fMuS, fMuI3, fMuC); - GrandCanonical gc_pi_th(15, fThFO, 0., 0., fMu_th_pip, fMuC); - GrandCanonical gc_th_0(15, fThFO, 0., 0., 0., 0.); - particleDensity_pi_ch = gc_ch.ParticleNumberDensity(fDatabase->GetPDGParticle(211)); - particleDensity_pi_th = gc_pi_th.ParticleNumberDensity(fDatabase->GetPDGParticle(211)); - } - - for (int particleIndex = 0; particleIndex < fDatabase->GetNParticles(); particleIndex++) { - ParticlePDG* currParticle = fDatabase->GetPDGParticleByIndex(particleIndex); - int encoding = currParticle->GetPDG(); - - //strangeness supression - double gammaS = 1; - int S = int(currParticle->GetStrangeness()); - if (encoding == 333) - S = 2; - if (fCorrS < 1. && S != 0) - gammaS = TMath::Power(fCorrS, -TMath::Abs(S)); - - //average densities - double particleDensity = gc.ParticleNumberDensity(currParticle) / gammaS; - - //compute chemical potential for single f.o. mu==mu_ch - double mu = fMuB * int(currParticle->GetBaryonNumber()) + fMuS * int(currParticle->GetStrangeness()) + - fMuI3 * int(currParticle->GetElectricCharge()) + fMuC * int(currParticle->GetCharmness()); - - //thermal f.o. - if (fThFO != fT && fThFO > 0) { - double particleDensity_ch = gc_ch.ParticleNumberDensity(currParticle); - double particleDensity_th_0 = gc_th_0.ParticleNumberDensity(currParticle); - double numb_dens_bolt = particleDensity_pi_th * particleDensity_ch / particleDensity_pi_ch; - mu = fThFO * TMath::Log(numb_dens_bolt / particleDensity_th_0); - if (abs(encoding) == 211 || encoding == 111) - mu = fMu_th_pip; - particleDensity = numb_dens_bolt; - } + return kTRUE; +} - // set particle densities to zero for some particle codes - // pythia quark codes - if (abs(encoding) <= 9) { - particleDensity = 0; - } - // leptons - if (abs(encoding) > 10 && abs(encoding) < 19) { - particleDensity = 0; - } - // exchange bosons - if (abs(encoding) > 20 && abs(encoding) < 30) { - particleDensity = 0; - } - // pythia special codes (e.g. strings, clusters ...) - if (abs(encoding) > 80 && abs(encoding) < 100) { - particleDensity = 0; - } - // pythia di-quark codes - // Note: in PYTHIA all diquark codes have the tens digits equal to zero - if (abs(encoding) > 1000 && abs(encoding) < 6000) { - int tens = ((abs(encoding) - (abs(encoding) % 10)) / 10) % 10; - if (tens == 0) { // its a diquark; - particleDensity = 0; - } - } - // K0S and K0L - if (abs(encoding) == 130 || abs(encoding) == 310) { - particleDensity = 0; - } - // charmed particles - - if (encoding == 443) - NJPsith = particleDensity * fVolEff / dYl; - - // We generate thermo-statistically only J/psi(443), D_+(411), D_-(-411), D_0(421), - //Dbar_0(-421), D1_+(413), D1_-(-413), D1_0(423), D1bar_0(-423) - //Dcs(431) Lambdac(4122) - if (currParticle->GetCharmQNumber() != 0 || currParticle->GetCharmAQNumber() != 0) { - //ml if(abs(encoding)!=443 && - //ml abs(encoding)!=411 && abs(encoding)!=421 && - //ml abs(encoding)!=413 && abs(encoding)!=423 && abs(encoding)!=4122 && abs(encoding)!=431) { - //ml particleDensity=0; } - - if (abs(encoding) == 441 || abs(encoding) == 10441 || abs(encoding) == 10443 || abs(encoding) == 20443 || - abs(encoding) == 445 || abs(encoding) == 4232 || abs(encoding) == 4322 || abs(encoding) == 4132 || - abs(encoding) == 4312 || abs(encoding) == 4324 || abs(encoding) == 4314 || abs(encoding) == 4332 || - abs(encoding) == 4334) { - particleDensity = 0; - } else { - if (abs(encoding) != 443) { //only open charm - Nocth = Nocth + particleDensity * fVolEff / dYl; - LogInfo("Hydjet2Hadronizer|Charam") << encoding << " Nochth " << Nocth; - // particleDensity=particleDensity*fCorrC; - // if(abs(encoding)==443)particleDensity=particleDensity*fCorrC; - } - } - } +//__________________________________________________________________________________________ +bool Hydjet2Hadronizer::generatePartonsAndHadronize() { + Pythia6Service::InstanceWrapper guard(pythia6Service_); - // bottom mesons - if ((abs(encoding) > 500 && abs(encoding) < 600) || (abs(encoding) > 10500 && abs(encoding) < 10600) || - (abs(encoding) > 20500 && abs(encoding) < 20600) || (abs(encoding) > 100500 && abs(encoding) < 100600)) { - particleDensity = 0; + // generate single event + if (fParams.femb == 1) { + const edm::Event &e = getEDMEvent(); + HepMC::GenVertex *genvtx = nullptr; + const HepMC::GenEvent *inev = nullptr; + Handle> cf; + e.getByToken(src_, cf); + MixCollection mix(cf.product()); + if (mix.size() < 1) { + throw cms::Exception("MatchVtx") << "Mixing has " << mix.size() << " sub-events, should have been at least 1" + << endl; } - // bottom baryons - if (abs(encoding) > 5000 && abs(encoding) < 6000) { - particleDensity = 0; + const HepMCProduct &bkg = mix.getObject(0); + if (!(bkg.isVtxGenApplied())) { + throw cms::Exception("MatchVtx") << "Input background does not have smeared vertex!" << endl; + } else { + inev = bkg.GetEvent(); } - //////////////////////////////////////////////////////////////////////////////////////// - if (particleDensity > 0.) { - fPartEnc[fNPartTypes] = encoding; - fPartMult[2 * fNPartTypes] = particleDensity; - fPartMu[2 * fNPartTypes] = mu; - ++fNPartTypes; - if (fNPartTypes > 1000) - LogError("Hydjet2Hadronizer") << "fNPartTypes is too large" << fNPartTypes; + genvtx = inev->signal_process_vertex(); - //outMult<position().x(); + aY = genvtx->position().y(); + aZ = genvtx->position().z(); + aT = genvtx->position().t(); - // Initialize the static "last index variable" - Particle::InitIndexing(); + if (!fVertex_) { + fVertex_ = new HepMC::FourVector(); + } + LogInfo("MatchVtx") << " setting vertex " + << " aX " << aX << " aY " << aY << " aZ " << aZ << " aT " << aT << endl; + fVertex_->set(aX, aY, aZ, aT); - //----- high-pt part------------------------------ - TLorentzVector partJMom, partJPos, zeroVec; + const HepMC::HeavyIon *hi = inev->heavy_ion(); - // generate single event - if (embedding_) { - fIfb = 0; - const edm::Event& e = getEDMEvent(); - Handle input; - e.getByLabel(src_, input); - const HepMC::GenEvent* inev = input->GetEvent(); - const HepMC::HeavyIon* hi = inev->heavy_ion(); if (hi) { - fBfix = hi->impact_parameter(); + fParams.fBfix = (hi->impact_parameter()) / nuclear_radius(); phi0_ = hi->event_plane_angle(); sinphi0_ = sin(phi0_); cosphi0_ = cos(phi0_); } else { LogWarning("EventEmbedding") << "Background event does not have heavy ion record!"; } + } else if (rotate_) rotateEvtPlane(); nsoft_ = 0; nhard_ = 0; - /* - edm::LogInfo("HYDJET2mode") << "##### HYDJET2 fNhsel = " << fNhsel; - edm::LogInfo("HYDJET2fpart") << "##### HYDJET2 fpart = " << hyflow.fpart;?? - edm::LogInfo("HYDJET2tf") << "##### HYDJET2 hadron freez-out temp, Tf = " << hyflow.Tf;?? - edm::LogInfo("HYDJET2tf") << "##### HYDJET2 hadron freez-out temp, Tf = " << hyflow.Tf;?? - edm::LogInfo("HYDJET2inTemp") << "##### HYDJET2: QGP init temperature, fT0 ="< 0) { - double Epsilon0 = 0.5 * impactParameter; //e0=b/2Ra - double coeff = (HYIPAR.RA / fR) / 12.; //phenomenological coefficient - Epsilon = Epsilon0 * coeff; - double C = 5.6; - double A = C * Epsilon * (1 - Epsilon * Epsilon); - if (TMath::Abs(Epsilon) < 0.0001 || TMath::Abs(A) < 0.0001) - Delta = 0.0; - if (TMath::Abs(Epsilon) > 0.0001 && TMath::Abs(A) > 0.0001) - Delta = 0.5 * (TMath::Sqrt(1 + 4 * A * (Epsilon + A)) - 1) / A; - } - - //effective volume for central - double dYl = 2 * fYlmax; //uniform distr. [-Ylmax; Ylmax] - if (fEtaType > 0) - dYl = TMath::Sqrt(2 * TMath::Pi()) * fYlmax; //Gaussian distr. - - double VolEffcent = 2 * TMath::Pi() * fTau * dYl * (fR * fR) / TMath::Power((fUmax), 2) * - ((fUmax)*TMath::SinH((fUmax)) - TMath::CosH((fUmax)) + 1); - - //effective volume for non-central Simpson2 - double VolEffnoncent = fTau * dYl * SimpsonIntegrator2(0., 2. * TMath::Pi(), Epsilon, Delta); - - fVolEff = VolEffcent * HYFPAR.npart / HYFPAR.npart0; - - double coeff_RB = TMath::Sqrt(VolEffcent * HYFPAR.npart / HYFPAR.npart0 / VolEffnoncent); - double coeff_R1 = HYFPAR.npart / HYFPAR.npart0; - coeff_R1 = TMath::Power(coeff_R1, 0.333333); - - double Veff = fVolEff; - //------------------------------------ - //cycle on particles types - - double Nbcol = HYFPAR.nbcol; - double NccNN = SERVICE.charm; - double Ncc = Nbcol * NccNN / dYl; - double Nocth = fNocth; - double NJPsith = fNccth; - - double gammaC = 1.0; - if (fCorrC <= 0) { - gammaC = CharmEnhancementFactor(Ncc, Nocth, NJPsith, 0.001); - } else { - gammaC = fCorrC; - } - - LogInfo("Hydjet2Hadronizer|Param") << " gammaC = " << gammaC; - - for (int i = 0; i < fNPartTypes; ++i) { - double Mparam = fPartMult[2 * i] * Veff; - const int encoding = fPartEnc[i]; - - //ml if(abs(encoding)==443)Mparam = Mparam * gammaC * gammaC; - //ml if(abs(encoding)==411 || abs(encoding)==421 ||abs(encoding)==413 || abs(encoding)==423 - //ml || abs(encoding)==4122 || abs(encoding)==431) - - ParticlePDG* partDef0 = fDatabase->GetPDGParticle(encoding); - - if (partDef0->GetCharmQNumber() != 0 || partDef0->GetCharmAQNumber() != 0) - Mparam = Mparam * gammaC; - if (abs(encoding) == 443) - Mparam = Mparam * gammaC; - - LogInfo("Hydjet2Hadronizer|Param") << encoding << " " << Mparam / dYl; - - int multiplicity = CLHEP::RandPoisson::shoot(hjRandomEngine, Mparam); - - LogInfo("Hydjet2Hadronizer|Param") - << "specie: " << encoding << "; average mult: = " << Mparam << "; multiplicity = " << multiplicity; - - if (multiplicity > 0) { - ParticlePDG* partDef = fDatabase->GetPDGParticle(encoding); - if (!partDef) { - LogError("Hydjet2Hadronizer") << "No particle with encoding " << encoding; - continue; - } - - if (fCharmProd <= 0 && (partDef->GetCharmQNumber() != 0 || partDef->GetCharmAQNumber() != 0)) { - LogInfo("Hydjet2Hadronizer|Param") << "statistical charmed particle not allowed ! " << encoding; - continue; - } - if (partDef->GetCharmQNumber() != 0 || partDef->GetCharmAQNumber() != 0) - LogInfo("Hydjet2Hadronizer|Param") << " charm pdg generated " << encoding; - - //compute chemical potential for single f.o. mu==mu_ch - //compute chemical potential for thermal f.o. - double mu = fPartMu[2 * i]; - - //choose Bose-Einstein or Fermi-Dirac statistics - const double d = !(int(2 * partDef->GetSpin()) & 1) ? -1 : 1; - const double mass = partDef->GetMass(); - - //prepare histogram to sample hadron energy: - double h = (eMax - mass) / nBins; - double x = mass + 0.5 * h; - int i; - for (i = 0; i < nBins; ++i) { - if (x >= mu && fThFO > 0) - probList[i] = x * TMath::Sqrt(x * x - mass * mass) / (TMath::Exp((x - mu) / (fThFO)) + d); - if (x >= mu && fThFO <= 0) - probList[i] = x * TMath::Sqrt(x * x - mass * mass) / (TMath::Exp((x - mu) / (fT)) + d); - if (x < mu) - probList[i] = 0.; - x += h; - } - arrayFunctDistE.PrepareTable(probList); - - //prepare histogram to sample hadron transverse radius: - h = (fR) / nBins; - x = 0.5 * h; - double param = (fUmax) / (fR); - for (i = 0; i < nBins; ++i) { - probList[i] = x * TMath::CosH(param * x); - x += h; - } - arrayFunctDistR.PrepareTable(probList); - - //loop over hadrons, assign hadron coordinates and momenta - double weight = 0., yy = 0., px0 = 0., py0 = 0., pz0 = 0.; - double e = 0., x0 = 0., y0 = 0., z0 = 0., t0 = 0., etaF = 0.; - double r, RB, phiF; - - RB = fR * coeff_RB * coeff_R1 * TMath::Sqrt((1 + e3) / (1 - e3)); - - for (int j = 0; j < multiplicity; ++j) { - do { - fEtaType <= 0 ? etaF = fYlmax * (2. * CLHEP::RandFlat::shoot(hjRandomEngine) - 1.) - : etaF = (fYlmax) * (CLHEP::RandGauss::shoot(hjRandomEngine)); - n1.SetXYZT(0., 0., TMath::SinH(etaF), TMath::CosH(etaF)); - - if (TMath::Abs(etaF) > 5.) - continue; - - //old - //double RBold = fR * TMath::Sqrt(1-fEpsilon); - - //RB = fR * coeff_RB * coeff_R1; - - //double impactParameter =HYFPAR.bgen; - //double e0 = 0.5*impactParameter; - //double RBold1 = fR * TMath::Sqrt(1-e0); - - double rho = TMath::Sqrt(CLHEP::RandFlat::shoot(hjRandomEngine)); - double phi = TMath::TwoPi() * CLHEP::RandFlat::shoot(hjRandomEngine); - double Rx = TMath::Sqrt(1 - Epsilon) * RB; - double Ry = TMath::Sqrt(1 + Epsilon) * RB; - - x0 = Rx * rho * TMath::Cos(phi); - y0 = Ry * rho * TMath::Sin(phi); - r = TMath::Sqrt(x0 * x0 + y0 * y0); - phiF = TMath::Abs(TMath::ATan(y0 / x0)); - - if (x0 < 0 && y0 > 0) - phiF = TMath::Pi() - phiF; - if (x0 < 0 && y0 < 0) - phiF = TMath::Pi() + phiF; - if (x0 > 0 && y0 < 0) - phiF = 2. * TMath::Pi() - phiF; - - //new Nov2012 AS-ML - if (r > RB * (1 + e3 * TMath::Cos(3 * (phiF + psiforv3))) / (1 + e3)) - continue; - - //proper time with emission duration - double tau = - coeff_R1 * fTau + sqrt(2.) * fSigmaTau * coeff_R1 * (CLHEP::RandGauss::shoot(hjRandomEngine)); - z0 = tau * TMath::SinH(etaF); - t0 = tau * TMath::CosH(etaF); - double rhou = fUmax * r / RB; - double rhou3 = 0.063 * TMath::Sqrt((0.5 * impactParameter) / 0.67); - double rhou4 = 0.023 * ((0.5 * impactParameter) / 0.67); - double rrcoeff = 1. / TMath::Sqrt(1. + Delta * TMath::Cos(2 * phiF)); - //AS-ML Nov.2012 - rhou3 = 0.; //rhou4=0.; - rhou = rhou * (1 + rrcoeff * rhou3 * TMath::Cos(3 * (phiF + psiforv3)) + - rrcoeff * rhou4 * TMath::Cos(4 * phiF)); //ML new suggestion of AS mar2012 - double delta1 = 0.; - Delta = Delta * (1.0 + delta1 * TMath::Cos(phiF) - delta1 * TMath::Cos(3 * phiF)); - - double uxf = TMath::SinH(rhou) * TMath::Sqrt(1 + Delta) * TMath::Cos(phiF); - double uyf = TMath::SinH(rhou) * TMath::Sqrt(1 - Delta) * TMath::Sin(phiF); - double utf = TMath::CosH(etaF) * TMath::CosH(rhou) * - TMath::Sqrt(1 + Delta * TMath::Cos(2 * phiF) * TMath::TanH(rhou) * TMath::TanH(rhou)); - double uzf = TMath::SinH(etaF) * TMath::CosH(rhou) * - TMath::Sqrt(1 + Delta * TMath::Cos(2 * phiF) * TMath::TanH(rhou) * TMath::TanH(rhou)); - - vec3.SetXYZ(uxf / utf, uyf / utf, uzf / utf); - n1.Boost(-vec3); - - yy = weightMax * CLHEP::RandFlat::shoot(hjRandomEngine); - - double php0 = TMath::TwoPi() * CLHEP::RandFlat::shoot(hjRandomEngine); - double ctp0 = 2. * CLHEP::RandFlat::shoot(hjRandomEngine) - 1.; - double stp0 = TMath::Sqrt(1. - ctp0 * ctp0); - e = mass + (eMax - mass) * arrayFunctDistE(); - double pp0 = TMath::Sqrt(e * e - mass * mass); - px0 = pp0 * stp0 * TMath::Sin(php0); - py0 = pp0 * stp0 * TMath::Cos(php0); - pz0 = pp0 * ctp0; - p0.SetXYZT(px0, py0, pz0, e); - - //weight for rdr - weight = (n1 * p0) / e; // weight for rdr gammar: weight = (n1 * p0) / n1[3] / e; - - } while (yy >= weight); - - if (abs(z0) > 1000 || abs(x0) > 1000) - LogInfo("Hydjet2Hadronizer|Param") << " etaF = " << etaF << std::endl; - - partMom.SetXYZT(px0, py0, pz0, e); - partPos.SetXYZT(x0, y0, z0, t0); - partMom.Boost(vec3); - - int type = 0; //hydro - Particle particle(partDef, partPos, partMom, 0., 0, type, -1, zeroVec, zeroVec); - particle.SetIndex(); - allocator.AddParticle(particle, source); - } //nhsel==4 , no hydro part - } - } - } + hj2->GenerateEvent(fParams.fBfix); - ////////-------------HARD & SOFT particle list ----------end------- /////////////////////////// - - Npart = (int)HYFPAR.npart; - Bgen = HYFPAR.bgen; - Njet = (int)HYJPAR.njet; - Nbcol = (int)HYFPAR.nbcol; - - //if(source.empty()) { - // LogError("Hydjet2Hadronizer") << "Source is not initialized!! Trying again..."; - //return ; - //} - //Run the decays - if (RunDecays()) - Evolve(source, allocator, GetWeakDecayLimit()); - - LPIT_t it; - LPIT_t e; - - //Fill the decayed arrays - Ntot = 0; - Nhyd = 0; - Npyt = 0; - for (it = source.begin(), e = source.end(); it != e; ++it) { - TVector3 pos(it->Pos().Vect()); - TVector3 mom(it->Mom().Vect()); - float m1 = it->TableMass(); - pdg[Ntot] = it->Encoding(); - Mpdg[Ntot] = it->GetLastMotherPdg(); - Px[Ntot] = mom[0]; - Py[Ntot] = mom[1]; - Pz[Ntot] = mom[2]; - E[Ntot] = TMath::Sqrt(mom.Mag2() + m1 * m1); - X[Ntot] = pos[0]; - Y[Ntot] = pos[1]; - Z[Ntot] = pos[2]; - T[Ntot] = it->T(); - type[Ntot] = it->GetType(); - pythiaStatus[Ntot] = convertStatus(it->GetPythiaStatusCode()); - Index[Ntot] = it->GetIndex(); - MotherIndex[Ntot] = it->GetMother(); - NDaughters[Ntot] = it->GetNDaughters(); - FirstDaughterIndex[Ntot] = -1; - LastDaughterIndex[Ntot] = -1; - //index of first daughter - FirstDaughterIndex[Ntot] = it->GetFirstDaughterIndex(); - //index of last daughter - LastDaughterIndex[Ntot] = it->GetLastDaughterIndex(); - if (type[Ntot] == 1) { // jets - if (pythiaStatus[Ntot] == 1 && NDaughters[Ntot] == 0) { // code for final state particle in pythia - final[Ntot] = 1; - } else { - final[Ntot] = pythiaStatus[Ntot]; - } - } - if (type[Ntot] == 0) { // hydro - if (NDaughters[Ntot] == 0) - final[Ntot] = 1; - else - final[Ntot] = 2; - } - - if (type[Ntot] == 0) - Nhyd++; - if (type[Ntot] == 1) - Npyt++; - - Ntot++; - if (Ntot > kMax) - LogError("Hydjet2Hadronizer") << "Ntot is too large" << Ntot; + if (hj2->IsEmpty()) { + continue; } - nsoft_ = Nhyd; - nsub_ = Njet; - nhard_ = Npyt; + nsoft_ = hj2->GetNhyd(); + nsub_ = hj2->GetNjet(); + nhard_ = hj2->GetNpyt(); //100 trys - ++ntry; } } if (ev == 0) { - Sigin = HYJPAR.sigin; - Sigjet = HYJPAR.sigjet; + Sigin = hj2->GetSigin(); + Sigjet = hj2->GetSigjet(); } - ev = 1; + ev = true; - if (fNhsel < 3) + if (fParams.fNhsel < 3) nsub_++; // event information - HepMC::GenEvent* evt = new HepMC::GenEvent(); + HepMC::GenEvent *evt = new HepMC::GenEvent(); + if (nhard_ > 0 || nsoft_ > 0) get_particles(evt); @@ -940,15 +343,25 @@ bool Hydjet2Hadronizer::generatePartonsAndHadronize() { evt->set_event_scale(pypars.pari[16]); // Q^2 add_heavy_ion_rec(evt); - event().reset(evt); + if (fVertex_) { + // generate new vertex & apply the shift + // Copy the HepMC::GenEvent + std::unique_ptr HepMCEvt(new edm::HepMCProduct(evt)); + HepMCEvt->applyVtxGen(fVertex_); + evt = new HepMC::GenEvent((*HepMCEvt->GetEvent())); + } - allocator.FreeList(source); + HepMC::HEPEVT_Wrapper::check_hepevt_consistency(); + LogDebug("HEPEVT_info") << "Ev numb: " << HepMC::HEPEVT_Wrapper::event_number() + << " Entries number: " << HepMC::HEPEVT_Wrapper::number_entries() << " Max. entries " + << HepMC::HEPEVT_Wrapper::max_number_entries() << std::endl; + event().reset(evt); return kTRUE; } //________________________________________________________________ -bool Hydjet2Hadronizer::declareStableParticles(const std::vector& _pdg) { +bool Hydjet2Hadronizer::declareStableParticles(const std::vector &_pdg) { std::vector pdg = _pdg; for (size_t i = 0; i < pdg.size(); i++) { int pyCode = pycomp_(pdg[i]); @@ -965,121 +378,7 @@ bool Hydjet2Hadronizer::decay() { return true; } bool Hydjet2Hadronizer::residualDecay() { return true; } void Hydjet2Hadronizer::finalizeEvent() {} void Hydjet2Hadronizer::statistics() {} -const char* Hydjet2Hadronizer::classname() const { return "gen::Hydjet2Hadronizer"; } - -//---------------------------------------------------------------------------------------------- - -//______________________________________________________________________________________________ -//f2=f(phi,r) -double Hydjet2Hadronizer::f2(double x, double y, double Delta) { - LogDebug("f2") << "in f2: " - << "delta" << Delta; - double RsB = fR; //test: podstavit' *coefff_RB - double rhou = fUmax * y / RsB; - double ff = - y * TMath::CosH(rhou) * TMath::Sqrt(1 + Delta * TMath::Cos(2 * x) * TMath::TanH(rhou) * TMath::TanH(rhou)); - //n_mu u^mu f-la 20 - return ff; -} - -//____________________________________________________________________________________________ -double Hydjet2Hadronizer::SimpsonIntegrator(double a, double b, double phi, double Delta) { - LogDebug("SimpsonIntegrator") << "in SimpsonIntegrator" - << "delta - " << Delta; - int nsubIntervals = 100; - double h = (b - a) / nsubIntervals; - double s = f2(phi, a + 0.5 * h, Delta); - double t = 0.5 * (f2(phi, a, Delta) + f2(phi, b, Delta)); - double x = a; - double y = a + 0.5 * h; - for (int i = 1; i < nsubIntervals; i++) { - x += h; - y += h; - s += f2(phi, y, Delta); - t += f2(phi, x, Delta); - } - t += 2.0 * s; - return t * h / 3.0; -} - -//______________________________________________________________________________________________ -double Hydjet2Hadronizer::SimpsonIntegrator2(double a, double b, double Epsilon, double Delta) { - LogInfo("SimpsonIntegrator2") << "in SimpsonIntegrator2: epsilon - " << Epsilon << " delta - " << Delta; - int nsubIntervals = 10000; - double h = (b - a) / nsubIntervals; //-1-pi, phi - double s = 0; - // double h2 = (fR)/nsubIntervals; //0-R maximal RB ? - - double x = 0; //phi - for (int j = 1; j < nsubIntervals; j++) { - x += h; // phi - double e = Epsilon; - double RsB = fR; //test: podstavit' *coefff_RB - double RB = RsB * (TMath::Sqrt(1 - e * e) / TMath::Sqrt(1 + e * TMath::Cos(2 * x))); //f-la7 RB - double sr = SimpsonIntegrator(0, RB, x, Delta); - s += sr; - } - return s * h; -} - -//___________________________________________________________________________________________________ -double Hydjet2Hadronizer::MidpointIntegrator2(double a, double b, double Delta, double Epsilon) { - int nsubIntervals = 2000; - int nsubIntervals2 = 1; - double h = (b - a) / nsubIntervals; //0-pi , phi - double h2 = (fR) / nsubIntervals; //0-R maximal RB ? - - double x = a + 0.5 * h; - double y = 0; - - double t = f2(x, y, Delta); - - double e = Epsilon; - - for (int j = 1; j < nsubIntervals; j++) { - x += h; // integr phi - - double RsB = fR; //test: podstavit' *coefff_RB - double RB = RsB * (TMath::Sqrt(1 - e * e) / TMath::Sqrt(1 + e * TMath::Cos(2 * x))); //f-la7 RB - - nsubIntervals2 = int(RB / h2) + 1; - // integr R - y = 0; - for (int i = 1; i < nsubIntervals2; i++) - t += f2(x, (y += h2), Delta); - } - return t * h * h2; -} - -//__________________________________________________________________________________________________________ -double Hydjet2Hadronizer::CharmEnhancementFactor(double Ncc, double Ndth, double NJPsith, double Epsilon) { - double gammaC = 100.; - double x1 = gammaC * Ndth; - double var1 = Ncc - 0.5 * gammaC * Ndth * TMath::BesselI1(x1) / TMath::BesselI0(x1) - gammaC * gammaC * NJPsith; - LogInfo("Charam") << "gammaC 20" - << " var " << var1 << endl; - gammaC = 1.; - double x0 = gammaC * Ndth; - double var0 = Ncc - 0.5 * gammaC * Ndth * TMath::BesselI1(x0) / TMath::BesselI0(x0) - gammaC * gammaC * NJPsith; - LogInfo("Charam") << "gammaC 1" - << " var " << var0; - - for (int i = 1; i < 1000; i++) { - if (var1 * var0 < 0) { - gammaC = gammaC + 0.01 * i; - double x = gammaC * Ndth; - var0 = Ncc - 0.5 * gammaC * Ndth * TMath::BesselI1(x) / TMath::BesselI0(x) - gammaC * gammaC * NJPsith; - } else { - LogInfo("Charam") << "gammaC " << gammaC << " var0 " << var0; - return gammaC; - } - } - LogInfo("Charam") << "gammaC not found ? " << gammaC << " var0 " << var0; - return -100; -} -//---------------------------------------------------------------------------------------------- - -//_____________________________________________________________________ +const char *Hydjet2Hadronizer::classname() const { return "gen::Hydjet2Hadronizer"; } //________________________________________________________________ void Hydjet2Hadronizer::rotateEvtPlane() { @@ -1090,144 +389,141 @@ void Hydjet2Hadronizer::rotateEvtPlane() { } //_____________________________________________________________________ -bool Hydjet2Hadronizer::get_particles(HepMC::GenEvent* evt) { - // Hard particles. The first nhard_ lines from hyjets array. - // Pythia/Pyquen sub-events (sub-collisions) for a given event - // Return T/F if success/failure - // Create particles from lujet entries, assign them into vertices and - // put the vertices in the GenEvent, for each SubEvent - // The SubEvent information is kept by storing indeces of main vertices - // of subevents as a vector in GenHIEvent. - LogDebug("SubEvent") << "Number of sub events " << nsub_; - LogDebug("Hydjet2") << "Number of hard events " << Njet; - LogDebug("Hydjet2") << "Number of hard particles " << nhard_; - LogDebug("Hydjet2") << "Number of soft particles " << nsoft_; - - vector sub_vertices(nsub_); +bool Hydjet2Hadronizer::get_particles(HepMC::GenEvent *evt) { + LogDebug("SubEvent") << " Number of sub events " << nsub_; + LogDebug("Hydjet") << " Number of hard events " << hj2->GetNjet(); + LogDebug("Hydjet") << " Number of hard particles " << nhard_; + LogDebug("Hydjet") << " Number of soft particles " << nsoft_; + LogDebug("Hydjet") << " nhard_ + nsoft_ = " << nhard_ + nsoft_ << " Ntot = " << hj2->GetNtot() << endl; int ihy = 0; - for (int isub = 0; isub < nsub_; isub++) { - LogDebug("SubEvent") << "Sub Event ID : " << isub; - - int sub_up = (isub + 1) * 150000; // Upper limit in mother index, determining the range of Sub-Event - vector particles; - vector mother_ids; - vector prods; - - sub_vertices[isub] = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), isub); - evt->add_vertex(sub_vertices[isub]); - - if (!evt->signal_process_vertex()) - evt->set_signal_process_vertex(sub_vertices[isub]); - - while (ihy < nhard_ + nsoft_ && (MotherIndex[ihy] < sub_up || ihy > nhard_)) { - particles.push_back(build_hyjet2(ihy, ihy + 1)); - prods.push_back(build_hyjet2_vertex(ihy, isub)); - mother_ids.push_back(MotherIndex[ihy]); - LogDebug("DecayChain") << "Mother index : " << MotherIndex[ihy]; - ihy++; + int isub_l = -1; + int stab = 0; + + vector primary_particle(hj2->GetNtot()); + vector particle(hj2->GetNtot()); + + HepMC::GenVertex *sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), 0); // just initialization + + while (ihy < hj2->GetNtot()) { + if ((hj2->GetiJet().at(ihy)) != isub_l) { + sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), hj2->GetiJet().at(ihy)); + evt->add_vertex(sub_vertices); + if (!evt->signal_process_vertex()) + evt->set_signal_process_vertex(sub_vertices); + isub_l = hj2->GetiJet().at(ihy); } - //Produce Vertices and add them to the GenEvent. Remember that GenParticles are adopted by - //GenVertex and GenVertex is adopted by GenEvent. - LogDebug("Hydjet2") << "Number of particles in vector " << particles.size(); - - for (unsigned int i = 0; i < particles.size(); i++) { - HepMC::GenParticle* part = particles[i]; - //The Fortran code is modified to preserve mother id info, by seperating the beginning - //mother indices of successive subevents by 5000 - int mid = mother_ids[i] - isub * 150000 - 1; - LogDebug("DecayChain") << "Particle " << i; - LogDebug("DecayChain") << "Mother's ID " << mid; - LogDebug("DecayChain") << "Particle's PDG ID " << part->pdg_id(); - - if (mid <= 0) { - sub_vertices[isub]->add_particle_out(part); - continue; - } - if (mid > 0) { - HepMC::GenParticle* mother = particles[mid]; - LogDebug("DecayChain") << "Mother's PDG ID " << mother->pdg_id(); - HepMC::GenVertex* prod_vertex = mother->end_vertex(); - if (!prod_vertex) { - prod_vertex = prods[i]; - prod_vertex->add_particle_in(mother); - evt->add_vertex(prod_vertex); - prods[i] = nullptr; // mark to protect deletion - } - - prod_vertex->add_particle_out(part); + if ((hj2->GetFinal().at(ihy)) == 1) //convertStatus(hj2->GetPythiaStatus().at(ihy)) == 1) + stab++; + LogDebug("Hydjet_array") << ihy << " MULTin ev.:" << hj2->GetNtot() << " SubEv.#" << hj2->GetiJet().at(ihy) + << " Part #" << ihy + 1 << ", PDG: " << hj2->GetPdg().at(ihy) << " (st. " + << convertStatus(hj2->GetPythiaStatus().at(ihy)) + << ") mother=" << hj2->GetMotherIndex().at(ihy) + 1 << ", childs (" + << hj2->GetFirstDaughterIndex().at(ihy) + 1 << "-" + << hj2->GetLastDaughterIndex().at(ihy) + 1 << "), vtx (" << hj2->GetX().at(ihy) << "," + << hj2->GetY().at(ihy) << "," << hj2->GetZ().at(ihy) << ") " << std::endl; + + if ((hj2->GetMotherIndex().at(ihy)) <= 0) { + primary_particle.at(ihy) = build_hyjet2(ihy, ihy + 1); + sub_vertices->add_particle_out(primary_particle.at(ihy)); + LogDebug("Hydjet_array") << " ---> " << ihy + 1 << std::endl; + } else { + particle.at(ihy) = build_hyjet2(ihy, ihy + 1); + int mid = hj2->GetMotherIndex().at(ihy); + int mid_t = mid; + + while ((mid < ihy) && ((hj2->GetPdg().at(ihy)) < 100) && ((hj2->GetFirstDaughterIndex().at(ihy)) == ihy)) + mid++; + + if ((hj2->GetPdg().at(ihy)) < 100) + mid = mid_t; + + HepMC::GenParticle *mother = primary_particle.at(mid); + HepMC::GenVertex *prods = build_hyjet2_vertex(ihy, (hj2->GetiJet().at(ihy))); + + if (!mother) { + mother = particle.at(mid); + primary_particle.at(mid) = mother; } - } - // cleanup vertices not assigned to evt - for (unsigned int i = 0; i < prods.size(); i++) { - if (prods[i]) - delete prods[i]; + HepMC::GenVertex *prod_vertex = mother->end_vertex(); + if (!prod_vertex) { + prod_vertex = prods; + prod_vertex->add_particle_in(mother); + LogDebug("Hydjet_array") << " <--- " << mid + 1 << std::endl; + evt->add_vertex(prod_vertex); + prods = nullptr; + } + prod_vertex->add_particle_out(particle.at(ihy)); + LogDebug("Hydjet_array") << " ---" << mid + 1 << "---> " << ihy + 1 << std::endl; + if (prods) + delete prods; } + ihy++; } - + LogDebug("Hydjet_array") << " MULTin ev.:" << hj2->GetNtot() << ", last index: " << ihy - 1 + << ", stable particles: " << stab << std::endl; return kTRUE; } //___________________________________________________________________ -HepMC::GenParticle* Hydjet2Hadronizer::build_hyjet2(int index, int barcode) { +HepMC::GenParticle *Hydjet2Hadronizer::build_hyjet2(int index, int barcode) { // Build particle object corresponding to index in hyjets (soft+hard) - - double px0 = Px[index]; - double py0 = Py[index]; + double px0 = (hj2->GetPx()).at(index); + double py0 = (hj2->GetPy()).at(index); double px = px0 * cosphi0_ - py0 * sinphi0_; double py = py0 * cosphi0_ + px0 * sinphi0_; - // cout<< "status: "<GetPz()).at(index), // pz + (hj2->GetE()).at(index)), // E + (hj2->GetPdg()).at(index), // id + convertStatus(convertStatusForComponents((hj2->GetFinal()).at(index), + (hj2->GetType()).at(index))) // status + ); p->suggest_barcode(barcode); return p; } //___________________________________________________________________ -HepMC::GenVertex* Hydjet2Hadronizer::build_hyjet2_vertex(int i, int id) { +HepMC::GenVertex *Hydjet2Hadronizer::build_hyjet2_vertex(int i, int id) { // build verteces for the hyjets stored events - - double x0 = X[i]; - double y0 = Y[i]; + double x0 = (hj2->GetX()).at(i); + double y0 = (hj2->GetY()).at(i); double x = x0 * cosphi0_ - y0 * sinphi0_; double y = y0 * cosphi0_ + x0 * sinphi0_; - double z = Z[i]; - double t = T[i]; + double z = (hj2->GetZ()).at(i); + double t = (hj2->GetT()).at(i); + + HepMC::GenVertex *vertex = new HepMC::GenVertex(HepMC::FourVector(x, y, z, t), id); - HepMC::GenVertex* vertex = new HepMC::GenVertex(HepMC::FourVector(x, y, z, t), id); return vertex; } //_____________________________________________________________________ -void Hydjet2Hadronizer::add_heavy_ion_rec(HepMC::GenEvent* evt) { +void Hydjet2Hadronizer::add_heavy_ion_rec(HepMC::GenEvent *evt) { // heavy ion record in the final CMSSW Event - double npart = Npart; - int nproj = static_cast(npart / 2); - int ntarg = static_cast(npart - nproj); - - HepMC::HeavyIon* hi = new HepMC::HeavyIon(nsub_, // Ncoll_hard/N of SubEvents - nproj, // Npart_proj - ntarg, // Npart_targ - Nbcol, // Ncoll - 0, // spectator_neutrons - 0, // spectator_protons - 0, // N_Nwounded_collisions - 0, // Nwounded_N_collisions - 0, // Nwounded_Nwounded_collisions - Bgen * nuclear_radius(), // impact_parameter in [fm] - phi0_, // event_plane_angle - 0, // eccentricity - Sigin // sigma_inel_NN + int nproj = static_cast((hj2->GetNpart()) / 2); + int ntarg = static_cast((hj2->GetNpart()) - nproj); + + HepMC::HeavyIon *hi = new HepMC::HeavyIon(nsub_, // Ncoll_hard/N of SubEvents + nproj, // Npart_proj + ntarg, // Npart_targ + hj2->GetNbcol(), // Ncoll + 0, // spectator_neutrons + 0, // spectator_protons + 0, // N_Nwounded_collisions + 0, // Nwounded_N_collisions + 0, // Nwounded_Nwounded_collisions + hj2->GetBgen() * nuclear_radius(), // impact_parameter in [fm] + phi0_, // event_plane_angle + hj2->GetPsiv3(), // eccentricity <<<---- psi for v3!!! + Sigin // sigma_inel_NN ); evt->set_heavy_ion(*hi); diff --git a/GeneratorInterface/Hydjet2Interface/src/InitialState.cc b/GeneratorInterface/Hydjet2Interface/src/InitialState.cc deleted file mode 100644 index a831cc106b2bc..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/InitialState.cc +++ /dev/null @@ -1,44 +0,0 @@ -/* - Ludmila Malinina malinina@lav01.sinp.msu.ru, SINP MSU/Moscow and JINR/Dubna - Ionut Arsene i.c.arsene@fys.uio.no, Oslo University and ISS-Bucharest - Date : 2007/05/30 -*/ - -#include "TVector3.h" -#include "GeneratorInterface/Hydjet2Interface/interface/InitialState.h" -#include "GeneratorInterface/Hydjet2Interface/interface/HadronDecayer.h" -#include -#include - -void InitialState::Evolve(List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit) { - // Particle indexes are set for primaries already from InitialStateHydjet::Initialize() - - // particle list iterators - LPIT_t it; - LPIT_t e; - - // Decay loop - // Note that the decay products are always added at the end of list so the unstable products are - // decayed when the iterator reaches them (used for cascade decays) - for (it = secondaries.begin(), e = secondaries.end(); it != e; ++it) { - // if the decay procedure was applied already skip ... (e.g. particles from pythia history information) - if (it->GetDecayed()) { - continue; - } - - // generate the decay time; if particle is stable or set to stable decayTime=0 - double decayTime = GetDecayTime(*it, weakDecayLimit); - it->SetLastInterTime(it->T() + decayTime); - TVector3 shift(it->Mom().BoostVector()); - shift *= decayTime; - it->SetDecayed(); - - // if decayTime>0 then apply the decay procedure (only 2 or 3 body decays) - if (decayTime > 0.) { - it->Pos(it->Pos() += TLorentzVector(shift, 0.)); - it->T(it->T() + decayTime); - Decay(secondaries, *it, allocator, fDatabase); - } - // if particle is stable just continue - } -} diff --git a/GeneratorInterface/Hydjet2Interface/src/Particle.cc b/GeneratorInterface/Hydjet2Interface/src/Particle.cc deleted file mode 100644 index cfe3010f1d7b5..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/Particle.cc +++ /dev/null @@ -1,118 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#include -#include "GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h" -#include "GeneratorInterface/Hydjet2Interface/interface/Particle.h" - -Particle::Particle(ParticlePDG *prop) - : fParticleProperties(prop), - fLastInteractionTime(0.), - fInteractionNumber(0), - fPythiaStatusCode(-1), - fLastMotherPdg(0), - fType(0), - fIndex(-1), - fMotherIndex(-1), - fNDaughters(0), - fFirstDaughterIndex(-1), - fLastDaughterIndex(-1), - fDecayed(kFALSE) {} - -Particle::Particle( - ParticlePDG *prop, const TLorentzVector &pos, const TLorentzVector &mom, double lit, int lin, int type) - : fPosition(pos), - fMomentum(mom), - fPythiaStatusCode(-1), - fIndex(-1), - fMotherIndex(-1), - fNDaughters(0), - fFirstDaughterIndex(-1), - fLastDaughterIndex(-1), - fDecayed(kFALSE) { - fLastInteractionTime = lit; - fInteractionNumber = lin; - fParticleProperties = prop; - fType = type; -} - -Particle::Particle(ParticlePDG *prop, - const TLorentzVector &pos, - const TLorentzVector &mom, - double t, - int n, - int ty, - int motherPdg, - const TLorentzVector &mPos, - const TLorentzVector &mMom) - : fPosition(pos), - fMomentum(mom), - fLastMotherDecayCoor(mPos), - fLastMotherDecayMom(mMom), - fPythiaStatusCode(-1), - fIndex(-1), - fMotherIndex(-1), - fNDaughters(0), - fFirstDaughterIndex(-1), - fLastDaughterIndex(-1), - fDecayed(kFALSE) { - fParticleProperties = prop; - fLastInteractionTime = t; - fInteractionNumber = n; - fType = ty; - fLastMotherPdg = motherPdg; -} - -int Particle::Encoding() const { return fParticleProperties->GetPDG(); } - -double Particle::TableMass() const { return fParticleProperties->GetMass(); } - -double Particle::Eta() const { - if (fMomentum.P() != fMomentum.Pz()) - return 0.5 * TMath::Log((fMomentum.P() + fMomentum.Pz()) / (fMomentum.P() - fMomentum.Pz())); - else - return 1.e30; -} - -double Particle::Rapidity() const { - if (fMomentum.E() != fMomentum.Pz()) - return 0.5 * TMath::Log((fMomentum.E() + fMomentum.Pz()) / (fMomentum.E() - fMomentum.Pz())); - else - return 1.e30; -} - -double Particle::Phi() const { return TMath::Pi() + TMath::ATan2(-fMomentum.Py(), -fMomentum.Px()); } - -double Particle::Theta() const { - return !fMomentum.Pz() ? TMath::Pi() / 2 : TMath::ACos(fMomentum.Pz() / fMomentum.P()); -} - -double Particle::Pt() const { return TMath::Sqrt(fMomentum.Px() * fMomentum.Px() + fMomentum.Py() * fMomentum.Py()); } - -double S(const TLorentzVector &v1, const TLorentzVector &v2) { - return TMath::Power(v1.T() + v2.T(), 2) - TMath::Power(v1.X() + v2.X(), 2) - TMath::Power(v1.Y() + v2.Y(), 2) - - TMath::Power(v1.Z() + v2.Z(), 2); -} - -double T(const TLorentzVector &v1, const TLorentzVector &v2) { - return TMath::Power(v1.T() - v2.T(), 2) - TMath::Power(v1.X() - v2.X(), 2) - TMath::Power(v1.Y() - v2.Y(), 2) - - TMath::Power(v1.Z() - v2.Z(), 2); -} - -void ParticleAllocator::AddParticle(const Particle &p, List_t &list) { - if (fFreeNodes.empty()) - list.push_back(p); - else { - list.splice(list.end(), fFreeNodes, fFreeNodes.begin()); - list.back() = p; - } -} - -void ParticleAllocator::FreeListNode(List_t &list, LPIT_t it) { fFreeNodes.splice(fFreeNodes.end(), list, it); } - -void ParticleAllocator::FreeList(List_t &list) { fFreeNodes.splice(fFreeNodes.end(), list); } diff --git a/GeneratorInterface/Hydjet2Interface/src/ParticlePDG.cc b/GeneratorInterface/Hydjet2Interface/src/ParticlePDG.cc deleted file mode 100644 index b0ea3408923f5..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/ParticlePDG.cc +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright : The FASTMC and SPHMC Collaboration - Author : Ionut Cristian Arsene - Affiliation : Oslo University, Norway & Institute for Space Sciences, Bucharest, Romania - e-mail : i.c.arsene@fys.uio.no - Date : 2007/05/30 - - This class is using the particle and decay lists provided by the - THERMINATOR (Computer Physics Communications 174 669 (2006)) and - SHARE (Computer Physics Communications 167 229 (2005)) collaborations. -*/ - -#ifndef PARTICLE_PDG -#include "GeneratorInterface/Hydjet2Interface/interface/ParticlePDG.h" -#endif - -#include - -using namespace std; - -ParticlePDG::ParticlePDG() { - fPDG = kNonsensePDG; - fMass = -1.0; - fWidth = 0.0; - fNDecayChannels = 0; - for (int i = 0; i < kMaxDecayChannels; i++) - fDecayChannels[i] = new DecayChannel(); -} - -ParticlePDG::ParticlePDG(char *name, int pdg, double mass, double width) { - for (int i = 0; i < 9; i++) - if (*(name + i) != '\0') - fName[i] = *(name + i); - else - break; - fPDG = pdg; - fMass = mass; - fWidth = width; - fNDecayChannels = 0; - for (int i = 0; i < kMaxDecayChannels; i++) - fDecayChannels[i] = new DecayChannel(); -} - -ParticlePDG::~ParticlePDG() { - for (int i = 0; i < kMaxDecayChannels; i++) - delete fDecayChannels[i]; -} - -double ParticlePDG::GetFullBranching() { - double fullBranching = 0.0; - for (int i = 0; i < fNDecayChannels; i++) - fullBranching += fDecayChannels[i]->GetBranching(); - return fullBranching; -} - -void ParticlePDG::AddChannel(DecayChannel &channel) { - if (channel.GetMotherPDG() != fPDG) { - edm::LogError("ParticlePDG") << " AddChannel() : You try to add a channel which has a different mother PDG"; - return; - } - fDecayChannels[fNDecayChannels]->SetMotherPDG(channel.GetMotherPDG()); - fDecayChannels[fNDecayChannels]->SetBranching(channel.GetBranching()); - fDecayChannels[fNDecayChannels]->SetDaughters(channel.GetDaughters(), channel.GetNDaughters()); - fNDecayChannels++; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/ParticleTable.cc b/GeneratorInterface/Hydjet2Interface/src/ParticleTable.cc deleted file mode 100644 index 5c76c4e3607cd..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/ParticleTable.cc +++ /dev/null @@ -1,404 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#include "GeneratorInterface/Hydjet2Interface/interface/ParticleTable.h" - -//This table is an additional table to describe the particle properties -// that are missing in the ROOT pdg table -//There are the particles and resonances from ROOT pdg-table. -//Only wellknown and consisting of u,d,s quarks states are included. -// -//code: Baryon number, Strangeness, 2*Isospin, 2*Spin, Charge - -typedef std::pair Part_t; - -const Part_t gTableInitializer[] = { - // pdg B S 2I 2Sp Ch mass width name - Part_t(10331, ParticleInfo(0, 0, 0, 0, 0)), // 1.715, 0.125, f01710zer - Part_t(3334, ParticleInfo(1, -3, 0, 3, -1)), // 1.67245, 8.003e-16, UM1672min - Part_t(-3334, ParticleInfo(-1, 3, 0, 3, 1)), // 1.67245, 8.003e-16, UM1672mnb - Part_t(3324, ParticleInfo(1, -2, 1, 3, -1)), // 1.535, 0.0099, Xi1530min - Part_t(-3324, ParticleInfo(-1, 2, 1, 3, 1)), // 1.535, 0.0099, Xi1530mnb - Part_t(3314, ParticleInfo(1, -2, 1, 3, 0)), // 1.5318, 0.0091, Xi1530zer - Part_t(-3314, ParticleInfo(-1, 2, 1, 3, 0)), // 1.5318, 0.0091, Xi1530zrb - Part_t(335, ParticleInfo(0, 0, 0, 4, 0)), // 1.525, 0.076, f21525zer - Part_t(10211, ParticleInfo(0, 0, 2, 0, 1)), // 1.474, 0.265, a01450plu - Part_t(-10211, ParticleInfo(0, 0, 2, 0, -1)), // 1.474, 0.265, a01450min - Part_t(10111, ParticleInfo(0, 0, 2, 0, 0)), // 1.474, 0.265, a01450zer - Part_t(20333, ParticleInfo(0, 0, 0, 2, 0)), // 1.4263, 0.0555, f11420zer - Part_t(10311, ParticleInfo(0, 1, 1, 4, 0)), // 1.4256, 0.0985, Ka1430zer - Part_t(-10311, ParticleInfo(0, -1, 1, 4, 0)), // 1.4256, 0.0985, Ka1430zrb - Part_t(10321, ParticleInfo(0, 1, 1, 4, 1)), // 1.4256, 0.0985, Ka1430plu - Part_t(-10321, ParticleInfo(0, -1, 1, 4, -1)), // 1.4256, 0.0985, Ka1430min - Part_t(20313, ParticleInfo(0, 1, 1, 2, 0)), // 1.414, 0.232, Ka1410zer - Part_t(-20313, ParticleInfo(0, -1, 1, 2, 0)), // 1.414, 0.232, Ka1410zrb - Part_t(20313, ParticleInfo(0, 1, 1, 2, 0)), // 1.402, 0.174, Ka1400zer - Part_t(-20313, ParticleInfo(0, -1, 1, 2, 0)), // 1.402, 0.174, Ka1400zrb - Part_t(20323, ParticleInfo(0, 1, 1, 2, 1)), // 1.402, 0.174, Ka1400plu - Part_t(-20323, ParticleInfo(0, -1, 1, 2, -1)), // 1.402, 0.174, Ka1400min - Part_t(3114, ParticleInfo(1, -1, 2, 3, -1)), // 1.3872, 0.0394, Sg1385min - Part_t(-3114, ParticleInfo(-1, 1, 2, 3, 1)), // 1.3872, 0.0394, Sg1385mnb - Part_t(3214, ParticleInfo(1, -1, 2, 3, 0)), // 1.3837, 0.036, Sg1385zer - Part_t(-3214, ParticleInfo(-1, 1, 2, 3, 0)), // 1.3837, 0.036, Sg1385zrb - Part_t(3224, ParticleInfo(1, -1, 2, 3, 1)), // 1.3828, 0.0358, Sg1385plu - Part_t(-3224, ParticleInfo(-1, 1, 2, 3, -1)), // 1.3828, 0.0358, Sg1385plb - Part_t(10221, ParticleInfo(0, 0, 0, 0, 0)), // 1.35, 0.35, f01370zer - Part_t(3312, ParticleInfo(1, -2, 1, 1, -1)), // 1.32131, 4.009e-16, Xi1321min - Part_t(-3312, ParticleInfo(-1, 2, 1, 1, 1)), // 1.32131, 4.009e-16, Xi1321mnb - Part_t(3322, ParticleInfo(1, -2, 1, 1, 0)), // 1.31483, 2.265e-16, Xi1321zer - Part_t(-3322, ParticleInfo(-1, 2, 1, 1, 0)), // 1.31483, 2.265e-16, Xi1321zrb - Part_t(215, ParticleInfo(0, 0, 2, 4, 1)), // 1.318, 0.107, a21320plu - Part_t(115, ParticleInfo(0, 0, 2, 4, 0)), // 1.318, 0.107, a21320zer - Part_t(20223, ParticleInfo(0, 0, 0, 2, 0)), // 1.2819, 0.024, f11285zer - Part_t(225, ParticleInfo(0, 0, 0, 4, 0)), // 1.2754, 0.185, f21270zer - Part_t(10313, ParticleInfo(0, 1, 1, 2, 0)), // 1.273, 0.09, Ka1270zer - Part_t(-10313, ParticleInfo(0, -1, 1, 2, 0)), // 1.273, 0.09, Ka1270zrb - Part_t(10323, ParticleInfo(0, 1, 1, 2, 1)), // 1.273, 0.09, Ka1270plu - Part_t(-10323, ParticleInfo(0, -1, 1, 2, -1)), // 1.273, 0.09, Ka1270min - Part_t(2224, ParticleInfo(1, 0, 3, 3, 2)), // 1.232, 0.12, Dl1232plp - Part_t(2214, ParticleInfo(1, 0, 3, 3, 1)), // 1.232, 0.12, Dl1232plu - Part_t(2114, ParticleInfo(1, 0, 3, 3, 0)), // 1.232, 0.12, Dl1232zer - Part_t(1114, ParticleInfo(1, 0, 3, 3, -1)), // 1.232, 0.12, Dl1232min - Part_t(-2224, ParticleInfo(-1, 0, 3, 3, -2)), // 1.232, 0.12, Dl1232ppb - Part_t(-2214, ParticleInfo(-1, 0, 3, 3, -1)), // 1.232, 0.12, Dl1232plb - Part_t(-2114, ParticleInfo(-1, 0, 3, 3, 0)), // 1.232, 0.12, Dl1232zrb - Part_t(-1114, ParticleInfo(-1, 0, 3, 3, 1)), // 1.232, 0.12, Dl1232mnb - Part_t(20213, ParticleInfo(0, 0, 2, 2, 1)), // 1.23, 0.425, a11260plu - Part_t(-20213, ParticleInfo(0, 0, 2, 2, -1)), // 1.23, 0.425, a11260min - Part_t(20113, ParticleInfo(0, 0, 2, 2, 0)), // 1.23, 0.425, a11260zer - Part_t(10213, ParticleInfo(0, 0, 2, 2, 0)), // 1.2295, 0.142, b11235zer - Part_t(3112, ParticleInfo(1, -1, 2, 1, -1)), // 1.197, 4.442e-16, Sg1189min - Part_t(-3112, ParticleInfo(-1, 1, 2, 1, 1)), // 1.197, 4.442e-16, Sg1189mnb - Part_t(3212, ParticleInfo(1, -1, 2, 1, 0)), // 1.193, 8.879e-07, Sg1192zer - Part_t(-3212, ParticleInfo(-1, 1, 2, 1, 0)), // 1.193, 8.879e-07, Sg1192zrb - Part_t(3222, ParticleInfo(1, -1, 2, 1, 1)), // 1.189, 8.195e-16, Sg1189plu - Part_t(-3222, ParticleInfo(-1, 1, 2, 1, -1)), // 1.189, 8.195e-16, Sg1189plb - Part_t(10223, ParticleInfo(0, 0, 0, 2, 0)), // 1.17, 0.36, h11170zer - Part_t(3122, ParticleInfo(1, -1, 0, 1, 0)), // 1.11568, 2.496e-16, Lm1115zer - Part_t(-3122, ParticleInfo(-1, 1, 0, 1, 0)), // 1.11568, 2.496e-16, Lm1115zrb - Part_t(333, ParticleInfo(0, 0, 0, 2, 0)), // 1.01942, 0.004458, ph1020zer - Part_t(331, ParticleInfo(0, 0, 0, 0, 0)), // 0.95778, 0.000202, eta0prime - Part_t(2112, ParticleInfo(1, 0, 1, 1, 0)), // 0.939565, 0, ne0939zer - Part_t(-2112, ParticleInfo(-1, 0, 1, 1, 0)), // 0.939565, 0, ne0939zrb - Part_t(2212, ParticleInfo(1, 0, 1, 1, 1)), // 0.938272, 0, pr0938plu - Part_t(-2212, ParticleInfo(-1, 0, 1, 1, -1)), // 0.938272, 0, pr0938plb - Part_t(313, ParticleInfo(0, 1, 1, 2, 0)), // 0.8961, 0.0507, Ka0892zer - Part_t(-313, ParticleInfo(0, -1, 1, 2, 0)), // 0.8961, 0.0507, Ka0892zrb - Part_t(323, ParticleInfo(0, 1, 1, 2, 1)), // 0.89166, 0.0508, Ka0892plu - Part_t(-323, ParticleInfo(0, -1, 1, 2, -1)), // 0.89166, 0.0508, Ka0892min - Part_t(223, ParticleInfo(0, 0, 0, 2, 0)), // 0.78257, 0.00844, om0782zer - Part_t(213, ParticleInfo(0, 0, 2, 2, 1)), // 0.7693, 0.1502, rho770plu - Part_t(-213, ParticleInfo(0, 0, 2, 2, -1)), // 0.7693, 0.1502, rho770min - Part_t(113, ParticleInfo(0, 0, 2, 2, 0)), // 0.7693, 0.1502, rho770zer - Part_t(221, ParticleInfo(0, 0, 0, 0, 0)), // 0.5473, 1.29e-06, eta547zer - Part_t(311, ParticleInfo(0, 1, 1, 0, 0)), // 0.497672, 7.335e-16, Ka0492zer - Part_t(-311, ParticleInfo(0, -1, 1, 0, 0)), // 0.497672, 7.335e-16, Ka0492zrb - Part_t(321, ParticleInfo(0, 1, 1, 0, 1)), // 0.493677, 0, Ka0492plu - Part_t(-321, ParticleInfo(0, -1, 1, 0, -1)), // 0.493677, 0, Ka0492min - Part_t(211, ParticleInfo(0, 0, 2, 0, 1)), // 0.13957, 0, pi0139plu - Part_t(-211, ParticleInfo(0, 0, 2, 0, -1)), // 0.13957, 0, pi0139min - Part_t(111, ParticleInfo(0, 0, 2, 0, 0)), // 0.134976, 0, pi0135zer - Part_t(22, ParticleInfo(0, 0, 0, 2, 0)), // 0.00, 0, gam000zer -}; - -const std::map gParticleTable(gTableInitializer, - gTableInitializer + sizeof gTableInitializer / sizeof(Part_t)); - -//Part_t(443, ParticleInfo(0, 0, 0, 2, 0)),// 3.09687, 0, jp3096zer -//Part_t(1231, ParticleInfo(0, 0, 1, 0, 0)),// 1.8693, 0, Dc1800plu -//Part_t(1232, ParticleInfo(0, 0, 1, 0, 0)),// 1.8693, 0, Dc1800min -//Part_t(1233, ParticleInfo(0, 0, 1, 0, 0)), //1.8693, 0, Dc1800zer -//Part_t(1234, ParticleInfo(0, 0, 1, 0, 0)), //1.8693, 0, Dc1800zrb -//Part_t(4231, ParticleInfo(0, 0, 1, 0, 0)), //2.01, 0, Dc2010plu -//Part_t(4232, ParticleInfo(0, 0, 1, 0, 0)), //2.0103, 0, Dc2010min -//Part_t(4233, ParticleInfo(0, 0, 1, 0, 0)), //2.0103, 0, Dc2010zer -//Part_t(4234, ParticleInfo(0, 0, 1, 0, 0)), //2.0103, 0, Dc2010zrb -//Part_t(9401, ParticleInfo(1, 0, 1, 11, 1)),// 2.6, 0.65, Ns2600plu -//Part_t(9400, ParticleInfo(1, 0, 1, 11, 0)), //2.6, 0.65, Ns2600zer -//Part_t(-9401,ParticleInfo( -1, 0, 1, 11, -1)), //2.6, 0.65, Ns2600plb -//Part_t(-9400,ParticleInfo( -1, 0, 1, 11, 0)),// 2.6, 0.65, Ns2600zrb -//Part_t(9297, ParticleInfo(1, 0, 3, 11, 2)), //2.42, 0.4, Dl2420plp -//Part_t(9298, ParticleInfo(1, 0, 3, 11, 1)), //2.42, 0.4, Dl2420plu -//Part_t(9299, ParticleInfo(1, 0, 3, 11, 0)), //2.42, 0.4, Dl2420zer -//Part_t(9300, ParticleInfo(1, 0, 3, 11, -1)), //2.42, 0.4, Dl2420min -//Part_t(-9297,ParticleInfo( -1, 0, 3, 11, -2)), //2.42, 0.4, Dl2420ppb -//Part_t(-9298,ParticleInfo( -1, 0, 3, 11, -1)), //2.42, 0.4, Dl2420plb -//Part_t(-9299,ParticleInfo( -1, 0, 3, 11, 0)), //2.42, 0.4, Dl2420zrb -//Part_t(-9300,ParticleInfo( -1, 0, 3, 11, 1)),// 2.42, 0.4, Dl2420mnb -//Part_t(9001, ParticleInfo(1, -1, 0, 3, 0)), //2.35, 0.15, Lm2350zer -//Part_t(-9001,ParticleInfo( -1, 1, 0, 3, 0)), //2.35, 0.15, Lm2350zrb -//Part_t(40225,ParticleInfo( 0, 0, 0, 8, 0)), //2.339, 0.319, f42340zer -//Part_t(30225,ParticleInfo( 0, 0, 0, 4, 0)), //2.297, 0.149, f22300zer -//Part_t(9000, ParticleInfo(1, -3, 0, 3, -1)),// 2.252, 0.055, UM2250min -//Part_t(-9000,ParticleInfo( -1, 3, 0, 3, 1)),// 2.252, 0.055, UM2250mnb -//Part_t(5128, ParticleInfo(1, 0, 1, 9, 1)), //2.25, 0.4, Ns2250plu -//Part_t(5218, ParticleInfo(1, 0, 1, 9, 0)), //2.25, 0.4, Ns2250zer -//Part_t(-5128,ParticleInfo( -1, 0, 1, 9, -1)),// 2.25, 0.4, Ns2250plb -//Part_t(-5218,ParticleInfo( -1, 0, 1, 9, 0)), //2.25, 0.4, Ns2250zrb -//Part_t(4028, ParticleInfo(1, -1, 2, 3, 1)), //2.25, 0.1, Sg2250plu -//Part_t(4128, ParticleInfo(1, -1, 2, 3, -1)), //2.25, 0.1, Sg2250min -//Part_t(4228, ParticleInfo(1, -1, 2, 3, 0)), //2.25, 0.1, Sg2250zer -//Part_t(-4028,ParticleInfo( -1, 1, 2, 3, -1)), //2.25, 0.1, Sg2250plb -//Part_t(-4128,ParticleInfo( -1, 1, 2, 3, 1)), //2.25, 0.1, Sg2250mnb -//Part_t(-4228,ParticleInfo( -1, 1, 2, 3, 0)), //2.25, 0.1, Sg2250zrb -//Part_t(3128, ParticleInfo(1, 0, 1, 5, 1)),// 2.22, 0.4, Ns2220plu -//Part_t(3218, ParticleInfo(1, 0, 1, 5, 0)),// 2.22, 0.4, Ns2220zer -//Part_t(-3128,ParticleInfo( -1, 0, 1, 5, -1)),// 2.22, 0.4, Ns2220plb -//Part_t(-3218,ParticleInfo( -1, 0, 1, 5, 0)),// 2.22, 0.4, Ns2220zrb -//Part_t(1218, ParticleInfo(1, 0, 1, 7, 1)), //2.19, 0.45, Ns2190plu -//Part_t(2128, ParticleInfo(1, 0, 1, 7, 0)), //2.19, 0.45, Ns2190zer -//Part_t(-1218,ParticleInfo( -1, 0, 1, 7, -1)), //2.19, 0.45, Ns2190plb -//Part_t(-2128,ParticleInfo( -1, 0, 1, 7, 0)), //2.19, 0.45, Ns2190zrb -//Part_t(23126,ParticleInfo( 1, -1, 0, 3, 0)), //2.11, 0.2, Lm2110zer -//Part_t(-23126,ParticleInfo( -1, 1, 0, 3, 0)), //2.11, 0.2, Lm2110zrb -//Part_t(3128, ParticleInfo(1, -1, 0, 3, 0)), //2.1, 0.2, Lm2100zer -//Part_t(-3128,ParticleInfo( -1, 1, 0, 3, 0)), //2.1, 0.2, Lm2100zrb -//Part_t(329, ParticleInfo( 0, 1, 1, 4, 1)), //2.045, 0.198, Ka2045plu -//Part_t(-329, ParticleInfo(0, -1, 1, 4, -1)),// 2.045, 0.198, Ka2045min -//Part_t(319, ParticleInfo(0, 1, 1, 4, 0)),// 2.045, 0.198, Ka2045zer -//Part_t(-319, ParticleInfo(0, -1, 1, 4, 0)),// 2.045, 0.198, Ka2045zrb -//Part_t(229, ParticleInfo(0, 0, 0, 8, 0)), //2.034, 0.222, f42050zer -//Part_t(3118, ParticleInfo(1, -1, 2, 3, 1)),// 2.03, 0.18, Sg2030plu -//Part_t(3218, ParticleInfo(1, -1, 2, 3, -1)),// 2.03, 0.18, Sg2030min -//Part_t(3228, ParticleInfo(1, -1, 2, 3, 0)), //2.03, 0.18, Sg2030zer -//Part_t(-3118,ParticleInfo( -1, 1, 2, 3, -1)), //2.03, 0.18, Sg2030plb -//Part_t(-3218,ParticleInfo( -1, 1, 2, 3, 1)), //2.03, 0.18, Sg2030mnb -//Part_t(-3228,ParticleInfo( -1, 1, 2, 3, 0)), //2.03, 0.18, Sg2030zrb -//Part_t(8901, ParticleInfo(1, -2, 1, 5, -1)), //2.025, 0.02, Xi2030min -//Part_t(8900, ParticleInfo(-1, 2, 1, 5, 1)), //2.025, 0.02, Xi2030mnb -//Part_t(-8901,ParticleInfo( 1, -2, 1, 5, 0)), //2.025, 0.02, Xi2030zer -//Part_t(-8900,ParticleInfo( -1, 2, 1, 5, 0)), //2.025, 0.02, Xi2030zrb -//Part_t(219, ParticleInfo(0, 0, 2, 8, 1)), //2.014, 0.361, a42040plu -//Part_t(-219, ParticleInfo(0, 0, 2, 8, -1)), //2.014, 0.361, a42040min -//Part_t(119, ParticleInfo(0, 0, 2, 8, 0)), //2.014, 0.361, a42040zer -//Part_t(20225,ParticleInfo( 0, 0, 0, 4, 0)), //2.011, 0.202, f22010zer -//Part_t(1118, ParticleInfo(1, 0, 3, 7, 2)), //1.95, 0.3, Dl1950plp -//Part_t(2118, ParticleInfo(1, 0, 3, 7, 1)), //1.95, 0.3, Dl1950plu -//Part_t(2218, ParticleInfo(1, 0, 3, 7, 0)), //1.95, 0.3, Dl1950zer -//Part_t(2228, ParticleInfo(1, 0, 3, 7, -1)),// 1.95, 0.3, Dl1950min -//Part_t(-1118,ParticleInfo( -1, 0, 3, 7, -2)), //1.95, 0.3, Dl1950ppb -//Part_t(-2118,ParticleInfo( -1, 0, 3, 7, -1)), //1.95, 0.3, Dl1950plb -//Part_t(-2218,ParticleInfo( -1, 0, 3, 7, 0)), //1.95, 0.3, Dl1950zrb -//Part_t(-2228,ParticleInfo( -1, 0, 3, 7, 1)), //1.95, 0.3, Dl1950mnb -//Part_t(67001,ParticleInfo( 1, -2, 1, 3, -1)), //1.95, 0.06, Xi1950min -//Part_t(-67001,ParticleInfo( -1, 2, 1, 3, 1)), //1.95, 0.06, Xi1950mnb -//Part_t(67000,ParticleInfo(1, -2, 1, 3, 0)), //1.95, 0.06, Xi1950zer -//Part_t(-67000,ParticleInfo( -1, 2, 1, 3, 0)), //1.95, 0.06, Xi1950zrb -//Part_t(23114, ParticleInfo(1, -1, 2, 3, 1)), //1.94, 0.22, Sg1940plu -//Part_t(23214, ParticleInfo(1, -1, 2, 3, -1)), //1.94, 0.22, Sg1940min -//Part_t(23224, ParticleInfo(1, -1, 2, 3, 0)), //1.94, 0.22, Sg1940zer -//Part_t(-23114,ParticleInfo( -1, 1, 2, 3, -1)), //1.94, 0.22, Sg1940plb -//Part_t(-23214,ParticleInfo( -1, 1, 2, 3, 1)), //1.94, 0.22, Sg1940mnb -//Part_t(-23224,ParticleInfo(-1, 1, 2, 3, 0)), //1.94, 0.22, Sg1940zrb -//Part_t(11116, ParticleInfo(1, 0, 3, 5, 2)), //1.93, 0.35, Dl1930plp -//Part_t(11216, ParticleInfo(1, 0, 3, 5, 1)), //1.93, 0.35, Dl1930plu -//Part_t(12126, ParticleInfo(1, 0, 3, 5, 0)), //1.93, 0.35, Dl1930zer -//Part_t(12226, ParticleInfo(1, 0, 3, 5, -1)), //1.93, 0.35, Dl1930min -//Part_t(-11116,ParticleInfo( -1, 0, 3, 5, -2)),// 1.93, 0.35, Dl1930ppb -//Part_t(-11216,ParticleInfo( -1, 0, 3, 5, -1)),// 1.93, 0.35, Dl1930plb -//Part_t(-12126,ParticleInfo( -1, 0, 3, 5, 0)), //1.93, 0.35, Dl1930zrb -//Part_t(-12226,ParticleInfo( -1, 0, 3, 5, 1)),// 1.93, 0.35, Dl1930mnb -//Part_t(21114, ParticleInfo(1, 0, 3, 3, 2)), //1.92, 0.2, Dl1920plp -//Part_t(22114, ParticleInfo(1, 0, 3, 3, 1)), //1.92, 0.2, Dl1920plu -//Part_t(22214, ParticleInfo(1, 0, 3, 3, 0)), //1.92, 0.2, Dl1920zer -//Part_t(22224, ParticleInfo(1, 0, 3, 3, -1)), //1.92, 0.2, Dl1920min -//Part_t(-21114,ParticleInfo( -1, 0, 3, 3, -2)), //1.92, 0.2, Dl1920ppb -//Part_t(-22114,ParticleInfo( -1, 0, 3, 3, -1)), //1.92, 0.2, Dl1920plb -//Part_t(-22214,ParticleInfo( -1, 0, 3, 3, 0)), //1.92, 0.2, Dl1920zrb -//Part_t(-22224,ParticleInfo( -1, 0, 3, 3, 1)), //1.92, 0.2, Dl1920mnb -//Part_t(13116, ParticleInfo(1, -1, 2, 5, 1)), //1.915, 0.12, Sg1915plu -//Part_t(13216, ParticleInfo(1, -1, 2, 5, -1)), //1.915, 0.12, Sg1915min -//Part_t(13226, ParticleInfo(1, -1, 2, 5, 0)), //1.915, 0.12, Sg1915zer -//Part_t(-13116,ParticleInfo( -1, 1, 2, 5, -1)), //1.915, 0.12, Sg1915plb -//Part_t(-13216,ParticleInfo( -1, 1, 2, 5, 1)), //1.915, 0.12, Sg1915mnb -//Part_t(-13226,ParticleInfo( -1, 1, 2, 5, 0)), //1.915, 0.12, Sg1915zrb -//Part_t(21112, ParticleInfo(1, 0, 3, 1, 2)),// 1.91, 0.25, Dl1910plp -//Part_t(21212, ParticleInfo(1, 0, 3, 1, 1)),// 1.91, 0.25, Dl1910plu -//Part_t(22122, ParticleInfo(1, 0, 3, 1, 0)),// 1.91, 0.25, Dl1910zer -//Part_t(22222, ParticleInfo(1, 0, 3, 1, -1)), //1.91, 0.25, Dl1910min -//Part_t(-21112,ParticleInfo( -1, 0, 3, 1, -2)),// 1.91, 0.25, Dl1910ppb -//Part_t(-21212,ParticleInfo( -1, 0, 3, 1, -1)), //1.91, 0.25, Dl1910plb -//Part_t(-22122,ParticleInfo( -1, 0, 3, 1, 0)), //1.91, 0.25, Dl1910zrb -//Part_t(-22222,ParticleInfo( -1, 0, 3, 1, 1)), //1.91, 0.25, Dl1910mnb -//Part_t(1116, ParticleInfo(1, 0, 3, 5, 2)), //1.905, 0.35, Dl1905plp -//Part_t(1216, ParticleInfo(1, 0, 3, 5, 1)), //1.905, 0.35, Dl1905plu -//Part_t(2126, ParticleInfo(1, 0, 3, 5, 0)), //1.905, 0.35, Dl1905zer -//Part_t(2226, ParticleInfo(1, 0, 3, 5, -1)), //1.905, 0.35, Dl1905min -//Part_t(-1116, ParticleInfo(-1, 0, 3, 5, -2)),// 1.905, 0.35, Dl1905ppb -//Part_t(-1216, ParticleInfo(-1, 0, 3, 5, -1)),// 1.905, 0.35, Dl1905plb -//Part_t(-2126, ParticleInfo(-1, 0, 3, 5, 0)), //1.905, 0.35, Dl1905zrb -//Part_t(-2226, ParticleInfo(-1, 0, 3, 5, 1)), //1.905, 0.35, Dl1905mnb -//Part_t(23124, ParticleInfo(1, -1, 0, 3, 0)), //1.89, 0.1, Lm1890zer -//Part_t(-23124,ParticleInfo( -1, 1, 0, 3, 0)),// 1.89, 0.1, Lm1890zrb -//Part_t(-80000,ParticleInfo( 2, 0, 4, 0, 1)),// 1.87561, 0, de2000plb -//Part_t(80000, ParticleInfo(2, 0, 4, 0, 1)), //1.87561, 0, de2000plu -//Part_t(337, ParticleInfo(0, 0, 0, 6, 0)), //1.854, 0.087, ph1850zer -//Part_t(13126, ParticleInfo(1, -1, 0, 1, 0)), //1.83, 0.95, Lm1830zer -//Part_t(-13126,ParticleInfo( -1, 1, 0, 1, 0)), //1.83, 0.95, Lm1830zrb -//Part_t(13314, ParticleInfo(1, -2, 1, 3, -1)), //1.823, 0.024, Xi1820min -//Part_t(13324, ParticleInfo(-1, 2, 1, 3, 1)), //1.823, 0.024, Xi1820mnb -//Part_t(-13314,ParticleInfo( 1, -2, 1, 3, 0)), //1.823, 0.024, Xi1820zer -//Part_t(-13324,ParticleInfo( -1, 2, 1, 3, 0)), //1.823, 0.024, Xi1820zrb -//Part_t(3126, ParticleInfo(1, -1, 0, 1, 0)), //1.82, 0.8, Lm1820zer -//Part_t(-3126, ParticleInfo(-1, 1, 0, 1, 0)), //1.82, 0.8, Lm1820zrb -//Part_t(20315, ParticleInfo(0, 1, 1, 4, 1)), //1.816, 0.276, Ka1820plu -//Part_t(20325, ParticleInfo(0, -1, 1, 4, -1)), //1.816, 0.276, Ka1820min -//Part_t(-20325,ParticleInfo( 0, 1, 1, 4, 0)), //1.816, 0.276, Ka1820zer -//Part_t(-20315,ParticleInfo( 0, -1, 1, 4, 0)), //1.816, 0.276, Ka1820zrb -//Part_t(53122, ParticleInfo(1, -1, 0, 1, 0)), //1.81, 0.15, Lm1810zer -//Part_t(-53122,ParticleInfo( -1, 1, 0, 1, 0)),// 1.81, 0.15, Lm1810zrb -//Part_t(200111,ParticleInfo( 0, 0, 2, 0, 1)), //1.801, 0.21, pi1800plu -//Part_t(-200111,ParticleInfo( 0, 0, 2, 0, -1)),// 1.801, 0.21, pi1800min -//Part_t(200211, ParticleInfo(0, 0, 2, 0, 0)), //1.801, 0.21, pi1800zer -//Part_t(43122, ParticleInfo(1, -1, 0, 1, 0)), //1.8, 0.3, Lm1800zer -//Part_t(-43122, ParticleInfo(-1, 1, 0, 1, 0)),// 1.8, 0.3, Lm1800zrb -//Part_t(317, ParticleInfo(0, 1, 1, 6, 0)), //1.776, 0.159, Ka1780zer -//Part_t(327, ParticleInfo(0, -1, 1, 6, 0)), //1.776, 0.159, Ka1780zrb -//Part_t(-317, ParticleInfo(0, 1, 1, 6, 1)), //1.776, 0.159, Ka1780plu -//Part_t(-327, ParticleInfo(0, -1, 1, 6, -1)),// 1.776, 0.159, Ka1780min -//Part_t(3116, ParticleInfo(1, -1, 2, 5, 1)), //1.775, 0.12, Sg1775plu -//Part_t(3216, ParticleInfo(1, -1, 2, 5, -1)),// 1.775, 0.12, Sg1775min -//Part_t(3226, ParticleInfo(1, -1, 2, 5, 0)), //1.775, 0.12, Sg1775zer -//Part_t(-3116, ParticleInfo(-1, 1, 2, 5, -1)),// 1.775, 0.12, Sg1775plb -//Part_t(-3216, ParticleInfo(-1, 1, 2, 5, 1)), //1.775, 0.12, Sg1775mnb -//Part_t(-3226, ParticleInfo(-1, 1, 2, 5, 0)), //1.775, 0.12, Sg1775zrb -//Part_t(8116, ParticleInfo(1, -1, 2, 1, 1)), //1.75, 0.09, Sg1750plu -//Part_t(8117, ParticleInfo(1, -1, 2, 1, 0)), //1.75, 0.09, Sg1750zer -//Part_t(8118, ParticleInfo(1, -1, 2, 1, -1)), //1.75, 0.09, Sg1750min -//Part_t(-8116, ParticleInfo(-1, 1, 2, 1, -1)), //1.75, 0.09, Sg1750plb -//Part_t(-8117, ParticleInfo(-1, 1, 2, 1, 0)), //1.75, 0.09, Sg1750zrb -//Part_t(-8118, ParticleInfo(-1, 1, 2, 1, 1)), //1.75, 0.09, Sg1750mnb -//Part_t(10315, ParticleInfo(0, 1, 1, 4, 0)), //1.773, 0.186, Ka1770zer -//Part_t(10325, ParticleInfo(0, -1, 1, 4, 0)),// 1.773, 0.186, Ka1770zrb -//Part_t(-10315,ParticleInfo( 0, 1, 1, 4, 1)), //1.773, 0.186, Ka1770plu -//Part_t(-10325,ParticleInfo( 0, -1, 1, 4, -1)),// 1.773, 0.186, Ka1770min -//Part_t(31214, ParticleInfo(1, 0, 1, 3, 1)), //1.72, 0.15, Ns1720plu -//Part_t(32124, ParticleInfo(1, 0, 1, 3, 0)), //1.72, 0.15, Ns1720zer -//Part_t(-31214,ParticleInfo( -1, 0, 1, 3, -1)), //1.72, 0.15, Ns1720plb -//Part_t(-32124,ParticleInfo( -1, 0, 1, 3, 0)), //1.72, 0.15, Ns1720zrb -//Part_t(30313, ParticleInfo(0, 1, 1, 2, 0)), //1.717, 0.322, Ka1680zer -//Part_t(30323, ParticleInfo(0, -1, 1, 2, 0)), //1.717, 0.322, Ka1680zrb -//Part_t(-30313,ParticleInfo( 0, 1, 1, 2, 1)), //1.717, 0.322, Ka1680plu -//Part_t(-30323,ParticleInfo( 0, -1, 1, 2, -1)),// 1.717, 0.322, Ka1680min -//Part_t(42112, ParticleInfo(1, 0, 1, 1, 1)), //1.71, 0.1, Ns1710plu -//Part_t(42212, ParticleInfo(1, 0, 1, 1, 0)), //1.71, 0.1, Ns1710zer -//Part_t(-42112,ParticleInfo( -1, 0, 1, 1, -1)),// 1.71, 0.1, Ns1710plb -//Part_t(-42212,ParticleInfo( -1, 0, 1, 1, 0)), //1.71, 0.1, Ns1710zrb -//Part_t(21214, ParticleInfo(1, 0, 1, 3, 1)), //1.7, 0.1, Ns1700plu -//Part_t(22124, ParticleInfo(1, 0, 1, 3, 0)),// 1.7, 0.1, Ns1700zer -//Part_t(-21214,ParticleInfo( -1, 0, 1, 3, -1)),// 1.7, 0.1, Ns1700plb -//Part_t(-22124,ParticleInfo( -1, 0, 1, 3, 0)),// 1.7, 0.1, Ns1700zrb -//Part_t(30213, ParticleInfo(0, 0, 2, 2, 1)), //1.7, 0.24, rh1700plu -//Part_t(-30213,ParticleInfo( 0, 0, 2, 2, -1)), //1.7, 0.24, rh1700min -//Part_t(30113, ParticleInfo(0, 0, 2, 2, 0)), //1.7, 0.24, rh1700zer -//Part_t(11114, ParticleInfo(1, 0, 3, 3, 2)), //1.7, 0.3, Dl1700plp -//Part_t(12114, ParticleInfo(1, 0, 3, 3, 1)), //1.7, 0.3, Dl1700plu -//Part_t(12214, ParticleInfo(1, 0, 3, 3, 0)), //1.7, 0.3, Dl1700zer -//Part_t(12224, ParticleInfo(1, 0, 3, 3, -1)), //1.7, 0.3, Dl1700min -//Part_t(-11114,ParticleInfo( -1, 0, 3, 3, -2)), //1.7, 0.3, Dl1700ppb -//Part_t(-12114,ParticleInfo( -1, 0, 3, 3, -1)), //1.7, 0.3, Dl1700plb -//Part_t(-12214,ParticleInfo( -1, 0, 3, 3, 0)), //1.7, 0.3, Dl1700zrb -//Part_t(-12224,ParticleInfo( -1, 0, 3, 3, 1)), //1.7, 0.3, Dl1700mnb -//Part_t(217, ParticleInfo(0, 0, 2, 6, 1)), //1.691, 0.161, rh1690plu -//Part_t(-217, ParticleInfo(0, 0, 2, 6, -1)), //1.691, 0.161, rh1690min -//Part_t(117, ParticleInfo(0, 0, 2, 0, 0)), //1.691, 0.161, rh1690zer -//Part_t(13124, ParticleInfo(1, -1, 0, 3, 0)), //1.69, 0.06, Lm1690zer -//Part_t(-13124,ParticleInfo( -1, 1, 0, 3, 0)), //1.69, 0.06, Lm1690zrb -//Part_t(-67719,ParticleInfo(1, -2, 1, 3, -1)), //1.69, 0.029, Xi1690min -//Part_t(67719, ParticleInfo(-1, 2, 1, 3, 1)), //1.69, 0.029, Xi1690mnb -//Part_t(67718, ParticleInfo(1, -2, 1, 3, 0)), //1.69, 0.029, Xi1690zer -//Part_t(-67718,ParticleInfo(-1, 2, 1, 3, 0)), //1.69, 0.029, Xi1690zrb -//Part_t(12116, ParticleInfo(1, 0, 1, 5, 1)), //1.68, 0.13, Ns1680plu -//Part_t(12216, ParticleInfo(1, 0, 1, 5, 0)), //1.68, 0.13, Ns1680zer -//Part_t(-12116,ParticleInfo( -1, 0, 1, 5, -1)),// 1.68, 0.13, Ns1680plb -//Part_t(-12216,ParticleInfo( -1, 0, 1, 5, 0)), //1.68, 0.13, Ns1680zrb -//Part_t(100333,ParticleInfo( 0, 0, 0, 2, 0)), //1.68, 0.15, ph1680zer -//Part_t(2116, ParticleInfo(1, 0, 1, 5, 1)), //1.675, 0.15, Ns1675plu -//Part_t(2216, ParticleInfo(1, 0, 1, 5, 0)), //1.675, 0.15, Ns1675zer -//Part_t(-2116, ParticleInfo(-1, 0, 1, 5, -1)), //1.675, 0.15, Ns1675plb -//Part_t(-2216, ParticleInfo(-1, 0, 1, 5, 0)), //1.675, 0.15, Ns1675zrb -//Part_t(10215, ParticleInfo(0, 0, 2, 4, 1)), //1.67, 0.259, pi1670plu -//Part_t(-10215,ParticleInfo( 0, 0, 2, 4, -1)), //1.67, 0.259, pi1670min -//Part_t(10115, ParticleInfo(0, 0, 2, 4, 0)), //1.67, 0.259, pi1670zer -//Part_t(33122, ParticleInfo(1, -1, 0, 1, 0)), //1.67, 0.035, Lm1670zer -//Part_t(-33122,ParticleInfo( -1, 1, 0, 1, 0)), //1.67, 0.035, Lm1670zrb -//Part_t(13114, ParticleInfo(1, -1, 2, 3, 1)), //1.67, 0.06, Sg1670plu -//Part_t(13214, ParticleInfo(1, -1, 2, 3, -1)),// 1.67, 0.06, Sg1670min -//Part_t(13224, ParticleInfo(1, -1, 2, 3, 0)), //1.67, 0.06, Sg1670zer -//Part_t(-13114,ParticleInfo( -1, 1, 2, 3, -1)), //1.67, 0.06, Sg1670plb -//Part_t(-13214,ParticleInfo( -1, 1, 2, 3, 1)), //1.67, 0.06, Sg1670mnb -//Part_t(-13224,ParticleInfo( -1, 1, 2, 3, 0)), //1.67, 0.06, Sg1670zrb -//Part_t(227, ParticleInfo( 0, 0, 0, 6, 0)), //1.667, 0.168, om1670zer -//Part_t(13112, ParticleInfo(1, -1, 2, 1, 1)), //1.66, 0.1, Sg1660plu -//Part_t(13212, ParticleInfo(1, -1, 2, 1, -1)), //1.66, 0.1, Sg1660min -//Part_t(13222, ParticleInfo(1, -1, 2, 1, 0)), //1.66, 0.1, Sg1660zer -//Part_t(-13112,ParticleInfo( -1, 1, 2, 1, -1)),// 1.66, 0.1, Sg1660plb -//Part_t(-13212,ParticleInfo( -1, 1, 2, 1, 1)),// 1.66, 0.1, Sg1660mnb -//Part_t(-13222,ParticleInfo( -1, 1, 2, 1, 0)),// 1.66, 0.1, Sg1660zrb -//Part_t(32112, ParticleInfo(1, 0, 1, 1, 1)), //1.65, 0.15, Ns1650plu -//Part_t(32212, ParticleInfo(1, 0, 1, 1, 0)), //1.65, 0.15, Ns1650zer -//Part_t(-32112,ParticleInfo( -1, 0, 1, 1, -1)),// 1.65, 0.15, Ns1650plb -//Part_t(-32212,ParticleInfo( -1, 0, 1, 1, 0)),// 1.65, 0.15, Ns1650zrb -//Part_t(30223, ParticleInfo(0, 0, 0, 2, 0)), //1.649, 0.22, om1650zer -//Part_t(1112, ParticleInfo(1, 0, 3, 1, 2)), //1.62, 0.15, Dl1620plp -//Part_t(1212, ParticleInfo(1, 0, 3, 1, 1)), //1.62, 0.15, Dl1620plu -//Part_t(2122, ParticleInfo(1, 0, 3, 1, 0)), //1.62, 0.15, Dl1620zer -//Part_t(2222, ParticleInfo(1, 0, 3, 1, -1)), //1.62, 0.15, Dl1620min -//Part_t(-1112, ParticleInfo(-1, 0, 3, 1, -2)),// 1.62, 0.15, Dl1620ppb -//Part_t(-1212, ParticleInfo(-1, 0, 3, 1, -1)),// 1.62, 0.15, Dl1620plb -//Part_t(-2122, ParticleInfo(-1, 0, 3, 1, 0)), //1.62, 0.15, Dl1620zrb -//Part_t(-2222, ParticleInfo(-1, 0, 3, 1, 1)), //1.62, 0.15, Dl1620mnb -//Part_t(46653, ParticleInfo(1, -2, 1, 3, -1)), //1.62, 0.03, Xi1620min -//Part_t(-46653,ParticleInfo( -1, 2, 1, 3, 1)), //1.62, 0.03, Xi1620mnb -//Part_t(45553, ParticleInfo(1, -2, 1, 3, 0)), //1.62, 0.03, Xi1620zer -//Part_t(-45553,ParticleInfo( -1, 2, 1, 3, 0)),// 1.62, 0.03, Xi1620zrb -//Part_t(31114, ParticleInfo(1, 0, 3, 3, 2)), //1.6, 0.35, Dl1600plp -//Part_t(32114, ParticleInfo(1, 0, 3, 3, 1)), //1.6, 0.35, Dl1600plu -//Part_t(32214, ParticleInfo(1, 0, 3, 3, 0)), //1.6, 0.35, Dl1600zer -//Part_t(32224, ParticleInfo(1, 0, 3, 3, -1)), //1.6, 0.35, Dl1600min -//Part_t(-31114,ParticleInfo( -1, 0, 3, 3, -2)), //1.6, 0.35, Dl1600ppb -//Part_t(-32114,ParticleInfo( -1, 0, 3, 3, -1)), //1.6, 0.35, Dl1600plb -//Part_t(-32214,ParticleInfo( -1, 0, 3, 3, 0)), //1.6, 0.35, Dl1600zrb -//Part_t(-32224,ParticleInfo( -1, 0, 3, 3, 1)), //1.6, 0.35, Dl1600mnb -//Part_t(23122, ParticleInfo(1, -1, 0, 1, 0)), //1.6, 0.15, Lm1600zer -//Part_t(-23122,ParticleInfo( -1, 1, 0, 1, 0)),// 1.6, 0.15, Lm1600zrb -//Part_t(22212, ParticleInfo(1, 0, 1, 1, 1)), //1.535, 0.15, Ns1535plu -//Part_t(22122, ParticleInfo(1, 0, 1, 1, 0)), //1.535, 0.15, Ns1535zer -//Part_t(-22212,ParticleInfo( -1, 0, 1, 1, -1)), //1.535, 0.15, Ns1535plb -//Part_t(-22122,ParticleInfo( -1, 0, 1, 1, 0)), //1.535, 0.15, Ns1535zrb -//Part_t(2124, ParticleInfo(1, 0, 1, 3, 1)), //1.52, 0.12, Ns1520plu -//Part_t(1214, ParticleInfo(1, 0, 1, 3, 0)), //1.52, 0.12, Ns1520zer -//Part_t(-2124, ParticleInfo(-1, 0, 1, 3, -1)),// 1.52, 0.12, Ns1520plb -//Part_t(-1214, ParticleInfo(-1, 0, 1, 3, 0)), //1.52, 0.12, Ns1520zrb -//Part_t(3124, ParticleInfo(1, -1, 0, 3, 0)), //1.5195, 0.0156, Lm1520zer -//Part_t(-3124, ParticleInfo(-1, 1, 0, 3, 0)), //1.5195, 0.0156, Lm1520zrb -//Part_t(9000223,ParticleInfo( 0, 0, 0, 0, 0)), //1.507, 0.112, f01500zer -//Part_t(100213,ParticleInfo( 0, 0, 2, 2, 1)),// 1.465, 0.31, rh1450plu -//Part_t(-100213,ParticleInfo( 0, 0, 2, 2, -1)), //1.465, 0.31, rh1450min -//Part_t(100113, ParticleInfo(0, 0, 2, 2, 0)), //1.465, 0.31, rh1450zer -//Part_t(12212, ParticleInfo(1, 0, 1, 1, 1)), //1.44, 0.35, Ns1440plu -//Part_t(12112, ParticleInfo(1, 0, 1, 1, 0)), //1.44, 0.35, Ns1440zer -//Part_t(-12212,ParticleInfo( -1, 0, 1, 1, -1)),// 1.44, 0.35, Ns1440plb -//Part_t(-12112,ParticleInfo( -1, 0, 1, 1, 0)),// 1.44, 0.35, Ns1440zrb -//Part_t(100331,ParticleInfo( 0, 0, 0, 0, 0)), //1.435, 0.065, et1440zer -//Part_t(100223,ParticleInfo( 0, 0, 0, 2, 0)), //1.419, 0.174, om1420zer -//Part_t(100323,ParticleInfo( 0, 1, 1, 2, 1)), //1.414, 0.232, Ka1410plu -//Part_t(-100323,ParticleInfo( 0, -1, 1, 2, -1)), //1.414, 0.232, Ka1410min -//Part_t(100313, ParticleInfo(0, 1, 1, 0, 0)), //1.412, 0.294, Ka1412zer -//Part_t(-100313, ParticleInfo(0, -1, 1, 0, 0)), //1.412, 0.294, Ka1412zrb -//Part_t(13122, ParticleInfo(1, -1, 0, 1, 0)), //1.406, 0.05, Lm1405zer -//Part_t(-13122,ParticleInfo(-1, 1, 0, 1, 0)), //1.406, 0.05, Lm1405zrb -//Part_t(100211, ParticleInfo(0, 0, 2, 0, 1)),// 1.3, 0.4, pi1300plu -//Part_t(-100211, ParticleInfo(0, 0, 2, 0, -1)), //1.3, 0.4, pi1300min -//Part_t(100111, ParticleInfo(0, 0, 2, 0, 0)), //1.3, 0.4, pi1300zer -//Part_t(100221, ParticleInfo(0, 0, 0, 0, 0)), //1.297, 0.053, et1295zer -//Part_t(9000211, ParticleInfo(0, 0, 2, 0, 1)), //0.9848, 0.075, a00980plu -//Part_t(-9000211, ParticleInfo(0, 0, 2, 0, -1)),// 0.9848, 0.075, a00980min -//Part_t(9000111, ParticleInfo(0, 0, 2, 0, 0)),// 0.9848, 0.075, a00980zer -//Part_t(9010221, ParticleInfo(0, 0, 0, 0, 0)),// 0.98, 0.1, f00980zer -//Part_t(9000221, ParticleInfo(0, 0, 0, 0, 0)), //0.8, 0.8, f00600zer diff --git a/GeneratorInterface/Hydjet2Interface/src/RandArrayFunction.cc b/GeneratorInterface/Hydjet2Interface/src/RandArrayFunction.cc deleted file mode 100644 index 717833a7f1eb3..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/RandArrayFunction.cc +++ /dev/null @@ -1,113 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ -//This class is taken from the GEANT4 tool kit and changed!!!!! - -#include "GeneratorInterface/Hydjet2Interface/interface/RandArrayFunction.h" - -RandArrayFunction::RandArrayFunction(const double *aProbFunc, int theProbSize, int intType) - : fNBins(theProbSize), fInterpolationType(intType) { - PrepareTable(aProbFunc); -} - -RandArrayFunction::RandArrayFunction(int theProbSize, int intType) : fNBins(theProbSize), fInterpolationType(intType) {} - -void RandArrayFunction::PrepareTable(const double *aProbFunc) { - //Prepares fIntegralPdf. - if (fNBins < 1) { - edm::LogError("RandArrayFunction") << "RandArrayFunction constructed with no bins - will use flat distribution"; - UseFlatDistribution(); - return; - } - - fIntegralPdf.resize(fNBins + 1); - fIntegralPdf[0] = 0; - int ptn; - for (ptn = 0; ptn < fNBins; ++ptn) { - double weight = aProbFunc[ptn]; - if (weight < 0.) { - // We can't stomach negative bin contents, they invalidate the - // search algorithm when the distribution is fired. - edm::LogWarning("RandArrayFunction") << "RandArrayFunction constructed with negative-weight bin " << ptn - << " == " << weight << " -- will substitute 0 weight"; - weight = 0.; - } - fIntegralPdf[ptn + 1] = fIntegralPdf[ptn] + weight; - } - - if (fIntegralPdf[fNBins] <= 0.) { - edm::LogWarning("RandArrayFunction") - << "RandArrayFunction constructed with nothing in bins - will use flat distribution"; - UseFlatDistribution(); - return; - } - - for (ptn = 0; ptn < fNBins + 1; ++ptn) - fIntegralPdf[ptn] /= fIntegralPdf[fNBins]; - - // And another useful variable is ... - fOneOverNbins = 1.0 / fNBins; - // One last chore: - if (fInterpolationType && fInterpolationType != 1) { - edm::LogInfo("RandArrayFunction") << "RandArrayFunction does not recognize fInterpolationType " - << fInterpolationType << " Will use type 0 (continuous linear interpolation)"; - fInterpolationType = 0; - } -} - -void RandArrayFunction::UseFlatDistribution() { - //Called only by PrepareTable in case of user error. - fNBins = 1; - fIntegralPdf.resize(2); - fIntegralPdf[0] = 0; - fIntegralPdf[1] = 1; - fOneOverNbins = 1.0; -} - -double RandArrayFunction::MapRandom(double rand) const { - // Private method to take the random (however it is created) and map it - // according to the distribution. - - int nBelow = 0; // largest k such that I[k] is known to be <= rand - int nAbove = fNBins; // largest k such that I[k] is known to be > rand - int middle; - - while (nAbove > nBelow + 1) { - middle = (nAbove + nBelow + 1) >> 1; - rand >= fIntegralPdf[middle] ? nBelow = middle : nAbove = middle; - } // after this loop, nAbove is always nBelow+1 and they straddle rad: - - /*assert ( nAbove = nBelow+1 ); - assert ( fIntegralPdf[nBelow] <= rand ); - assert ( fIntegralPdf[nAbove] >= rand );*/ - // If a defective engine produces rand=1, that will - // still give sensible results so we relax the > rand assertion - - if (fInterpolationType == 1) { - return nBelow * fOneOverNbins; - } else { - double binMeasure = fIntegralPdf[nAbove] - fIntegralPdf[nBelow]; - // binMeasure is always aProbFunc[nBelow], - // but we don't have aProbFunc any more so we subtract. - - if (!binMeasure) { - // rand lies right in a bin of measure 0. Simply return the center - // of the range of that bin. (Any value between k/N and (k+1)/N is - // equally good, in this rare case.) - return (nBelow + .5) * fOneOverNbins; - } - - double binFraction = (rand - fIntegralPdf[nBelow]) / binMeasure; - - return (nBelow + binFraction) * fOneOverNbins; - } -} - -void RandArrayFunction::FireArray(int size, double *vect) const { - for (int i = 0; i < size; ++i) - vect[i] = Fire(); -} diff --git a/GeneratorInterface/Hydjet2Interface/src/StrangeDensity.cc b/GeneratorInterface/Hydjet2Interface/src/StrangeDensity.cc deleted file mode 100644 index 834d5c45df1b1..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/StrangeDensity.cc +++ /dev/null @@ -1,45 +0,0 @@ - -#include "GeneratorInterface/Hydjet2Interface/interface/StrangeDensity.h" - -NAStrangeDensity::NAStrangeDensity() { - fTemperature = 0. * GeV; - fBaryonPotential = 0. * GeV; - fStrangePotential = 0. * GeV; - fNMax = 5; -} -// compute hadron system strangeness density -double NAStrangeDensity::StrangenessDensity(DatabasePDG* database) { - double meanStrangenessDensity = 0.; - for (int particleIndex = 0; particleIndex < database->GetNParticles(); particleIndex++) { - ParticlePDG* particle = database->GetPDGParticleByIndex(particleIndex); - double particleDensity = ParticleNumberDensity(particle); - meanStrangenessDensity += particleDensity * particle->GetStrangeness(); - } - return meanStrangenessDensity; -} - -// compute hadron number density -double NAStrangeDensity::ParticleNumberDensity(ParticlePDG* pDef) { - double particleMass = pDef->GetMass(); - int particleStrangeness = int(pDef->GetStrangeness()); - double particleBaryon = pDef->GetBaryonNumber(); - //compute chemical potential - double particleChemPotential = fBaryonPotential * particleBaryon + fStrangePotential * particleStrangeness; - //compute degeneracy factor - double particleDegFactor = 2 * pDef->GetSpin() + 1.; // IA: In ParticlePDG() GetSpin() returns spin not 2*spin !! - double d = 1.; //for fermions - if (int(2 * pDef->GetSpin()) % 2 == 0) //it gives 0 for Spin = 0,2,4,.. and it gives 1 for Spin = 1,3,7, - d = -1; //for bosons - - double prefactor; - double postfactor; - prefactor = - (particleDegFactor * particleMass * particleMass * fTemperature / hbarc / hbarc / hbarc) / (2. * N_PI * N_PI); - postfactor = 0.; - - for (int n = 1; n <= fNMax; n++) { - postfactor += pow(-d, n + 1) / (n)*exp(n * particleChemPotential / fTemperature) * - HankelKn(2, n * particleMass / fTemperature); - } - return prefactor * postfactor; -} diff --git a/GeneratorInterface/Hydjet2Interface/src/StrangePotential.cc b/GeneratorInterface/Hydjet2Interface/src/StrangePotential.cc deleted file mode 100644 index 31fbbac52f75f..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/StrangePotential.cc +++ /dev/null @@ -1,51 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2006 - -*/ - -#include "GeneratorInterface/Hydjet2Interface/interface/StrangePotential.h" - -double NAStrangePotential::CalculateStrangePotential() { - double minFunction = this->operator()(fMinStrangePotential); - double maxFunction = this->operator()(fMaxStrangePotential); - - int iter = 0; - while (minFunction < 0.0 && iter++ < fNIteration) { - fMinStrangePotential -= 0.5 * fMinStrangePotential; - minFunction = this->operator()(fMinStrangePotential); - } - - iter = 0; - while (minFunction * maxFunction > 0.0 && iter++ < fNIteration) { - fMaxStrangePotential += 1.5 * Abs(fMaxStrangePotential - fMinStrangePotential); - maxFunction = this->operator()(fMaxStrangePotential); - } - - if (minFunction * maxFunction > 0.0) { - edm::LogError("StrangePotential") << "CalculateStrangePotential: minFunction*maxFunction is positive!"; - return 0.; - } - - NAEquationSolver* theSolver = - new NAEquationSolver(fNSolverIteration, fTolerance); - - theSolver->SetIntervalLimits(fMinStrangePotential, fMaxStrangePotential); - - if (!theSolver->Brent(*this)) - edm::LogError("StrangePotential") << "CalculateStrangePotential: the root is not found!"; - - double strangePotential = theSolver->GetRoot(); - delete theSolver; - return strangePotential; -} - -//calculate hadron system strange density -double NAStrangePotential::CalculateStrangeDensity(const double strangePotential) { - fGc.SetStrangePotential(strangePotential); - fGc.SetTemperature(fTemperature); - fGc.SetBaryonPotential(fBaryonPotential); - return fGc.StrangenessDensity(fDatabase); -} diff --git a/GeneratorInterface/Hydjet2Interface/src/UKUtility.cc b/GeneratorInterface/Hydjet2Interface/src/UKUtility.cc deleted file mode 100644 index e9e9de85711f6..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/UKUtility.cc +++ /dev/null @@ -1,55 +0,0 @@ -/* - -Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna -amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru -November. 2, 2005 - -*/ - -#include "TLorentzVector.h" -#include "TVector3.h" - -#include "GeneratorInterface/Hydjet2Interface/interface/Particle.h" -#include "GeneratorInterface/Hydjet2Interface/interface/UKUtility.h" - -#include "CLHEP/Random/RandomEngine.h" -#include "CLHEP/Random/RandFlat.h" - -extern CLHEP::HepRandomEngine *hjRandomEngine; - -const double GeV = 1.; -const double fermi = 1.; -const double hbarc = 0.197 * GeV * fermi; -const double w = 1.0 / 0.1973; -const double hbarc_squared = hbarc * hbarc; - -void IsotropicR3(double r, double *x, double *y, double *z) { - double pZ = 1. - 2. * (CLHEP::RandFlat::shoot(hjRandomEngine)); - double st = TMath::Sqrt(1. - pZ * pZ) * r; - double phi = 2. * TMath::Pi() * (CLHEP::RandFlat::shoot(hjRandomEngine)); - - *x = st * cos(phi); - *y = st * sin(phi); - *z = pZ * r; -} - -void IsotropicR3(double r, TVector3 &pos) { - double pZ = 1. - 2. * (CLHEP::RandFlat::shoot(hjRandomEngine)); - double st = TMath::Sqrt(1. - pZ * pZ) * r; - double phi = 2. * TMath::Pi() * (CLHEP::RandFlat::shoot(hjRandomEngine)); - pos.SetX(st * TMath::Cos(phi)); - pos.SetY(st * TMath::Sin(phi)); - pos.SetZ(pZ * r); -} - -void MomAntiMom(TLorentzVector &mom, double mass, TLorentzVector &antiMom, double antiMass, double initialMass) { - double r = initialMass * initialMass - mass * mass - antiMass * antiMass; - if (r * r - 4 * mass * mass * antiMass * antiMass < 0.) - throw "MomAntiMom"; - - double pAbs = .5 * TMath::Sqrt(r * r - 4 * mass * mass * antiMass * antiMass) / initialMass; - TVector3 mom3; - IsotropicR3(pAbs, mom3); - mom.SetVectM(mom3, mass); - antiMom.SetVectM(-mom3, antiMass); -} diff --git a/GeneratorInterface/Hydjet2Interface/src/hepevt.inc b/GeneratorInterface/Hydjet2Interface/src/hepevt.inc index a9a3c367c51de..dffca9a73e3d5 100644 --- a/GeneratorInterface/Hydjet2Interface/src/hepevt.inc +++ b/GeneratorInterface/Hydjet2Interface/src/hepevt.inc @@ -1,6 +1,2 @@ -C...HEPEVT commonblock. - PARAMETER (NMXHEP=4000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ +C... HEPEVT commonblock.PARAMETER(NMXHEP = 4000) COMMON / HEPEVT / NEVHEP, NHEP, ISTHEP(NMXHEP), IDHEP(NMXHEP), + &JMOHEP(2, NMXHEP), JDAHEP(2, NMXHEP), PHEP(5, NMXHEP), VHEP(4, NMXHEP) DOUBLE PRECISION PHEP, VHEP SAVE / HEPEVT / diff --git a/GeneratorInterface/Hydjet2Interface/src/progs_fortran.f b/GeneratorInterface/Hydjet2Interface/src/progs_fortran.f deleted file mode 100644 index fef94cc306b81..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/src/progs_fortran.f +++ /dev/null @@ -1,1603 +0,0 @@ -c******************************************* - - SUBROUTINE myini - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision nbcol,npart,npart0 - external pydata - double precision npar0,nbco0 - common /hyjets/ nhj,nhp,khj(150000,5),phj(150000,5),vhj(150000,5) - common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd - common /hyflow/ ytfl,ylfl,Tf,fpart - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - common /pydat1/ mstu(200),paru(200),mstj(200),parj(200) - common /pysubs/ msel,mselpd,msub(500),kfin(2,-40:40),ckin(200) - common /pypars/ mstp(200),parp(200),msti(200),pari(200) - common /pyqpar/ T0,tau0,nf,ienglu,ianglu - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hypyin/ ene,rzta,rnta,bfix,ifb,nh - - COMMON/PYDATR/MRPY(6),RRPY(100) - common/SERVICE/iseed_fromC,iPythDecay,charm - - - common /hypart/ppart(20,150000),bmin,bmax,njp - save /hyjets/,/hyflow/,/hyjpar/,/hyfpar/,/pyqpar/, - > /pysubs/,/pypars/,/pydat1/ - -* ----------- INITIALIZATION OF RANDOM GENERATOR - MRPY(1)=iseed_fromC -c write(*,*)'--initialization of high-pt part-- : ' -c write(*,*)'evnt generator phase ',iseed_fromC - -* initialize HYINIT with the input parameters -c write(*,*)' AW= ', AW,' energy= ', ene, ' ptmin= ',ptmin -c write(*,*)' bminh= ',bminh,' bmaxh= ', bmaxh -c write(*,*)' ifb= ', ifb, ' bfix= ', bfix -c write(*,*)' ishad= ',ishad, ' nhsel= ',nhsel -c write(*,*)' ienglu= ',ienglu, ' ianglu= ',ianglu -c write(*,*)' T0= ',T0,' tau0= ',tau0,' nf= ', nf - -* set input PYTHIA parameters from SERVICE common: -c PARP(2)=5.d0 ! minimum c.m.s. energy of pp collision -c MSTJ(22)=2 ! particle decays if lifetime < parj(71) -c PARJ(71)=10. ! ctau=10 mm - CKIN(3)=ptmin ! minimum pt in initial hard scattering, GeV - - call hyinit ! ml (ene,AW,ifb,bmin,bmax,bfix1,nh) - - end -****************end myini*************************************************************** - - - -********************************* HYINIT *************************** - SUBROUTINE HYINIT - -*ml-- (energy,A,ifb1,bmin,bmax,bfix1,nh1) -* PYTHIA inizialization, calculation of total and hard cross sections and -* # of participants and binary sub-collisions at "reference point" (Pb,b=0), -* tabulation of nuclear thickness function and nuclear overlap function, -* test of input parametes - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision numpar,npar0,nbco0 - external numpar,rhoaa,hfunc3 - common /pyint7/ sigt(0:6,0:6,0:5) - common /pypars/ mstp(200),parp(200),msti(200),pari(200) - common /pysubs/ msel,mselpd,msub(500),kfin(2,-40:40),ckin(200) - common /pyjets/ n,npad,k(4000,5),p(4000,5),v(4000,5) - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hypyin/ ene,rzta,rnta,bfix,ifb,nh - common /hyflow/ ytfl,ylfl,Tf,fpart - common /hygeom/ BC - common /hythic/ BAB(110),TAB(110),TAAB(110) - common /hynup1/ bp,x - common/SERVICE/iseed_fromC,iPythDecay,charm - -* - - save /pyint7/,/pypars/,/pysubs/,/hyjpar/,/hyipar/,/hypyin/, - > /hyflow/,/hygeom/,/hythic/,/pyjets/ - -* start HYDJET initialization - init=1 - ipr=1 - -* set beam paramters -c-ml ene=energy ! c.m.s. energy per nucleon -c-ml AW=A ! atomic weight - - - RA=1.15d0*AW**0.333333d0 ! nuclear radius - rzta=1.d0/(1.98d0+0.015d0*AW**0.666667d0) ! fraction of protons in nucleus - rnta=1.d0-rzta ! fraction of neutrons in nucleus -c-ml ifb=ifb1 ! centrality flag -c-ml bfix=bfix1 ! fixed impact parameter -c-ml nh=nh1 ! mean soft mult. in central PbPb -c-ml ptmin=ckin(3) ! minimum pt of hard scattering - -* Pythia inizialization - call pyinit('cms','p','p',ene) - -c if(nhsel.ne.0) then - - mstp(111)=0 - -* no printout of Pythia initialization information hereinafter - mstp(122)=0 - -* initialize HYINIT with the input parameters - write(*,*)'in hyinit AW= ', AW,' energy= ', ene, ' ptmin= ',ptmin - write(*,*)'bminh= ',bminh,' bmaxh= ', bmaxh - write(*,*)'ifb= ', ifb, ' bfix= ', bfix - -* Pythia pre-run to calculate charm production in pp events - charm=0.d0 - ckin(3)=0.d0 - ckin(4)=ptmin - call pyinit('cms','p','p',ene) - do i=1,10000 - call pyevnt - do ip=9,n - if(abs(k(ip,2)).eq.4) charm=charm+1.d0 - end do - end do - ckin(3)=ptmin - ckin(4)=-1.d0 - charm=0.0001d0*charm*pari(1)/(sigt(0,0,0)-sigt(0,0,1)) -c write(6,*) 'Charm',charm - -* Pythia inizialization for pp collisions - call pyinit('cms','p','p',ene) -* Pythia test pp event run - do i=1,1000 - call pyevnt - end do -* hard scattering pp cross section - sjpp=pari(1) - -* Pythia inizialization for pn collisions - call pyinit('cms','p','n',ene) -* Pythia test pn event run - do i=1,1000 - call pyevnt - end do -* hard scattering pn cross section - sjpn=pari(1) - -* Pythia inizialization for nn collisions - call pyinit('cms','n','n',ene) -* Pythia test nn event run - do i=1,1000 - call pyevnt - end do -* hard scattering nn cross section - sjnn=pari(1) - - sigjet=rzta*rzta*sjpp+rnta*rnta*sjnn+2.d0*rzta*rnta*sjpn - -c end if - -* total inelastic cross section - if(sigin.lt.10.d0.or.sigin.gt.200.d0) - > sigin=sigt(0,0,0)-sigt(0,0,1) - -* # of nucelons-participants and NN sub-collisions at "reference point" (Pb,b=0) - Apb=207.d0 - Rpb=1.15d0*Apb**0.333333d0 - EPS=0.005d0 - Z2=4.d0*Rpb - Z1=-1.d0*Z2 - H=0.01d0*(Z2-Z1) - do ib=1,110 - BC=3.d0*Rpb*(ib-1)/109.d0 - CALL SIMPA(Z1,Z2,H,EPS,1.d-8,rhoaa,Z,RES,AIH,AIABS) - BAB(ib)=BC - TAB(ib)=Apb*RES - end do - Z1=0.d0 - Z2=6.28318d0 - H=0.01d0*(Z2-Z1) - bp=0.d0 - CALL SIMPA(Z1,Z2,H,EPS,1.d-8,HFUNC3,X,TAAPB0,AIH,AIABS) - - npar0=numpar(0.d0) ! Npart(Pb,b=0) - nbco0=0.1d0*sigin*TAAPB0 ! Nsub(Pb,b=0) - - init=0 - -* creation of arrays for tabulation of beam/target nuclear thickness function - Z2=4.d0*RA - Z1=-1.d0*Z2 - H=0.01d0*(Z2-Z1) - do ib=1,110 - BC=3.d0*RA*(ib-1)/109.d0 - CALL SIMPA(Z1,Z2,H,EPS,1.d-8,rhoaa,Z,RES,AIH,AIABS) - BAB(ib)=BC - TAB(ib)=AW*RES - end do - -* creation of arrays for tabulation of nuclear overlap function - Z1=0.d0 - Z2=6.28318d0 - H=0.01d0*(Z2-Z1) - do ib=1,110 - bp=BAB(ib) - CALL SIMPA(Z1,Z2,H,EPS,1.d-8,HFUNC3,X,RES,AIH,AIABS) - TAAB(ib)=RES - end do - - bmin=bminh - bmax=bmaxh - -c write(*,*)'in HYINIT bmin', bmin,'bmax', bmax - - -* test of centrality selection - if(ifb.eq.0) then - if(bfix.lt.0.d0) then - write(6,*) 'Impact parameter less than zero!' - bfix=0.d0 - end if - if (bfix.gt.3.d0) then - write(6,*) 'Impact parameter larger than three nuclear radius!' - bfix=3.d0 - end if - else - if(bmin.lt.0.d0) then - write(6,*) 'Impact parameter less than zero!' - bmin=0.d0 - end if - if(bmax.gt.3.d0) then - write(6,*) 'Impact parameter larger than three nuclear radius!' - bmax=3.d0 - end if - end if - -* test of flow parameter selection - if (Tf.lt.0.08d0.or.Tf.gt.0.2d0) Tf=0.1d0 ! freeze-out temperature - if (ylfl.lt.0.01d0.or.ylfl.gt.7.d0) ylfl=4.d0 ! longitudinal flow rapidity - if (ytfl.lt.0.01d0.or.ytfl.gt.3.d0) ytfl=1.5d0 ! transverse flow rapidity - if (fpart.le.0.d0.or.fpart.gt.1.d0) fpart=1.d0 ! fraction of soft multiplicity - ! proport. to # of participants -* test of 'nhsel' selection - if(nhsel.ne.1.and.nhsel.ne.2.and.nhsel.ne.3.and.nhsel.ne.4) - > nhsel=0 - - return - end -****************************** END HYINIT *************************** - SUBROUTINE MYDELTA - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common/SERVICEEV/psiv3,delta,KC,ipdg - COMMON /PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - integer KC, PYCOMP - real delta, psiv3 - KC=PYCOMP(ipdg) - delta=PMAS(int(KC),3) -c write(*,*)" ipdg ", ipdg, " KC ",KC," delta ",delta - return - end - - -********************************* HYEVNT **************************** - SUBROUTINE HYEVNT -* generation of single HYDJET event (soft+hard parts) at given parameters - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision numpar,npar0,nbco0,npart,nbcol,npart0 - external hsin,gauss,hftaa,numpar,hyhard,hipsear,pyr,pymass,PYCOMP - common /hyjets/ nhj,nhp,khj(150000,5),phj(150000,5),vhj(150000,5) - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hypyin/ ene,rzta,rnta,bfix,ifb,nh - common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd - common /hyflow/ ytfl,ylfl,Tf,fpart - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet -c-ml - common /hypart/ppart(20,150000),bmin,bmax,njp - COMMON /PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - - save /hyjets/,/hyipar/,/hyfpar/,/hyflow/,/hyjpar/,/hypyin/ - - -* reset lujets and hyjets arrays before event generation -c write(*,*)'in hyevnt 0' - - - nhj=0 - do ncl=1,150000 - do j=1,5 - phj(ncl,j)=0.d0 - vhj(ncl,j)=0.d0 - khj(ncl,j)=0 - enddo - end do -* - pi=3.14159d0 - -* generate impact parameter of A-A collision - if(ifb.eq.0) then - b1=bfix*RA - bgen=bfix - else - call hipsear(fmax1,xmin1) - fmax=fmax1 - xmin=xmin1 - 3 bb1=xmin*pyr(0)+bminh*RA - ff1=fmax*pyr(0) - fb=hsin(bb1) - if(ff1.gt.fb) goto 3 - b1=bb1 - bgen=bb1/RA - end if - -c write(*,*)'in hyevnt RA b1 bgen sigin',RA,bminh,bgen,sigin - -* calculate # of nucelons-participants and binary NN sub-collisions - npart=numpar(b1) ! Npart(b) - npart0=numpar(0.d0) ! Npart(b) - -c write(*,*)'in hyevnt npart',npart - nbcol=0.1d0*sigin*hftaa(b1) ! Nsub(b) -c write(*,*)'in hyevnt nbcol',nbcol -* generate hard parton-parton scatterings (Q>ptmin) 'njet' times - njet=0 - if(nhsel.ne.0) then - pjet=sigjet/sigin -c write(*,*)'in hyevnt pjet',pjet - do i=1,int(nbcol) - if(pyr(0).lt.pjet) njet=njet+1 - end do -c write(*,*)'before hyhard' - call hyhard - end if - - npyt=nhj - -c write(*,*)'in hyevnt pjet njet=', pjet,njet -c-ml -* fill array 'ppart' - - do ih=1,nhj - if(ih.le.150000)then - ppart(1,ih)= khj(ih,1) ! status code - ppart(2,ih)= khj(ih,2) ! pdg - ppart(3,ih)=phj(ih,1) ! px - ppart(4,ih)=phj(ih,2) ! py - ppart(5,ih)=phj(ih,3) ! pz - ppart(6,ih)=phj(ih,4) ! E - ppart(7,ih)= vhj(ih,1) !x - ppart(8,ih)= vhj(ih,2) !y - ppart(9,ih)= vhj(ih,3) !z - ppart(10,ih)= vhj(ih,4) !t -* mother information - ppart(11,ih)= khj(ih,3) ! line number of parent particle - ppart(12,ih)= khj(ih,4) ! line number of first daughter - ppart(13,ih)= khj(ih,5) ! line number of last daughter - -c write(*,*)'progs: pdg ', ppart(2,ih), 'mother line',ppart(11,ih) -c write(*,*)'progs: motherInt ', khj(ih,3) -c write(*,*)'progs: motherDouble ', ppart(11,ih) -c write(*,*)'progs: d1Int ', khj(ih,4) -c write(*,*)'progs: d1Double ', ppart(12,ih) -c write(*,*)'progs: d2Int ', khj(ih,5) -c write(*,*)'progs: d2Double ', ppart(13,ih) - endif - end do - - njp=nhj ! fill number of jet particles for InitialStateBjorken -c-- - - return - end -****************************** END HYEVNT ************************** -********************************* HYHARD *************************** - SUBROUTINE HYHARD -* generate 'njet' number of hard parton-parton scatterings with PYTHIA - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0,npart,nbcol,npart0 - INTEGER PYK,PYCOMP - CHARACTER beam*2,targ*2 - external pydata - external pyp,pyr,pyk,pyquen,shad1,gauss - common /pyjets/ n,npad,k(4000,5),p(4000,5),v(4000,5) - common /hyjets/ nhj,nhp,khj(150000,5),phj(150000,5),vhj(150000,5) - COMMON /PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON /PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON /PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON /PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - common /pypars/ mstp(200),parp(200),msti(200),pari(200) - common /parimp/ b1, psib1, r0, rb1, rb2, noquen - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd - common /hypyin/ ene,rzta,rnta,bfix,ifb,nh - save /pyjets/,/pypars/,/pydat1/,/pydat2/,/pydat3/,/pysubs/, - + /hyjets/,/parimp/,/hyjpar/,/hyipar/,/hyfpar/,/hypyin/ - -* generate 'njet' PYTHIA events and fill arrays for partons and hadrons - nshad=0 - noquen=0 - if(nhsel.eq.1.or.nhsel.eq.3) noquen=1 - if(njet.ge.1) then - mdcy(pycomp(111),1)=0 ! no pi0 decay - mdcy(pycomp(310),1)=0 ! no K_S0 decay - - ifbp=0 ! fix impact parameter - bfixp=RA*bgen - Ap=AW ! atomic weight - - do ihard=1,njet - mstp(111)=0 - -* generate type of NN sub-collision (pp, pn or nn) - rand1=pyr(0) - if(rand1.lt.rzta) then - beam='p' - else - beam='n' - end if - rand2=pyr(0) - if(rand2.lt.rzta) then - targ='p' - else - targ='n' - end if - call pyinit('cms',beam,targ,ene) -c mstj(41)=0 ! vacuum showering off - call pyevnt ! generate hard scattering - -* PYQUEN: quenched jets if noquen=0 or non-quenched jets if noquen=1 and ishad=1 - if(ishad.eq.1.or.nhsel.eq.2.or.nhsel.eq.4) - > call pyquen(Ap,ifbp,bfixp) - -c-ml coordinate info if we need of it - Q=pari(21) - x=r0*cos(psib1) !fm - y=r0*sin(psib1) !fm2 - tau=1./Q ! 1/GeV - tau=tau*0.197 !fm/c - rm=0.0d0 - sig=1.0d0 - etaLj=gauss(rm,sig)!fm - z=tau*sinh(etaLj) - t=tau*cosh(etaLj) -c write(*,*)'x y z t', x,y,z,t,etaLj - -* treatment of "nuclear shadowing" (for Pb, Au, Pd or Ca beams only) - if(ishad.eq.1) then - kfh1=abs(k(3,2)) - kfh2=abs(k(4,2)) - xh1=pari(33) - xh2=pari(34) - Q2=pari(22) - shad=shad1(kfh1,xh1,Q2,rb1)*shad1(kfh2,xh2,Q2,rb2) - if(pyr(0).gt.shad) then - nshad=nshad+1 - goto 53 - end if - end if - - call pyexec ! hadronization done -c-ml - if(iPyhist.ne.0) call pyedit(2) ! remove partons & leave hadrons - -* fill array of final particles - nu=nhj+n - if(nu.gt.150000-np) then - write(6,*) 'Warning, multiplicity too large! Cut hard part.' - goto 52 - end if - nhj=nu - do i=nhj-n+1,nhj - ip=i+n-nhj - - do j=1,5 - phj(i,j)=p(ip,j) - end do - - -c-ml - vhj(i,1)=x - vhj(i,2)=y - vhj(i,3)=z - vhj(i,4)=t - - do j=1,5 - khj(i,j)=k(ip,j) - end do - do j=3,5 - kk=khj(i,j) - if(kk.gt.0) then - khj(i,j)=kk+nhj-n - end if - end do - end do - - 53 continue - end do - 52 njet=ihard-1 - end if - njet=njet-nshad - - return - end -****************************** END HYHARD ************************** -********************************* HIPSEAR *************************** - SUBROUTINE HIPSEAR (fmax,xmin) -* find maximum and 'sufficient minimum' of differential inelasic AA cross -* section as a function of impact paramater (xm, fm are outputs) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - external hsin - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - save /hyipar/ - xmin=(bmaxh-bminh)*RA - -c write(*,*)'bmaxh bminh',bmaxh,bminh - - fmax=0.d0 - do j=1,1000 - x=bminh*RA+xmin*(j-1)/999.d0 - f=hsin(x) - if(f.gt.fmax) then - fmax=f - endif - end do - return - end -****************************** END HIPSEAR ************************** - -* differential inelastic AA cross section - double precision function hsin(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external hftaa - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - save /hyjpar/ - br=x - hsin=br*(1.d0-dexp(-0.1d0*hftaa(br)*sigin)) - return - end - -* number of nucleons-participants at impact parameter b - double precision function numpar(c) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external HFUNC1 - common /hynup1/ bp,x - EPS=0.005d0 - A=0.d0 - B=6.28318d0 - H=0.01d0*(B-A) - bp=c - CALL SIMPA(A,B,H,EPS,1.d-8,HFUNC1,X,RES,AIH,AIABS) - numpar=2.d0*RES - return - end -* - double precision function HFUNC1(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - external HFUNC2 - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hynup1/ bp,xx - save /hyipar/ - if(init.eq.1) then - Rl=Rpb - else - Rl=RA - end if - xx=x - EPS=0.005d0 - A=0.d0 - B=3.d0*Rl - H=0.01d0*(B-A) - CALL SIMPB(A,B,H,EPS,1.d-8,HFUNC2,Y,RES,AIH,AIABS) - HFUNC1=RES - return - end -* - double precision function HFUNC2(y) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - external hythik - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - common /hynup1/ bp,x - save /hyipar/,/hyjpar/ - r1=dsqrt(abs(y*y+bp*bp/4.d0+y*bp*dcos(x))) - r2=dsqrt(abs(y*y+bp*bp/4.d0-y*bp*dcos(x))) - s=1.d0-dexp(-0.1d0*sigin*hythik(r2)) - HFUNC2=y*hythik(r1)*s - return - end - -* nuclear overlap function at impact parameter b - double precision function hftaa(c) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /hythic/ BAB(110),TAB(110),TAAB(110) - save /hythic/ - call parinv(c,BAB,TAAB,110,RES) - hftaa=RES - return - end -* - double precision function HFUNC3(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - external HFUNC4 - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hynup1/ bp,xx - save /hyipar/ - if(init.eq.1) then - Rl=Rpb - else - Rl=RA - end if - xx=x - EPS=0.005d0 - A=0.d0 - B=3.d0*Rl - H=0.01d0*(B-A) - CALL SIMPB(A,B,H,EPS,1.d-8,HFUNC4,Y,RES,AIH,AIABS) - HFUNC3=RES - return - end -* - double precision function HFUNC4(y) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - external hythik - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hyjpar/ ptmin,sigin,sigjet,nhsel,iPyhist,ishad,njet - common /hynup1/ bp,x - save /hyipar/,/hyjpar/ - r1=dsqrt(abs(y*y+bp*bp/4.d0+y*bp*dcos(x))) - r2=dsqrt(abs(y*y+bp*bp/4.d0-y*bp*dcos(x))) - HFUNC4=y*hythik(r1)*hythik(r2) - return - end - -* nuclear thickness function - double precision function hythik(r) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /hythic/ BAB(110),TAB(110),TAAB(110) - save /hythic/ - call parinv(r,BAB,TAB,110,RES) - hythik=RES - return - end - -* Wood-Saxon nucleon distrubution - double precision function rhoaa(z) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0 - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hygeom/ BC - save /hyipar/,/hygeom/ - if(init.eq.1) then - Rl=Rpb - else - Rl=RA - end if - pi=3.14159d0 - df=0.54d0 - r=sqrt(bc*bc+z*z) - rho0=3.d0/(4.d0*pi*Rl**3)/(1.d0+(pi*df/Rl)**2) - rhoaa=rho0/(1.d0+dexp((r-Rl)/df)) - return - end - -* function to calculate nuclear shadowing factor (for Pb, Au, Pd or Ca beams) - double precision function shad1(kfh,xbjh,Q2h,r) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - double precision npar0,nbco0,nbcol,npart,npart0 - external ggshad - common /hyipar/ bminh,bmaxh,AW,RA,npar0,nbco0,Apb,Rpb,np,init,ipr - common /hyfpar/ bgen,nbcol,npart,npart0,npyt,nhyd - common /hyshad/ bbmin,bbmax,inuc - save /hyipar/,/hyfpar/,/hyshad/ - dimension res(2) - kf=kfh - xbj=xbjh - Q2=Q2h - bb=r - inuc=0 - if(AW.gt.205.d0.and.AW.lt.209.d0) inuc=4 ! Pb-206, 207 or 208 - if(AW.gt.196.d0.and.AW.lt.198.d0) inuc=3 ! Au-197 - if(AW.gt.109.d0.and.AW.lt.111.d0) inuc=2 ! Pd-110 - if(AW.gt.39.d0.and.AW.lt.41.d0) inuc=1 ! Ca-40 - if(inuc.eq.0.and.ipr.eq.1) then - write(6,*) - > 'Warning! Shadowing is not foreseen for atomic weigth A =' - > ,AW - write(6,*)'****************************************************** - >************************' - ipr=0 - end if - if(inuc.ne.0) then - xbj=max(5.d-5,xbj) - xbj=min(0.95d0,xbj) - Q2=max(4.d0,Q2) - Q2=min(520.d0,Q2) - bb=max(0.d0,bb) - call ggshad(inuc,xbj,Q2,bb,res,ta) - if(kf.eq.21) then - shad1=res(1) - elseif(kf.eq.1.or.kf.eq.2.or.kf.eq.3) then - shad1=res(2) - else - shad1=1.d0 - end if - else - shad1=1.d0 - end if - return - end - -****************************************************************************** -* The part of the code which follows below, includes nuclear shadowing model * -* and has been written by Konrad Tywoniuk (Oslo University, Norway) * -****************************************************************************** -c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$ -c$$$ -c$$$ -c$$$ Shadowing from Glauber-Gribov theory for -c$$$ gluons and light quarks (u,d,s and their antiquarks). -c$$$ All Pomeron tree diagrams have been summed (Schwimmer model). -c$$$ More details about the model in -c$$$ K. Tywoniuk, I.C. Arsene, L. Bravina, A. Kaidalov and E. -c$$$ Zabrodin, Phys. Lett. B 657 (2007) 170 -c$$$ -c$$$ We use FIT B from the H1 parameterization published in -c$$$ A. Aktas et al. (H1 Collaboration), Eur. Phys. J C 48 (2006) 715 -c$$$ A. Aktas et al. (H1 Collaboration), Eur. Phys. J C 48 (2006) 749 -c$$$ -c$$$ Main routine is GGSHAD which provides the user with the -c$$$ ratio of nuclear and nucleon parton distribution function -c$$$ normalized by the atomic number for a given -c$$$ INUCL: nucleus (1=Ca,2=Pd,3=Au,4=Pb) -c$$$ X: Bjorken x -c$$$ Q2: q**2, scale squared -c$$$ B: impact parameter -c$$$ -c$$$ Then RES(1): gluon shadowing -c$$$ RES(2): sea quark shadowing -c$$$ TA: nuclear profile function -c$$$ -c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$$$c$ - SUBROUTINE GGSHAD(INUCL,X,Q2,B,RES,TAF) - IMPLICIT NONE - DOUBLE PRECISION TA(31,4),IMPAR(31),ANUCL(4) - DOUBLE PRECISION XB(36),Q2V(13) - DOUBLE PRECISION XMAX,XMAXX,Q2MIN,Q2MAX,BMAX - DOUBLE PRECISION G(36,13,4),LQ(36,13,4) - DOUBLE PRECISION TATMP(31),SHAD(2) - DOUBLE PRECISION C(100),D(100),E(100) - DOUBLE PRECISION X,Q2,B - DOUBLE PRECISION RES(2) - DOUBLE PRECISION TAF - DOUBLE PRECISION SEVAL - INTEGER INUCL,TMAX - INTEGER I,IK - - PARAMETER(TMAX=31) - PARAMETER(XMAX=0.1) - PARAMETER(XMAXX=0.95) - PARAMETER(Q2MIN=4.) - PARAMETER(Q2MAX=520.) - PARAMETER(BMAX=30.) - - COMMON/GG07/XB,Q2V,G,LQ - - DATA ANUCL/40.,110.,197.,206./ - DATA IMPAR - > /0.,0.5,1.,1.5,2.,2.5,3.,3.5,4.,4.5,5.,5.5,6.,6.5,7.,7.5,8., - > 8.5,9.,9.5,10.,10.5,11.,11.5,12.,12.5,13.,13.5,14.,14.5,15./ - DATA TA - > /0.0291662,0.0288636,0.0279354,0.0263044,0.0238341,0.0203565, - > 0.0158333,0.0107343,0.00617758,0.00307859,0.00139738, - > 0.000603839,0.000254843,0.000106329,4.40965e-05,1.82206e-05, - > 7.50949e-06,3.08881e-06,1.26837e-06,5.20082e-07,2.12978e-07, - > 8.71154e-08,3.55956e-08,1.45304e-08,5.92622e-09,2.41504e-09, - > 9.83429e-10,4.00184e-10,1.62741e-10,6.61407e-11,2.68657e-11, - > 0.0153487,0.0152775,0.0150614,0.0146926,0.0141561,0.0134268, - > 0.0124651,0.0112115,0.00959258,0.00756907,0.00527514, - > 0.00313482,0.00159852,0.000732479,0.000316628,0.000133116, - > 5.52508e-05,2.27904e-05,9.3692e-06,3.84349e-06,1.57423e-06, - > 6.43962e-07,2.63132e-07,1.07414e-07,4.38089e-08,1.78529e-08, - > 7.2699e-09,2.95832e-09,1.20304e-09,4.8894e-10,1.98603e-10, - > 0.0105299,0.010498,0.0104017,0.010239,0.010006,0.00969677, - > 0.00930205,0.00880781,0.00819264,0.00742455,0.00646058, - > 0.00526252,0.00385835,0.00243988,0.00131252,0.000621079, - > 0.000272322,0.000114993,4.77312e-05,1.96569e-05,8.06377e-06, - > 3.30066e-06,1.34904e-06,5.50751e-07,2.24633e-07,9.15434e-08, - > 3.72777e-08,1.51694e-08,6.16885e-09,2.50714e-09,1.01838e-09, - > 0.0102179,0.0101879,0.0100975,0.00994467,0.00972606, - > 0.00943628,0.0090671,0.00860605,0.00803416,0.00732289, - > 0.00643266,0.00532296,0.00400025,0.00261264,0.00144993, - > 0.00070098,0.000310867,0.000131949,5.48887e-05,2.26247e-05, - > 9.28457e-06,3.80091e-06,1.55358e-06,6.34273e-07,2.58701e-07, - > 1.05427e-07,4.29316e-08,1.74701e-08,7.10447e-09,2.88739e-09, - > 1.17283e-09/ - DATA Q2V - > /4.000, 6.000, 9.000, 13.500, 20.250, 30.375, 45.562, - > 68.344, 102.516, 153.773, 230.660, 345.990, 518.985/ - DATA XB - > /0.99999998E-05, 0.13000000E-04, 0.16899999E-04, - > 0.21970000E-04, 0.28561000E-04, 0.37129299E-04, - > 0.48268099E-04, 0.62748499E-04, 0.81573096E-04, - > 0.10604500E-03, 0.13785800E-03, 0.17921600E-03, - > 0.23298099E-03, 0.30287501E-03, 0.39373801E-03, - > 0.51185902E-03, 0.66541700E-03, 0.86504198E-03, - > 0.11245500E-02, 0.14619200E-02, 0.19005000E-02, - > 0.24706500E-02, 0.32118401E-02, 0.41753901E-02, - > 0.54280101E-02, 0.70564100E-02, 0.91733299E-02, - > 0.11925300E-01, 0.15502900E-01, 0.20153800E-01, - > 0.26200000E-01, 0.34059901E-01, 0.44277899E-01, - > 0.57561301E-01, 0.74829698E-01, 0.97278602E-01/ - DATA G - > /2.542140,2.457280,2.372200,2.283920,2.195320,2.105540, - > 2.014040,1.921480,1.827600,1.733930,1.639990,1.546170, - > 1.453220,1.361040,1.268750,1.178500,1.088730,1.000740, - > 0.914606,0.830842,0.749315,0.671419,0.596883,0.526173, - > 0.460067,0.398489,0.341895,0.289998,0.242628,0.199405, - > 0.159625,0.122521,0.087252,0.053699,0.022804,0.000414, - > 1.825600,1.768440,1.712550,1.654660,1.595830,1.533980, - > 1.472860,1.409910,1.346060,1.282030,1.217520,1.153050, - > 1.089030,1.025930,0.962709,0.900094,0.837787,0.776733, - > 0.716072,0.656570,0.598295,0.541607,0.486661,0.433846, - > 0.383421,0.335585,0.290685,0.248542,0.209305,0.172614, - > 0.138166,0.105552,0.074246,0.044592,0.017935,0.000291, - > 1.445600,1.405920,1.364150,1.322050,1.276900,1.232020, - > 1.184670,1.136620,1.086950,1.037370,0.987225,0.937488, - > 0.888244,0.839061,0.790370,0.741798,0.693426,0.645511, - > 0.598298,0.551516,0.505500,0.460400,0.416326,0.373488, - > 0.332281,0.292614,0.254859,0.218944,0.184976,0.152759, - > 0.122077,0.092747,0.064477,0.037873,0.014527,0.000216, - > 1.209700,1.179300,1.146560,1.112700,1.077790,1.041400, - > 1.003150,0.964598,0.923825,0.882423,0.841304,0.800381, - > 0.759486,0.718947,0.678587,0.638579,0.598671,0.558978, - > 0.519524,0.480617,0.442116,0.404231,0.367057,0.330599, - > 0.295291,0.261100,0.228220,0.196605,0.166367,0.137331, - > 0.109496,0.082677,0.056835,0.032696,0.012013,0.000165, - > 1.049390,1.024810,0.998839,0.971705,0.942633,0.912223, - > 0.880504,0.847236,0.812716,0.777477,0.741670,0.706578, - > 0.671021,0.636183,0.601384,0.566923,0.532196,0.497956, - > 0.463884,0.430069,0.396612,0.363536,0.330915,0.298900, - > 0.267627,0.237155,0.207697,0.179169,0.151566,0.124961, - > 0.099266,0.074436,0.050544,0.028462,0.010013,0.000127, - > 0.943086,0.922388,0.900700,0.877793,0.853134,0.826808, - > 0.798937,0.769284,0.738709,0.706829,0.674818,0.643041, - > 0.611250,0.580168,0.548982,0.517908,0.486720,0.456021, - > 0.425312,0.394899,0.364616,0.334682,0.305173,0.276042, - > 0.247465,0.219584,0.192474,0.166033,0.140391,0.115481, - > 0.091347,0.068001,0.045636,0.025180,0.008510,0.000101, - > 0.858923,0.841883,0.823827,0.803952,0.782124,0.759447, - > 0.734659,0.708141,0.680281,0.651690,0.622372,0.593451, - > 0.564610,0.536045,0.507521,0.479248,0.450845,0.422731, - > 0.394687,0.366774,0.339095,0.311580,0.284350,0.257527, - > 0.231101,0.205195,0.179929,0.155178,0.131077,0.107555, - > 0.084712,0.062629,0.041557,0.022497,0.007326,0.000082, - > 0.790086,0.776082,0.760408,0.743282,0.724441,0.703812, - > 0.681673,0.657893,0.632354,0.605918,0.578976,0.552364, - > 0.525820,0.499665,0.473306,0.447125,0.421027,0.394926, - > 0.369017,0.343250,0.317596,0.292061,0.266805,0.241770, - > 0.217121,0.192830,0.169123,0.145809,0.122984,0.100685, - > 0.078967,0.057983,0.038065,0.020236,0.006364,0.000067, - > 0.732957,0.720881,0.707633,0.692613,0.676200,0.657914, - > 0.637626,0.615846,0.592373,0.567813,0.542877,0.518036, - > 0.493386,0.468899,0.444596,0.420291,0.395908,0.371641, - > 0.347423,0.323358,0.299396,0.275511,0.251830,0.228313, - > 0.205146,0.182274,0.159813,0.137693,0.115983,0.094703, - > 0.073974,0.053979,0.035068,0.018327,0.005580,0.000056, - > 0.684126,0.674389,0.662432,0.649473,0.634783,0.618458, - > 0.600173,0.580108,0.558464,0.535421,0.512051,0.488760, - > 0.465717,0.442837,0.419997,0.397309,0.374393,0.351598, - > 0.328943,0.306305,0.283685,0.261210,0.238875,0.216696, - > 0.194737,0.173035,0.151692,0.130607,0.109864,0.089483, - > 0.069628,0.050489,0.032492,0.016714,0.004940,0.000047, - > 0.642684,0.634012,0.624311,0.612687,0.599751,0.584885, - > 0.568165,0.549716,0.529352,0.507582,0.485673,0.463844, - > 0.442031,0.420480,0.398892,0.377446,0.355834,0.334383, - > 0.312903,0.291520,0.270128,0.248790,0.227632,0.206518, - > 0.185624,0.164939,0.144527,0.124348,0.104415,0.084843, - > 0.065754,0.047403,0.030217,0.015305,0.004396,0.000040, - > 0.606784,0.599501,0.591216,0.581053,0.569262,0.555644, - > 0.540298,0.522979,0.503888,0.483449,0.462725,0.441941, - > 0.421308,0.400965,0.380515,0.360166,0.339667,0.319306, - > 0.298896,0.278531,0.258224,0.237932,0.217694,0.197574, - > 0.177567,0.157731,0.138168,0.118766,0.099587,0.080708, - > 0.062310,0.044656,0.028210,0.014081,0.003935,0.000035, - > 0.575250,0.569055,0.561834,0.552756,0.542358,0.530173, - > 0.515880,0.499697,0.481592,0.462197,0.442485,0.422845, - > 0.403137,0.383704,0.364332,0.344943,0.325467,0.306020, - > 0.286496,0.267106,0.247644,0.228251,0.208881,0.189557, - > 0.170377,0.151316,0.132475,0.113748,0.095226,0.076992, - > 0.059214,0.042195,0.026424,0.013004,0.003541,0.000030, - > 2.510860,2.424890,2.338800,2.251430,2.161030,2.070080, - > 1.976500,1.884380,1.789520,1.695430,1.600900,1.507110, - > 1.413980,1.321430,1.229430,1.138950,1.049380,0.961914, - > 0.875863,0.792403,0.711728,0.634220,0.560088,0.490193, - > 0.424574,0.363647,0.307681,0.256400,0.209654,0.167105, - > 0.128273,0.092911,0.060892,0.033178,0.011804,0.000172, - > 1.797890,1.740890,1.683730,1.625330,1.564220,1.502940, - > 1.439440,1.375560,1.311540,1.247060,1.182260,1.117820, - > 1.053940,0.990598,0.927193,0.864982,0.802868,0.741596, - > 0.681232,0.621931,0.563990,0.507817,0.452982,0.400714, - > 0.350809,0.303514,0.259139,0.217505,0.178849,0.142987, - > 0.109689,0.079022,0.051121,0.027212,0.009208,0.000121, - > 1.421860,1.380980,1.338550,1.294150,1.249120,1.201850, - > 1.153940,1.105280,1.054910,1.004680,0.954677,0.905086, - > 0.855141,0.806467,0.757283,0.708817,0.660443,0.613233, - > 0.565935,0.519307,0.473770,0.428741,0.385002,0.342676, - > 0.301797,0.262591,0.225442,0.189974,0.156683,0.125290, - > 0.095921,0.068630,0.043899,0.022874,0.007411,0.000090, - > 1.187690,1.155530,1.122280,1.087030,1.051020,1.013270, - > 0.973852,0.933953,0.892905,0.851713,0.810455,0.769192, - > 0.728379,0.687798,0.647423,0.607517,0.567475,0.528048, - > 0.488850,0.450119,0.411897,0.374353,0.337466,0.301396, - > 0.266522,0.232713,0.200387,0.169339,0.139725,0.111661, - > 0.085284,0.060612,0.038324,0.019572,0.006096,0.000069, - > 1.028240,1.002610,0.975714,0.947100,0.916605,0.885287, - > 0.852214,0.817988,0.782800,0.747390,0.711939,0.676325, - > 0.641102,0.606200,0.571466,0.536994,0.502546,0.468438, - > 0.434547,0.400992,0.367663,0.334910,0.302578,0.270890, - > 0.240102,0.210041,0.181153,0.153175,0.126406,0.100826, - > 0.076605,0.054074,0.033774,0.016896,0.005055,0.000053, - > 0.923239,0.901357,0.878307,0.853928,0.827994,0.800448, - > 0.770833,0.740864,0.709208,0.677436,0.645505,0.613815, - > 0.582211,0.551121,0.519863,0.488847,0.457919,0.427291, - > 0.396728,0.366593,0.336576,0.306991,0.277689,0.248974, - > 0.220914,0.193485,0.166892,0.141077,0.116297,0.092513, - > 0.069960,0.049024,0.030239,0.014840,0.004277,0.000042, - > 0.840109,0.821572,0.802221,0.780737,0.758007,0.733570, - > 0.707391,0.680060,0.651741,0.622598,0.593525,0.564790, - > 0.535923,0.507607,0.479180,0.450770,0.422703,0.394808, - > 0.366922,0.339201,0.311718,0.284555,0.257727,0.231240, - > 0.205291,0.179821,0.155134,0.131145,0.107877,0.085551, - > 0.064423,0.044815,0.027334,0.013173,0.003668,0.000034, - > 0.771898,0.756403,0.739454,0.720917,0.700462,0.678667, - > 0.655360,0.630295,0.604073,0.577412,0.550894,0.524237, - > 0.497613,0.471552,0.445325,0.419311,0.393354,0.367582, - > 0.341816,0.316292,0.290960,0.265746,0.240859,0.216190, - > 0.191974,0.168255,0.145100,0.122534,0.100715,0.079595, - > 0.059666,0.041209,0.024869,0.011778,0.003176,0.000028, - > 0.715432,0.701697,0.687335,0.671043,0.652774,0.633196, - > 0.611618,0.588703,0.564555,0.539941,0.515046,0.490273, - > 0.465666,0.441417,0.417189,0.393083,0.368842,0.344918, - > 0.320853,0.296990,0.273346,0.249853,0.226554,0.203403, - > 0.180727,0.158303,0.136484,0.115160,0.094448,0.074509, - > 0.055551,0.038122,0.022769,0.010610,0.002775,0.000023, - > 0.666960,0.655627,0.643169,0.628497,0.612317,0.594375, - > 0.574670,0.553372,0.531024,0.507805,0.484742,0.461630, - > 0.438595,0.415762,0.393171,0.370479,0.347803,0.325380, - > 0.302957,0.280541,0.258199,0.236074,0.214141,0.192375, - > 0.170880,0.149710,0.129011,0.108739,0.089084,0.069999, - > 0.052020,0.035461,0.020980,0.009629,0.002450,0.000020, - > 0.626089,0.616427,0.605000,0.592191,0.577470,0.561221, - > 0.543098,0.523316,0.502350,0.480560,0.458749,0.436948, - > 0.415413,0.393933,0.372648,0.351193,0.329853,0.308661, - > 0.287323,0.266214,0.245090,0.224191,0.203371,0.182736, - > 0.162324,0.142202,0.122478,0.103078,0.084237,0.066064, - > 0.048902,0.033114,0.019409,0.008778,0.002175,0.000017, - > 0.590664,0.582220,0.572479,0.560768,0.547507,0.532490, - > 0.515657,0.497052,0.477369,0.456893,0.436199,0.415686, - > 0.395192,0.374819,0.354542,0.334339,0.314120,0.293919, - > 0.273897,0.253708,0.233747,0.213772,0.193977,0.174220, - > 0.154737,0.135524,0.116625,0.098102,0.080014,0.062548, - > 0.046083,0.031041,0.018032,0.008042,0.001942,0.000014, - > 0.559453,0.552473,0.543647,0.533124,0.521070,0.507229, - > 0.491452,0.474143,0.455506,0.435945,0.416256,0.396977, - > 0.377326,0.358052,0.338792,0.319598,0.300262,0.281122, - > 0.261883,0.242706,0.223579,0.204566,0.185577,0.166710, - > 0.148088,0.129570,0.111434,0.093593,0.076187,0.059415, - > 0.043600,0.029214,0.016816,0.007398,0.001744,0.000012, - > 2.494430,2.407750,2.320680,2.230570,2.139410,2.045820, - > 1.954300,1.859160,1.764370,1.669990,1.574490,1.481120, - > 1.386830,1.294720,1.202200,1.111670,1.021960,0.934479, - > 0.848525,0.765125,0.684539,0.607178,0.533502,0.463759, - > 0.398700,0.338188,0.282593,0.231728,0.185473,0.143600, - > 0.105860,0.072262,0.043334,0.020543,0.005838,0.000062, - > 1.781830,1.724140,1.666660,1.605560,1.544230,1.481280, - > 1.418440,1.353130,1.288210,1.223120,1.158330,1.093950, - > 1.029490,0.965787,0.902413,0.840091,0.777784,0.716620, - > 0.656180,0.597156,0.539338,0.483075,0.428748,0.376710, - > 0.327154,0.280125,0.236105,0.194961,0.156820,0.121629, - > 0.089495,0.060685,0.035892,0.016616,0.004508,0.000044, - > 1.407480,1.365110,1.320730,1.276090,1.228930,1.181910, - > 1.132930,1.082570,1.032770,0.982143,0.932084,0.882066, - > 0.832465,0.783250,0.734272,0.685821,0.637505,0.589736, - > 0.542652,0.496248,0.450545,0.405906,0.362451,0.320187, - > 0.279650,0.240757,0.203901,0.169026,0.136216,0.105650, - > 0.077490,0.052176,0.030469,0.013808,0.003599,0.000032, - > 1.173640,1.140320,1.105880,1.069540,1.032320,0.993897, - > 0.953913,0.913021,0.871617,0.829958,0.788517,0.747238, - > 0.706258,0.666094,0.625534,0.585422,0.545512,0.506014, - > 0.466972,0.428374,0.390208,0.352773,0.316057,0.280282, - > 0.245648,0.212195,0.180160,0.149604,0.120645,0.093445, - > 0.068267,0.045631,0.026330,0.011698,0.002940,0.000025, - > 1.014900,0.987942,0.959684,0.930270,0.899044,0.866678, - > 0.832642,0.797620,0.762091,0.726232,0.690987,0.655077, - > 0.620091,0.585191,0.550543,0.515986,0.481432,0.447342, - > 0.413584,0.380034,0.346933,0.314295,0.282265,0.250834, - > 0.220232,0.190535,0.162003,0.134530,0.108400,0.083726, - > 0.060878,0.040604,0.022978,0.010002,0.002422,0.000019, - > 0.909560,0.887017,0.862965,0.837572,0.810211,0.781875, - > 0.751746,0.720666,0.688703,0.656776,0.624847,0.593122, - > 0.561398,0.530391,0.499138,0.468280,0.437229,0.406831, - > 0.376391,0.346350,0.316458,0.286984,0.257979,0.229524, - > 0.201720,0.174606,0.148473,0.123248,0.099111,0.076308, - > 0.055184,0.036277,0.020402,0.008711,0.002038,0.000015, - > 0.827323,0.808240,0.787194,0.764785,0.741102,0.715710, - > 0.688724,0.660472,0.631563,0.602307,0.573344,0.544275, - > 0.515643,0.487203,0.458901,0.430660,0.402505,0.374606, - > 0.346855,0.319408,0.292040,0.265141,0.238553,0.212326, - > 0.186666,0.161641,0.137398,0.113940,0.091458,0.070180, - > 0.050481,0.032923,0.018295,0.007672,0.001739,0.000012, - > 0.759389,0.742705,0.724897,0.705170,0.684041,0.661178, - > 0.636646,0.610897,0.584460,0.557556,0.530715,0.504308, - > 0.477779,0.451618,0.425597,0.399640,0.373702,0.348041, - > 0.322356,0.297020,0.271779,0.246872,0.222152,0.197859, - > 0.173964,0.150642,0.127976,0.105994,0.084903,0.064934, - > 0.046463,0.030071,0.016527,0.006814,0.001499,0.000010, - > 0.703019,0.688814,0.673059,0.655722,0.636535,0.615667, - > 0.593245,0.569605,0.545086,0.520194,0.495411,0.470863, - > 0.446201,0.421921,0.397793,0.373652,0.349528,0.325620, - > 0.301845,0.278188,0.254649,0.231349,0.208318,0.185538, - > 0.163153,0.141239,0.119901,0.099172,0.079281,0.060422, - > 0.043027,0.027647,0.015032,0.006099,0.001305,0.000008, - > 0.655549,0.643053,0.628966,0.613794,0.596440,0.577313, - > 0.556691,0.534653,0.511805,0.488542,0.465448,0.442353, - > 0.419418,0.396807,0.374153,0.351526,0.328993,0.306561, - > 0.284259,0.262079,0.240000,0.218086,0.196361,0.174927, - > 0.153790,0.133102,0.112916,0.093252,0.074414,0.056530, - > 0.040069,0.025572,0.013769,0.005504,0.001148,0.000007, - > 0.614886,0.603957,0.591709,0.577655,0.561834,0.544400, - > 0.525193,0.504891,0.483435,0.461525,0.439729,0.418166, - > 0.396478,0.375064,0.353725,0.332565,0.311308,0.290188, - > 0.269125,0.248171,0.227323,0.206600,0.186070,0.165736, - > 0.145686,0.125993,0.106807,0.088112,0.070133,0.053112, - > 0.037464,0.023751,0.012665,0.004991,0.001015,0.000006, - > 0.579569,0.570010,0.559085,0.546465,0.532125,0.516026, - > 0.498089,0.478853,0.458681,0.438173,0.417404,0.396958, - > 0.376499,0.356301,0.336115,0.316014,0.295930,0.275886, - > 0.255871,0.236010,0.216223,0.196524,0.176991,0.157626, - > 0.138515,0.119742,0.101404,0.083545,0.066339,0.050078, - > 0.035167,0.022152,0.011703,0.004550,0.000904,0.000005, - > 0.548753,0.540580,0.530520,0.519276,0.506004,0.491061, - > 0.474436,0.456132,0.436996,0.417488,0.397755,0.378421, - > 0.359085,0.339851,0.320700,0.301518,0.282357,0.263296, - > 0.244273,0.225311,0.206421,0.187624,0.168959,0.150424, - > 0.132145,0.114172,0.096557,0.079446,0.062967,0.047378, - > 0.033126,0.020736,0.010987,0.004166,0.000809,0.000004, - > 2.486670,2.401390,2.313150,2.223100,2.132210,2.040620, - > 1.946240,1.852960,1.758660,1.663790,1.569300,1.475400, - > 1.381630,1.288980,1.197380,1.106900,1.017420,0.930068, - > 0.844430,0.760955,0.680549,0.603582,0.530075,0.460570, - > 0.395641,0.335338,0.279919,0.229212,0.183101,0.141385, - > 0.103826,0.070754,0.041898,0.019580,0.005430,0.000056, - > 1.776150,1.719900,1.661320,1.600440,1.539110,1.477010, - > 1.412790,1.348550,1.283220,1.218900,1.153830,1.088770, - > 1.025080,0.961812,0.898582,0.836002,0.773940,0.712963, - > 0.652650,0.593610,0.536099,0.480001,0.425916,0.373940, - > 0.324454,0.277574,0.233716,0.192654,0.154624,0.119622, - > 0.087676,0.059112,0.034659,0.015816,0.004189,0.000039, - > 1.403340,1.361000,1.316930,1.271610,1.225380,1.177160, - > 1.128240,1.078580,1.028640,0.977947,0.928063,0.878521, - > 0.828550,0.779706,0.730569,0.682199,0.633948,0.586522, - > 0.539401,0.493171,0.447639,0.403145,0.359673,0.317729, - > 0.277222,0.238454,0.201716,0.166913,0.134251,0.103840, - > 0.075864,0.050772,0.029388,0.013129,0.003341,0.000029, - > 1.169950,1.136380,1.102100,1.065820,1.028190,0.989956, - > 0.950189,0.908974,0.867893,0.826368,0.784940,0.743815, - > 0.702872,0.662550,0.622187,0.582284,0.542431,0.503183, - > 0.464112,0.425583,0.387521,0.350185,0.313576,0.277943, - > 0.243398,0.210036,0.178125,0.147636,0.118821,0.091774, - > 0.066794,0.044372,0.025371,0.011112,0.002727,0.000022, - > 1.011370,0.984724,0.956435,0.926814,0.895443,0.862964, - > 0.829274,0.794479,0.758875,0.722999,0.687335,0.652160, - > 0.616882,0.582106,0.547373,0.512881,0.478596,0.444627, - > 0.410813,0.377446,0.344502,0.311951,0.279953,0.248594, - > 0.218124,0.188529,0.160091,0.132732,0.106696,0.082174, - > 0.059499,0.039204,0.022122,0.009492,0.002245,0.000017, - > 0.906689,0.883943,0.860162,0.834079,0.807067,0.778589, - > 0.748446,0.717460,0.685716,0.653595,0.621726,0.590095, - > 0.558631,0.527321,0.496368,0.465511,0.434680,0.404249, - > 0.373821,0.343908,0.314123,0.284707,0.255819,0.227414, - > 0.199673,0.172714,0.146637,0.121510,0.097519,0.074849, - > 0.053902,0.035215,0.019623,0.008259,0.001888,0.000014, - > 0.824084,0.805081,0.784198,0.761980,0.737877,0.712401, - > 0.685185,0.657419,0.628573,0.599438,0.570456,0.541554, - > 0.512854,0.484478,0.456174,0.428019,0.399930,0.372215, - > 0.344523,0.317092,0.289826,0.262998,0.236396,0.210320, - > 0.184715,0.159801,0.135667,0.112306,0.089938,0.068791, - > 0.049274,0.031936,0.017585,0.007270,0.001610,0.000011, - > 0.756740,0.739909,0.722048,0.702184,0.681164,0.658293, - > 0.633526,0.608140,0.581469,0.554572,0.527904,0.501517, - > 0.475145,0.448970,0.422970,0.397121,0.371248,0.345564, - > 0.320059,0.294788,0.269623,0.244755,0.220148,0.195923, - > 0.172134,0.148871,0.126312,0.104417,0.083450,0.063624, - > 0.045337,0.029156,0.015873,0.006450,0.001387,0.000009, - > 0.700680,0.686067,0.670562,0.652740,0.633579,0.612848, - > 0.590476,0.566706,0.542207,0.517556,0.492696,0.468105, - > 0.443562,0.419350,0.395237,0.371204,0.347185,0.323339, - > 0.299543,0.276011,0.252614,0.229355,0.206336,0.183677, - > 0.161386,0.139527,0.118283,0.097686,0.077903,0.059183, - > 0.041956,0.026789,0.014429,0.005771,0.001207,0.000008, - > 0.652991,0.640812,0.626563,0.610980,0.593505,0.574586, - > 0.553939,0.531965,0.509196,0.485938,0.462796,0.439793, - > 0.416876,0.394269,0.371716,0.349126,0.326720,0.304355, - > 0.282067,0.259966,0.237971,0.216140,0.194490,0.173138, - > 0.152089,0.131483,0.111379,0.091839,0.073081,0.055347, - > 0.039055,0.024764,0.013208,0.005204,0.001061,0.000006, - > 0.612493,0.601527,0.589260,0.574987,0.559293,0.541793, - > 0.522714,0.502071,0.480580,0.459021,0.437202,0.415483, - > 0.394052,0.372703,0.351511,0.330271,0.309080,0.288012, - > 0.267062,0.246156,0.225353,0.204703,0.184235,0.163954, - > 0.144013,0.124421,0.105317,0.086709,0.068861,0.051973, - > 0.036498,0.022991,0.012143,0.004716,0.000938,0.000005, - > 0.577224,0.567718,0.556768,0.543992,0.529614,0.513264, - > 0.495593,0.476332,0.456118,0.435643,0.414958,0.394475, - > 0.374159,0.353948,0.333917,0.313860,0.293761,0.273842, - > 0.253865,0.234066,0.214285,0.194711,0.175202,0.155932, - > 0.136903,0.118198,0.099962,0.082192,0.065107,0.048988, - > 0.034247,0.021430,0.011215,0.004297,0.000835,0.000005, - > 0.546580,0.538342,0.528410,0.516932,0.503593,0.488594, - > 0.471844,0.453700,0.434588,0.415081,0.395496,0.376054, - > 0.356702,0.337597,0.318488,0.299383,0.280225,0.261271, - > 0.242274,0.223404,0.204576,0.185839,0.167243,0.148787, - > 0.130586,0.112676,0.095184,0.078140,0.061781,0.046329, - > 0.032244,0.020050,0.010400,0.003932,0.000747,0.000004/ - DATA LQ - > /0.514104,0.515832,0.517091,0.517536,0.517832,0.517221, - > 0.516574,0.515224,0.513287,0.510858,0.508000,0.504917, - > 0.501246,0.497403,0.492983,0.488152,0.482358,0.476122, - > 0.468649,0.460339,0.450645,0.439812,0.427166,0.412836, - > 0.396439,0.377753,0.356388,0.331566,0.302870,0.269780, - > 0.231439,0.187668,0.138736,0.086850,0.036211,0.000604, - > 0.579741,0.577476,0.575013,0.571386,0.567464,0.562828, - > 0.557414,0.551410,0.544332,0.536891,0.528953,0.521049, - > 0.512612,0.503967,0.494945,0.485619,0.475531,0.464958, - > 0.453985,0.442176,0.429817,0.416392,0.402026,0.386267, - > 0.369251,0.350413,0.329631,0.306106,0.279316,0.248539, - > 0.213030,0.172492,0.127054,0.078865,0.032177,0.000513, - > 0.617205,0.612889,0.607448,0.601280,0.593987,0.585725, - > 0.577239,0.567645,0.557436,0.546468,0.535124,0.523690, - > 0.511913,0.500192,0.488271,0.476132,0.463482,0.450653, - > 0.437460,0.423920,0.409767,0.395178,0.379804,0.363620, - > 0.346492,0.327958,0.307882,0.285606,0.260283,0.231441, - > 0.198228,0.160224,0.117620,0.072457,0.029003,0.000445, - > 0.635918,0.629589,0.622092,0.614001,0.604751,0.594717, - > 0.583683,0.572041,0.559188,0.546115,0.532523,0.518899, - > 0.505201,0.491782,0.477675,0.463752,0.449738,0.435623, - > 0.421062,0.406484,0.391587,0.376279,0.360631,0.344349, - > 0.327299,0.309280,0.289970,0.268596,0.244665,0.217365, - > 0.185991,0.150104,0.109826,0.067166,0.026423,0.000392, - > 0.642211,0.634584,0.625818,0.616705,0.605951,0.594718, - > 0.582351,0.569037,0.554986,0.540276,0.525303,0.510521, - > 0.495596,0.480637,0.465827,0.451058,0.435872,0.421066, - > 0.405880,0.390796,0.375397,0.359903,0.344185,0.327987, - > 0.311213,0.293614,0.274949,0.254454,0.231575,0.205516, - > 0.175652,0.141477,0.103138,0.062618,0.024219,0.000348, - > 0.639180,0.631092,0.621893,0.612137,0.600935,0.589006, - > 0.576122,0.561754,0.547048,0.531226,0.515512,0.499878, - > 0.484089,0.468662,0.453258,0.437735,0.422292,0.407026, - > 0.391544,0.376258,0.360735,0.345208,0.329470,0.313579, - > 0.297158,0.280066,0.261996,0.242200,0.220305,0.195335, - > 0.166765,0.134023,0.097367,0.058717,0.022356,0.000312, - > 0.631156,0.622788,0.613580,0.603527,0.592277,0.579779, - > 0.566484,0.551813,0.536423,0.520508,0.504251,0.488021, - > 0.472093,0.456329,0.440551,0.424908,0.409169,0.393745, - > 0.378229,0.362803,0.347473,0.331992,0.316442,0.300771, - > 0.284762,0.268174,0.250682,0.231645,0.210500,0.186498, - > 0.158976,0.127569,0.092372,0.055348,0.020770,0.000282, - > 0.619698,0.611519,0.602336,0.591943,0.580814,0.568514, - > 0.554982,0.540509,0.524970,0.508623,0.492412,0.476046, - > 0.459935,0.444036,0.428166,0.412462,0.396815,0.381305, - > 0.365892,0.350546,0.335395,0.320121,0.304877,0.289437, - > 0.273841,0.257707,0.240774,0.222305,0.201894,0.178726, - > 0.152209,0.121898,0.087984,0.052399,0.019398,0.000257, - > 0.606343,0.598499,0.589365,0.579821,0.568434,0.556327, - > 0.542872,0.528454,0.512900,0.496651,0.480390,0.464149, - > 0.447972,0.432310,0.416261,0.400748,0.385116,0.369727, - > 0.354542,0.339434,0.324280,0.309328,0.294433,0.279362, - > 0.264086,0.248363,0.231853,0.214025,0.194261,0.171833, - > 0.146197,0.116876,0.084113,0.049805,0.018206,0.000236, - > 0.591896,0.584256,0.575797,0.566248,0.555494,0.543797, - > 0.530664,0.516396,0.501105,0.484951,0.468541,0.452368, - > 0.436358,0.420764,0.405075,0.389617,0.374238,0.359020, - > 0.343972,0.329043,0.314268,0.299607,0.284884,0.270198, - > 0.255337,0.239949,0.223985,0.206644,0.187466,0.165701, - > 0.140843,0.112412,0.080664,0.047512,0.017165,0.000218, - > 0.576697,0.569585,0.561998,0.552972,0.542790,0.531174, - > 0.518335,0.504287,0.489160,0.473285,0.457139,0.441230, - > 0.425520,0.409903,0.394534,0.379177,0.364141,0.349046, - > 0.334214,0.319602,0.305086,0.290690,0.276241,0.261890, - > 0.247381,0.232411,0.216817,0.199969,0.181340,0.160182, - > 0.135997,0.108375,0.077551,0.045446,0.016236,0.000202, - > 0.561779,0.555491,0.548244,0.539719,0.529917,0.518731, - > 0.506334,0.492791,0.477798,0.462049,0.446208,0.430534, - > 0.414938,0.399619,0.384500,0.369572,0.354611,0.339912, - > 0.325296,0.310898,0.296649,0.282465,0.268439,0.254375, - > 0.240158,0.225578,0.210376,0.193910,0.175777,0.155185, - > 0.131618,0.104727,0.074745,0.043586,0.015406,0.000188, - > 0.547406,0.541522,0.534772,0.526637,0.517320,0.506665, - > 0.494929,0.481541,0.466958,0.451581,0.435977,0.420382, - > 0.405163,0.390039,0.375242,0.360562,0.345699,0.331352, - > 0.316934,0.302875,0.288897,0.275075,0.261211,0.247494, - > 0.233546,0.219335,0.204477,0.188465,0.170694,0.150613, - > 0.127623,0.101395,0.072188,0.041898,0.014659,0.000176, - > 0.510949,0.512461,0.513125,0.513775,0.513627,0.512953, - > 0.511676,0.510153,0.508026,0.505586,0.502488,0.499514, - > 0.495918,0.491777,0.487221,0.482318,0.476322,0.469865, - > 0.462254,0.453539,0.443579,0.431957,0.418405,0.402714, - > 0.384513,0.363211,0.338441,0.309525,0.276023,0.237418, - > 0.194095,0.146991,0.098692,0.053921,0.018675,0.000251, - > 0.573840,0.571539,0.568660,0.564636,0.560125,0.555429, - > 0.549250,0.542654,0.535827,0.528339,0.520207,0.512007, - > 0.503505,0.494854,0.485721,0.476289,0.466253,0.455649, - > 0.444534,0.432471,0.419685,0.405709,0.390526,0.373656, - > 0.355038,0.334208,0.310578,0.283443,0.252376,0.217005, - > 0.177144,0.133976,0.089700,0.048645,0.016531,0.000213, - > 0.610274,0.604837,0.598760,0.591967,0.584049,0.575825, - > 0.566634,0.556589,0.545957,0.534847,0.523533,0.511998, - > 0.500328,0.488702,0.476646,0.464532,0.451851,0.438900, - > 0.425698,0.412022,0.397498,0.382650,0.366763,0.349574, - > 0.330976,0.310680,0.288132,0.262614,0.233680,0.200673, - > 0.163728,0.123628,0.082475,0.044455,0.014854,0.000185, - > 0.627192,0.620322,0.611968,0.603362,0.593426,0.582683, - > 0.571079,0.558798,0.545824,0.532347,0.519069,0.505318, - > 0.491597,0.478201,0.464023,0.450314,0.436183,0.422097, - > 0.407576,0.392963,0.377856,0.362363,0.346096,0.329071, - > 0.310942,0.291304,0.269699,0.245618,0.218210,0.187279, - > 0.152695,0.115069,0.076563,0.041003,0.013496,0.000163, - > 0.631625,0.623836,0.614536,0.604467,0.593362,0.581189, - > 0.568126,0.554473,0.540005,0.525342,0.510320,0.495556, - > 0.480543,0.465856,0.450901,0.436047,0.421171,0.406166, - > 0.391154,0.375993,0.360616,0.344868,0.328695,0.311826, - > 0.294125,0.275057,0.254485,0.231491,0.205428,0.176164, - > 0.143362,0.107930,0.071534,0.038049,0.012338,0.000145, - > 0.628674,0.619289,0.609887,0.598892,0.587603,0.574461, - > 0.560634,0.545957,0.530648,0.515019,0.499229,0.483499, - > 0.467857,0.452587,0.437187,0.421817,0.406489,0.391076, - > 0.375987,0.360550,0.345003,0.329399,0.313389,0.296812, - > 0.279488,0.261191,0.241276,0.219209,0.194576,0.166551, - > 0.135508,0.101696,0.067217,0.035540,0.011363,0.000130, - > 0.619655,0.610842,0.600741,0.589506,0.577444,0.564098, - > 0.550163,0.534861,0.519180,0.503427,0.486955,0.471011, - > 0.455040,0.439305,0.423732,0.408132,0.392629,0.377169, - > 0.361831,0.346498,0.331073,0.315724,0.299859,0.283638, - > 0.266810,0.249063,0.229985,0.208716,0.185019,0.158309, - > 0.128580,0.096355,0.063475,0.033376,0.010535,0.000117, - > 0.607474,0.598863,0.589070,0.578071,0.565959,0.552353, - > 0.538238,0.523141,0.507028,0.491211,0.474478,0.458296, - > 0.442260,0.426619,0.410731,0.395250,0.379629,0.364356, - > 0.348971,0.333841,0.318608,0.303265,0.287813,0.272025, - > 0.255702,0.238406,0.219910,0.199549,0.176755,0.151092, - > 0.122529,0.091666,0.060228,0.031496,0.009822,0.000107, - > 0.593760,0.585285,0.576038,0.564716,0.553007,0.539720, - > 0.525715,0.510544,0.494716,0.478059,0.461888,0.445882, - > 0.429808,0.413922,0.398545,0.382937,0.367557,0.352300, - > 0.337238,0.322197,0.307168,0.292182,0.277095,0.261674, - > 0.245761,0.228939,0.211113,0.191442,0.169413,0.144749, - > 0.117225,0.087581,0.057361,0.029844,0.009202,0.000098, - > 0.579324,0.570883,0.561883,0.551297,0.539642,0.526840, - > 0.512914,0.497903,0.481998,0.465838,0.449788,0.433693, - > 0.417703,0.402286,0.386792,0.371437,0.356215,0.341283, - > 0.326313,0.311637,0.296947,0.282140,0.267321,0.252270, - > 0.236761,0.220580,0.203236,0.184230,0.162954,0.139137, - > 0.112557,0.083990,0.054824,0.028391,0.008663,0.000090, - > 0.564315,0.556562,0.547782,0.537905,0.526572,0.514011, - > 0.500033,0.485378,0.470013,0.453915,0.438022,0.422153, - > 0.406530,0.391112,0.375843,0.360792,0.345939,0.331089, - > 0.316383,0.301913,0.287442,0.273075,0.258564,0.243883, - > 0.228827,0.213013,0.196181,0.177712,0.157167,0.134036, - > 0.108376,0.080670,0.052555,0.027085,0.008183,0.000084, - > 0.549474,0.542540,0.534001,0.524222,0.513538,0.501429, - > 0.487998,0.473665,0.458530,0.442760,0.426794,0.411187, - > 0.395839,0.380807,0.365652,0.350917,0.336154,0.321565, - > 0.307328,0.293072,0.278886,0.264801,0.250668,0.236339, - > 0.221517,0.206147,0.189835,0.171902,0.151860,0.129450, - > 0.104545,0.077707,0.050505,0.025913,0.007753,0.000078, - > 0.535066,0.528539,0.520546,0.511350,0.500893,0.489256, - > 0.476407,0.462092,0.447135,0.431648,0.416302,0.400932, - > 0.385885,0.370871,0.356128,0.341562,0.327354,0.312933, - > 0.298890,0.284864,0.270948,0.257177,0.243326,0.229321, - > 0.214967,0.199986,0.183994,0.166574,0.147078,0.125313, - > 0.101089,0.075065,0.048640,0.024855,0.007368,0.000073, - > 0.509409,0.510722,0.511674,0.511738,0.511286,0.510766, - > 0.509198,0.507564,0.505152,0.502704,0.499650,0.496452, - > 0.492756,0.488747,0.483986,0.478817,0.472835,0.466164, - > 0.458412,0.449362,0.438892,0.426796,0.412430,0.395391, - > 0.375497,0.352110,0.324651,0.292275,0.254919,0.212461, - > 0.165886,0.117521,0.071431,0.033526,0.009193,0.000091, - > 0.570888,0.568118,0.564921,0.561074,0.555970,0.550478, - > 0.544438,0.537826,0.530394,0.523005,0.514685,0.506342, - > 0.497778,0.489102,0.479852,0.470348,0.460202,0.449558, - > 0.438121,0.426046,0.412891,0.398444,0.382493,0.364765, - > 0.344689,0.321925,0.295886,0.265915,0.231610,0.192817, - > 0.150406,0.106352,0.064426,0.030028,0.008099,0.000077, - > 0.605452,0.599834,0.593296,0.586627,0.578039,0.569200, - > 0.559754,0.549624,0.538672,0.527535,0.516054,0.504396, - > 0.492657,0.481104,0.468974,0.456682,0.443949,0.431100, - > 0.417683,0.403750,0.389161,0.373852,0.357151,0.339250, - > 0.319633,0.297684,0.273111,0.245042,0.213167,0.177272, - > 0.138115,0.097498,0.058870,0.027271,0.007249,0.000067, - > 0.621534,0.614157,0.605835,0.596272,0.585946,0.574335, - > 0.562822,0.550233,0.536841,0.523598,0.509920,0.496293, - > 0.482476,0.468781,0.455150,0.441275,0.427053,0.412946, - > 0.398426,0.383702,0.368436,0.352438,0.335827,0.317985, - > 0.298878,0.277758,0.254411,0.228040,0.198146,0.164659, - > 0.128112,0.090261,0.054331,0.025017,0.006563,0.000059, - > 0.625646,0.616575,0.607120,0.596395,0.584780,0.572447, - > 0.558731,0.544391,0.529948,0.515041,0.499832,0.485344, - > 0.470145,0.455555,0.440783,0.425851,0.410922,0.396061, - > 0.381038,0.365825,0.350234,0.334195,0.317648,0.300202, - > 0.281570,0.261329,0.238985,0.213898,0.185675,0.154079, - > 0.119726,0.084159,0.050488,0.023108,0.005981,0.000052, - > 0.621816,0.611958,0.601503,0.590515,0.577713,0.564667, - > 0.550311,0.535181,0.519529,0.503933,0.488235,0.472641, - > 0.456837,0.441572,0.426210,0.410935,0.395680,0.380387, - > 0.365098,0.349710,0.334114,0.318243,0.301798,0.284744, - > 0.266642,0.247149,0.225778,0.201848,0.175065,0.145114, - > 0.112575,0.078976,0.047163,0.021485,0.005492,0.000047, - > 0.612456,0.602615,0.592112,0.580629,0.567547,0.554000, - > 0.539266,0.523505,0.507494,0.491317,0.475170,0.459335, - > 0.443356,0.427588,0.412089,0.396613,0.381018,0.365836, - > 0.350418,0.335168,0.319712,0.303995,0.287942,0.271269, - > 0.253737,0.234846,0.214374,0.191514,0.165911,0.137420, - > 0.106436,0.074522,0.044401,0.020096,0.005079,0.000042, - > 0.599906,0.590658,0.579871,0.568198,0.555552,0.541752, - > 0.526573,0.511088,0.494690,0.478321,0.462067,0.446064, - > 0.430078,0.414174,0.398700,0.383180,0.367731,0.352392, - > 0.337125,0.322012,0.306729,0.291406,0.275582,0.259369, - > 0.242384,0.224158,0.204420,0.182500,0.157984,0.130669, - > 0.101087,0.070603,0.041960,0.018893,0.004724,0.000039, - > 0.586385,0.576832,0.566175,0.554843,0.542371,0.528570, - > 0.513481,0.497995,0.481584,0.465454,0.449166,0.432955, - > 0.417165,0.401569,0.386012,0.370517,0.355274,0.340119, - > 0.324992,0.310107,0.295066,0.280058,0.264679,0.248876, - > 0.232336,0.214712,0.195681,0.174542,0.150960,0.124776, - > 0.096383,0.067222,0.039821,0.017842,0.004416,0.000035, - > 0.571562,0.562230,0.553483,0.541106,0.528820,0.515154, - > 0.500724,0.484959,0.468895,0.452796,0.436478,0.420645, - > 0.404877,0.389321,0.373971,0.358762,0.343687,0.328774, - > 0.313968,0.299216,0.284619,0.269828,0.254780,0.239398, - > 0.223345,0.206321,0.187886,0.167537,0.144752,0.119523, - > 0.092229,0.064212,0.037929,0.016920,0.004149,0.000033, - > 0.556430,0.547716,0.538118,0.527507,0.515330,0.502167, - > 0.487523,0.472378,0.456637,0.440513,0.424536,0.408900, - > 0.393308,0.378059,0.362874,0.347899,0.333001,0.318366, - > 0.303866,0.289409,0.275001,0.260570,0.245889,0.230899, - > 0.215327,0.198784,0.180938,0.161191,0.139240,0.114867, - > 0.088515,0.061527,0.036242,0.016094,0.003912,0.000030, - > 0.541088,0.533114,0.524472,0.513843,0.502197,0.489243, - > 0.475392,0.460194,0.444773,0.428968,0.413337,0.397800, - > 0.382488,0.367387,0.352568,0.337799,0.323189,0.308771, - > 0.294545,0.280383,0.266247,0.252107,0.237863,0.223231, - > 0.208050,0.191998,0.174706,0.155516,0.134237,0.110630, - > 0.085174,0.059101,0.034727,0.015356,0.003700,0.000028, - > 0.526746,0.519306,0.510794,0.500680,0.489449,0.477026, - > 0.463177,0.448622,0.433350,0.417867,0.402498,0.387171, - > 0.372235,0.357466,0.342866,0.328463,0.314082,0.299986, - > 0.285991,0.272106,0.258305,0.244422,0.230511,0.216246, - > 0.201466,0.185822,0.169011,0.150402,0.129717,0.106819, - > 0.082146,0.056897,0.033348,0.014690,0.003511,0.000026, - > 0.508294,0.509537,0.510232,0.510364,0.510028,0.509066, - > 0.507574,0.506096,0.503764,0.501269,0.498261,0.494940, - > 0.491357,0.487139,0.482585,0.477518,0.471487,0.464685, - > 0.456954,0.448138,0.437547,0.425359,0.410953,0.393893, - > 0.373877,0.350282,0.322653,0.290145,0.252556,0.209889, - > 0.163221,0.114885,0.069163,0.031966,0.008546,0.000081, - > 0.569358,0.566803,0.562983,0.559001,0.554723,0.548955, - > 0.542742,0.536150,0.528626,0.520981,0.513074,0.504898, - > 0.496364,0.487653,0.478428,0.468815,0.458593,0.447996, - > 0.436563,0.424615,0.411428,0.396895,0.381014,0.363131, - > 0.342953,0.320173,0.294051,0.263852,0.229272,0.190367, - > 0.147875,0.103902,0.062322,0.028615,0.007526,0.000069, - > 0.603670,0.598438,0.591834,0.584727,0.576222,0.567680, - > 0.558196,0.547591,0.536787,0.525654,0.514148,0.502844, - > 0.491102,0.479283,0.467390,0.455046,0.442422,0.429358, - > 0.416062,0.402212,0.387705,0.372222,0.355668,0.337678, - > 0.318005,0.295922,0.271145,0.242997,0.210936,0.174968, - > 0.135724,0.095201,0.057278,0.025971,0.006733,0.000060, - > 0.619938,0.612660,0.603237,0.594399,0.584220,0.572945, - > 0.560906,0.547974,0.535000,0.521640,0.508074,0.494503, - > 0.480788,0.467052,0.453309,0.439430,0.425326,0.411154, - > 0.396834,0.381957,0.366731,0.350903,0.334155,0.316435, - > 0.297197,0.275976,0.252539,0.225982,0.196020,0.162415, - > 0.125838,0.088092,0.052512,0.023816,0.006094,0.000053, - > 0.623752,0.615162,0.604853,0.594199,0.582617,0.570319, - > 0.556672,0.542512,0.527993,0.513108,0.498185,0.483234, - > 0.468378,0.453629,0.438899,0.424139,0.409158,0.394331, - > 0.379329,0.364110,0.348592,0.332662,0.316045,0.298521, - > 0.279860,0.259548,0.237136,0.211942,0.183600,0.151947, - > 0.117534,0.082104,0.048767,0.021982,0.005551,0.000047, - > 0.619727,0.610281,0.600069,0.588100,0.575830,0.562394, - > 0.548038,0.533038,0.517667,0.501730,0.486231,0.470564, - > 0.454906,0.439606,0.424254,0.409150,0.393803,0.378587, - > 0.363406,0.347957,0.332413,0.316594,0.300201,0.283135, - > 0.264987,0.245411,0.223977,0.199987,0.173072,0.143020, - > 0.110486,0.077018,0.045586,0.020431,0.005096,0.000042, - > 0.610495,0.600588,0.589924,0.578181,0.565270,0.551795, - > 0.537196,0.521624,0.505437,0.489150,0.472983,0.457321, - > 0.441422,0.425796,0.410213,0.394710,0.379352,0.363971, - > 0.348802,0.333422,0.317927,0.302300,0.286286,0.269619, - > 0.252021,0.233168,0.212605,0.189631,0.163957,0.135368, - > 0.104416,0.072632,0.042854,0.019101,0.004711,0.000038, - > 0.597856,0.588522,0.577800,0.566289,0.553520,0.539436, - > 0.524435,0.508812,0.492453,0.476231,0.459950,0.443865, - > 0.427942,0.412263,0.396763,0.381179,0.365851,0.350734, - > 0.335459,0.320164,0.305048,0.289712,0.274016,0.257736, - > 0.240735,0.222511,0.202688,0.180671,0.156046,0.128701, - > 0.099140,0.068812,0.040482,0.017948,0.004381,0.000035, - > 0.584084,0.574752,0.564446,0.552705,0.540225,0.526223, - > 0.511434,0.495863,0.479694,0.463424,0.447226,0.431058, - > 0.415167,0.399560,0.384026,0.368648,0.353514,0.338375, - > 0.323406,0.308441,0.293400,0.278400,0.263020,0.247257, - > 0.230713,0.213051,0.193943,0.172756,0.149112,0.122832, - > 0.094502,0.065475,0.038404,0.016946,0.004094,0.000032, - > 0.569517,0.560385,0.550236,0.539113,0.526421,0.513222, - > 0.498378,0.482790,0.466696,0.450744,0.434441,0.418603, - > 0.402901,0.387328,0.372129,0.356950,0.341855,0.326972, - > 0.312231,0.297539,0.282901,0.268148,0.253147,0.237801, - > 0.221735,0.204645,0.186195,0.165769,0.142932,0.117672, - > 0.090399,0.062530,0.036573,0.016065,0.003846,0.000029, - > 0.554361,0.545724,0.536138,0.525127,0.513348,0.500011, - > 0.485538,0.470383,0.454424,0.438520,0.422677,0.406888, - > 0.391373,0.376154,0.360890,0.345988,0.331296,0.316666, - > 0.302083,0.287727,0.273311,0.258904,0.244293,0.229265, - > 0.213676,0.197142,0.179286,0.159481,0.137449,0.113024, - > 0.086731,0.059884,0.034929,0.015279,0.003625,0.000027, - > 0.539566,0.531375,0.522021,0.511690,0.499982,0.487119, - > 0.474212,0.458150,0.442576,0.426822,0.411177,0.395600, - > 0.380520,0.365481,0.350710,0.336033,0.321423,0.307074, - > 0.292885,0.278746,0.264660,0.250555,0.236263,0.221649, - > 0.206449,0.190350,0.173011,0.154255,0.132811,0.108865, - > 0.083444,0.057506,0.033461,0.014573,0.003428,0.000025, - > 0.524865,0.517319,0.508721,0.498692,0.487348,0.474698, - > 0.461245,0.446504,0.431299,0.416072,0.400507,0.385278, - > 0.370252,0.355605,0.341042,0.326661,0.312354,0.298301, - > 0.284289,0.270473,0.256711,0.242903,0.228985,0.214684, - > 0.199885,0.184233,0.167367,0.148740,0.128003,0.105093, - > 0.080442,0.055358,0.032128,0.013936,0.003252,0.000024/ - -C IF (X.GE.XMAXX.OR.Q2.LT.Q2MIN.OR.Q2.GT.Q2MAX) THEN -C WRITE(*,*) 'X or Q2 out of range!!' -C WRITE(*,*) 'Valid range is:' -C WRITE(*,*) '1E-05 < X < 0.95 and' -C WRITE(*,*) '4 < Q2 < 520 GeV**2' -C RETURN -C END IF - - IF (X.GE.XMAX.OR.B.GT.BMAX) THEN - RES(1) = 1.0 - RES(2) = 1.0 - RETURN - END IF - IF(Q2.LT.Q2MIN) THEN - Q2 = Q2MIN - ELSE IF(Q2.GT.Q2MAX) THEN - Q2 = Q2MAX - ENDIF - - CALL GGINTER(INUCL,X,Q2,SHAD) - - DO I=1,31 - TATMP(I) = TA(I,INUCL) - ENDDO - CALL SPLINE(TMAX,IMPAR,TATMP,C,D,E) - TAF = SEVAL(TMAX,B,IMPAR,TATMP,C,D,E) - - DO IK=1,2 - RES(IK) = 1.0/(1.0 + (ANUCL(INUCL)-1.0)*SHAD(IK)*TAF) - ENDDO - - RETURN - END - - SUBROUTINE GGINTER(INUCL,X,Q2,SHAD) - IMPLICIT DOUBLE PRECISION(A-H,L-Z) - IMPLICIT INTEGER(I-K) - - DIMENSION SHAD(2) - DIMENSION G(36,13,4),LQ(36,13,4) - DIMENSION XB(36),Q2V(13) - DIMENSION GQTMP(13),LQQTMP(13) - DIMENSION GXTMP(36),LQXTMP(36) - DIMENSION C(100),D(100),E(100) - - PARAMETER(INMAX=13,IMMAX=36) - - COMMON/GG07/ XB,Q2V,G,LQ - - DO K=1,36 - DO J=1,13 - GQTMP(J) = G(K,J,INUCL) - LQQTMP(J) = LQ(K,J,INUCL) - ENDDO - CALL SPLINE(INMAX,Q2V,GQTMP,C,D,E) - GXTMP(K) = SEVAL(INMAX,Q2,Q2V,GQTMP,C,D,E) - CALL SPLINE(INMAX,Q2V,LQQTMP,C,D,E) - LQXTMP(K) = SEVAL(INMAX,Q2,Q2V,LQQTMP,C,D,E) - ENDDO - - CALL SPLINE(IMMAX,XB,GXTMP,C,D,E) - SHAD(1) = SEVAL(IMMAX,X,XB,GXTMP,C,D,E) - CALL SPLINE(IMMAX,XB,LQXTMP,C,D,E) - SHAD(2) = SEVAL(IMMAX,X,XB,LQXTMP,C,D,E) - - RETURN - END - -C --------------------------------------------------------------------- - SUBROUTINE SPLINE(N,X,Y,B,C,D) -C --------------------------------------------------------------------- -c*************************************************************************** -C CALCULATE THE COEFFICIENTS B,C,D IN A CUBIC SPLINE INTERPOLATION. -C INTERPOLATION SUBROUTINES ARE TAKEN FROM -C G.E. FORSYTHE, M.A. MALCOLM AND C.B. MOLER, -C COMPUTER METHODS FOR MATHEMATICAL COMPUTATIONS (PRENTICE-HALL, 1977). - IMPLICIT double precision (A-H,O-Z) - DIMENSION X(N),Y(N),B(N),C(N),D(N) - NM1=N-1 - IF(N.LT.2) RETURN - IF(N.LT.3) GO TO 250 - D(1)=X(2)-X(1) - C(2)=(Y(2)-Y(1))/D(1) - DO 210 I=2,NM1 - D(I)=X(I+1)-X(I) - B(I)=2.0D0*(D(I-1)+D(I)) - C(I+1)=(Y(I+1)-Y(I))/D(I) - C(I)=C(I+1)-C(I) - 210 CONTINUE - B(1)=-D(1) - B(N)=-D(N-1) - C(1)=0.0D0 - C(N)=0.0D0 - IF(N.EQ.3) GO TO 215 - C(1)=C(3)/(X(4)-X(2))-C(2)/(X(3)-X(1)) - C(N)=C(N-1)/(X(N)-X(N-2))-C(N-2)/(X(N-1)-X(N-3)) - C(1)=C(1)*D(1)**2.0D0/(X(4)-X(1)) - C(N)=-C(N)*D(N-1)**2.0D0/(X(N)-X(N-3)) - 215 CONTINUE - DO 220 I=2,N - T=D(I-1)/B(I-1) - B(I)=B(I)-T*D(I-1) - C(I)=C(I)-T*C(I-1) - 220 CONTINUE - C(N)=C(N)/B(N) - DO 230 IB=1,NM1 - I=N-IB - C(I)=(C(I)-D(I)*C(I+1))/B(I) - 230 CONTINUE - B(N)=(Y(N)-Y(NM1))/D(NM1)+D(NM1)*(C(NM1)+2.0D0*C(N)) - DO 240 I=1,NM1 - B(I)=(Y(I+1)-Y(I))/D(I)-D(I)*(C(I+1)+2.0D0*C(I)) - D(I)=(C(I+1)-C(I))/D(I) - C(I)=3.0D0*C(I) - 240 CONTINUE - C(N)=3.0D0*C(N) - D(N)=D(N-1) - RETURN - 250 CONTINUE - B(1)=(Y(2)-Y(1))/(X(2)-X(1)) - C(1)=0.0D0 - D(1)=0.0D0 - B(2)=B(1) - C(2)=0.0D0 - D(2)=0.0D0 - RETURN - END -c -c*************************************************************************** -C --------------------------------------------------------------------- - double precision FUNCTION SEVAL(N,XX,X,Y,B,C,D) -C --------------------------------------------------------------------- -c*************************************************************************** -C CALCULATE THE DISTRIBUTION AT XX BY CUBIC SPLINE INTERPOLATION. - implicit double precision(A-H,O-Z) - DIMENSION X(N),Y(N),B(N),C(N),D(N) - DATA I/1/ - IF(I.GE.N) I=1 - IF(XX.LT.X(I)) GO TO 310 - IF(XX.LE.X(I+1)) GO TO 330 - 310 CONTINUE - I=1 - J=N+1 - 320 CONTINUE - K=(I+J)/2 - IF(XX.LT.X(K)) J=K - IF(XX.GE.X(K)) I=K - IF(J.GT.I+1) GO TO 320 - 330 CONTINUE - DX=XX-X(I) - SEVAL=Y(I)+DX*(B(I)+DX*(C(I)+DX*D(I))) - RETURN - END -c -c*************************************************************************** - - - - diff --git a/GeneratorInterface/Hydjet2Interface/test/Hydjet2Analyzer.cc b/GeneratorInterface/Hydjet2Interface/test/Hydjet2Analyzer.cc index 84b311e6cb4b7..d45921b8ff1b0 100644 --- a/GeneratorInterface/Hydjet2Interface/test/Hydjet2Analyzer.cc +++ b/GeneratorInterface/Hydjet2Interface/test/Hydjet2Analyzer.cc @@ -1,53 +1,57 @@ -// -*- C++ -*- -// -// Package: Hydjet2Analyzer -// Class: Hydjet2Analyzer -// -/**\class HydjetAnalyzer HydjetAnalyzer.cc yetkin/HydjetAnalyzer/src/HydjetAnalyzer.cc - Description: - Implementation: - +/** + \class Hydjet2Analyzer + \brief HepMC events analyzer + \version 2.0 + \authors Yetkin Yilmaz, Andrey Belyaev */ -// -// Original Author: Yetkin Yilmaz -// Created: Tue Dec 18 09:44:41 EST 2007 -// -// + // system include files #include -#include +#include #include +#include #include -#include + // user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/EDAnalyzer.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" + #include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/MakerMacros.h" + #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/ESHandle.h" + #include "FWCore/ServiceRegistry/interface/Service.h" + #include "CommonTools/UtilAlgos/interface/TFileService.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" + +#include "DataFormats/HepMCCandidate/interface/GenParticle.h" #include "SimDataFormats/CrossingFrame/interface/MixCollection.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "SimDataFormats/HiGenData/interface/GenHIEvent.h" #include "SimDataFormats/Vertex/interface/SimVertex.h" #include "SimDataFormats/Vertex/interface/SimVertexContainer.h" -#include "SimDataFormats/HiGenData/interface/GenHIEvent.h" -#include "DataFormats/HepMCCandidate/interface/GenParticle.h" + #include "HepMC/GenEvent.h" #include "HepMC/HeavyIon.h" + #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h" + // root include file #include "TFile.h" #include "TNtuple.h" + +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/EDProducer.h" +#include "FWCore/Utilities/interface/EDGetToken.h" + +using namespace edm; using namespace std; static const int MAXPARTICLES = 5000000; static const int ETABINS = 3; // Fix also in branch string -// -// class decleration -// + struct Hydjet2Event { int event; float b; @@ -69,6 +73,7 @@ struct Hydjet2Event { float phi[MAXPARTICLES]; int pdg[MAXPARTICLES]; int chg[MAXPARTICLES]; + float vx; float vy; float vz; @@ -144,11 +149,14 @@ class Hydjet2Analyzer : public edm::EDAnalyzer { double downTetaCut_ = -1.; const double pi = 3.14159265358979; - edm::InputTag src_; + edm::EDGetTokenT srcT_; + edm::EDGetTokenT> srcTmix_; + edm::InputTag genParticleSrc_; edm::InputTag genHIsrc_; edm::InputTag simVerticesTag_; - edm::ESHandle pdt; + edm::ESGetToken pdt_; + edm::Service f; //common @@ -262,17 +270,9 @@ class Hydjet2Analyzer : public edm::EDAnalyzer { TH1D *uhv0etah_db; TH1D *uhv0etaj_db; }; -// -// constants, enums and typedefs -// -// -// static data member definitions -// -// -// constructors and destructor -// + Hydjet2Analyzer::Hydjet2Analyzer(const edm::ParameterSet &iConfig) { - //now do what ever initialization is needed + pdt_ = esConsumes(); fBFileName = iConfig.getUntrackedParameter("output_b", "b_values.txt"); fNFileName = iConfig.getUntrackedParameter("output_n", "n_values.txt"); fMFileName = iConfig.getUntrackedParameter("output_m", "m_values.txt"); @@ -286,7 +286,11 @@ Hydjet2Analyzer::Hydjet2Analyzer(const edm::ParameterSet &iConfig) { } etaMax_ = iConfig.getUntrackedParameter("etaMax", 2.); ptMin_ = iConfig.getUntrackedParameter("ptMin", 0); - src_ = iConfig.getUntrackedParameter("src", edm::InputTag("VtxSmeared")); + srcT_ = mayConsume( + iConfig.getUntrackedParameter("src", edm::InputTag("generator", "unsmeared"))); + srcTmix_ = consumes>( + iConfig.getUntrackedParameter("srcMix", edm::InputTag("mix", "generatorSmeared"))); + genParticleSrc_ = iConfig.getUntrackedParameter("src", edm::InputTag("hiGenParticles")); genHIsrc_ = iConfig.getUntrackedParameter("src", edm::InputTag("heavyIon")); doParticles_ = iConfig.getUntrackedParameter("doParticles", false); @@ -302,11 +306,11 @@ Hydjet2Analyzer::Hydjet2Analyzer(const edm::ParameterSet &iConfig) { uPDG_3 = iConfig.getUntrackedParameter("uPDG_3", uPDG_1); upTetaCut_ = iConfig.getUntrackedParameter("uPTetaCut", 0.8); downTetaCut_ = iConfig.getUntrackedParameter("dPTetaCut", -1.); - uPtBins_ = iConfig.getUntrackedParameter >("PtBins"); - uEtaBins_ = iConfig.getUntrackedParameter >("EtaBins"); - uPhiBins_ = iConfig.getUntrackedParameter >("PhiBins"); - uV2ptBins_ = iConfig.getUntrackedParameter >("v2PtBins"); - uV2etaBins_ = iConfig.getUntrackedParameter >("v2EtaBins"); + uPtBins_ = iConfig.getUntrackedParameter>("PtBins"); + uEtaBins_ = iConfig.getUntrackedParameter>("EtaBins"); + uPhiBins_ = iConfig.getUntrackedParameter>("PhiBins"); + uV2ptBins_ = iConfig.getUntrackedParameter>("v2PtBins"); + uV2etaBins_ = iConfig.getUntrackedParameter>("v2EtaBins"); //Pt int PtSize = uPtBins_.size(); @@ -397,19 +401,14 @@ Hydjet2Analyzer::Hydjet2Analyzer(const edm::ParameterSet &iConfig) { v2etaBins[k] = minV2eta + k * ((maxV2eta - minV2eta) / nintV2eta); } } - } //user histo } //do histo } -Hydjet2Analyzer::~Hydjet2Analyzer() { - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) -} -// -// member functions -// -// ------------ method called to for each event ------------ +Hydjet2Analyzer::~Hydjet2Analyzer() {} + +// ------------ method called to for each event ------------ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) { + auto const &pdt = iSetup.getData(pdt_); using namespace edm; using namespace HepMC; hev_.event = iEvent.id().event(); @@ -438,16 +437,17 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i if (useHepMCProduct_) { //_______________________________________________________________________________________ if (doCF_) { - Handle > cf; - iEvent.getByLabel(InputTag("mix", "source"), cf); + Handle> cf; + iEvent.getByToken(srcTmix_, cf); MixCollection mix(cf.product()); nmix = mix.size(); - cout << "Mix Collection Size: " << mix << endl; + //cout << "Mix Collection Size: " << mix.size() <<", pileup size: " <::iterator mbegin = mix.begin(); MixCollection::iterator mend = mix.end(); for (MixCollection::iterator mixit = mbegin; mixit != mend; ++mixit) { const GenEvent *subevt = (*mixit).GetEvent(); int all = subevt->particles_size(); + //cout << "Subevent size: " << all << " Subevent type (1-signal): "<< (mixit).getTrigger()<<" Source type (pileup=0, cosmics=1, beam halo+ =2, beam halo- =3): "<< (mixit).getSourceType()<<" Bunchcrossing number: "<< mixit.bunch()<<" Impact: " <heavy_ion()->impact_parameter()<particles_begin(); HepMC::GenEvent::particle_const_iterator end = subevt->particles_end(); @@ -457,13 +457,15 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i float eta = (*it)->momentum().eta(); float phi = (*it)->momentum().phi(); float pt = (*it)->momentum().perp(); - const ParticleData *part = pdt->particle(pdg_id); + const ParticleData *part = pdt.particle(pdg_id); int charge = static_cast(part->charge()); hev_.pt[hev_.mult] = pt; hev_.eta[hev_.mult] = eta; hev_.phi[hev_.mult] = phi; hev_.pdg[hev_.mult] = pdg_id; hev_.chg[hev_.mult] = charge; + + //cout << "Mix Particles: pt= " << pt<<" eta="<particle(pdg_id); + part = pdt.particle(pdg_id); } */ // int charge = static_cast(part->charge()); @@ -729,6 +734,7 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i hev_.pdg[hev_.mult] = p.pdgId(); hev_.chg[hev_.mult] = p.charge(); double eta = fabs(p.eta()); + int etabin = 0; if (eta > 0.5) etabin = 1; @@ -745,12 +751,15 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i iEvent.getByLabel(genHIsrc_, higen); } } + if (doVertex_) { edm::Handle simVertices; iEvent.getByLabel(simVerticesTag_, simVertices); + if (!simVertices.isValid()) throw cms::Exception("FatalError") << "No vertices found\n"; int inum = 0; + edm::SimVertexContainer::const_iterator it = simVertices->begin(); SimVertex vertex = (*it); cout << " Vertex position " << inum << " " << vertex.position().rho() << " " << vertex.position().z() << endl; @@ -759,9 +768,11 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i vz = vertex.position().z(); vr = vertex.position().rho(); } + for (int i = 0; i < 3; ++i) { hev_.ptav[i] = hev_.ptav[i] / hev_.n[i]; } + hev_.b = b; hev_.scale = scale; hev_.npart = npart; @@ -783,8 +794,8 @@ void Hydjet2Analyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &i hNev->Fill(1., 1); } } -// ------------ method called once each job just before starting event loop ------------ -void Hydjet2Analyzer::beginRun(const edm::Run &, const edm::EventSetup &iSetup) { iSetup.getData(pdt); } +// ------------ method called once each job just before starting event loop ------------ +void Hydjet2Analyzer::beginRun(const edm::Run &, const edm::EventSetup &iSetup) {} void Hydjet2Analyzer::beginJob() { if (printLists_) { out_b.open(fBFileName.c_str()); @@ -800,11 +811,6 @@ void Hydjet2Analyzer::beginJob() { if (doHistos_) { if (userHistos_) { - cout << "---------------------------------------------------------------INPUT------------------------------------" - "-------------------------------" - << endl; - cout << "etaCut for pT = " << downTetaCut_ << " - " << upTetaCut_ << endl; - //pt uhpt = new TH1D("uhpt", "uhpt", nintPt, ptBins); uhptj = new TH1D("uhptj", "uhptj", nintPt, ptBins); @@ -939,7 +945,7 @@ void Hydjet2Analyzer::beginJob() { if (doAnalysis_) { nt = f->make("nt", "Mixing Analysis", "mix:np:src:sig"); - hydjetTree_ = f->make("hi", "Tree of Hydjet Events"); + hydjetTree_ = f->make("hi", "Tree of Hydjet2 Events"); hydjetTree_->Branch("event", &hev_.event, "event/I"); hydjetTree_->Branch("b", &hev_.b, "b/F"); hydjetTree_->Branch("npart", &hev_.npart, "npart/F"); @@ -961,6 +967,7 @@ void Hydjet2Analyzer::beginJob() { hydjetTree_->Branch("phi", hev_.phi, "phi[mult]/F"); hydjetTree_->Branch("pdg", hev_.pdg, "pdg[mult]/I"); hydjetTree_->Branch("chg", hev_.chg, "chg[mult]/I"); + hydjetTree_->Branch("vx", &hev_.vx, "vx/F"); hydjetTree_->Branch("vy", &hev_.vy, "vy/F"); hydjetTree_->Branch("vz", &hev_.vz, "vz/F"); @@ -968,7 +975,7 @@ void Hydjet2Analyzer::beginJob() { } } } -// ------------ method called once each job just after ending the event loop ------------ +// ------------ method called once each job just after ending the event loop ------------ void Hydjet2Analyzer::endJob() { if (doHistos_) { dhpt->Write(); diff --git a/GeneratorInterface/Hydjet2Interface/test/eta_v2_pT.C b/GeneratorInterface/Hydjet2Interface/test/eta_v2_pT.C deleted file mode 100644 index 4a9edc65e931f..0000000000000 --- a/GeneratorInterface/Hydjet2Interface/test/eta_v2_pT.C +++ /dev/null @@ -1,211 +0,0 @@ -#include -#include -#include -#include -#include "TMath.h" -#include "stdlib.h" -#include "stdio.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1.h" -#include "TH2.h" -#include "TObject.h" -#include "TMultiGraph.h" -#include "TStyle.h" -#include "TLegend.h" -#include "TCanvas.h" -#include "TGraphErrors.h" - -using namespace std; - -void eta_v2_pT() -{ - gStyle->SetOptStat(10000000); - gStyle->SetStatBorderSize(0); - - TCanvas *c1 = new TCanvas("c1", "c1",364,44,699,499); - gStyle->SetOptStat(0); - c1->Range(-24.9362,1.71228,25.0213,4.77534); - c1->SetFillColor(10); - c1->SetFillStyle(4000); - c1->SetBorderSize(2); - c1->SetFrameFillColor(0); - c1->SetFrameFillStyle(0); - -bool etaAN=1; -bool v2AN=0; -bool ptAN=0; - - TFile *f = new TFile("RunOutput_all.root"); -TFile *f2 = new TFile("treefile_all.root"); - TTree *td = (TTree*)f->Get("td"); -TTree *td2 = (TTree*)f2->Get("ana/hi"); - Int_t nevents = td->GetEntries(); -Int_t nevents2 = td2->GetEntries(); -cout<<" Number of events: HYDJET++ - "<Sumw2(); - - td->Draw("(0.5*log((sqrt(Px*Px+Py*Py+Pz*Pz)+Pz)/(sqrt(Px*Px+Py*Py+Pz*Pz)-Pz)))>>hyhydro","final==1&&type==0&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - td->Draw("(0.5*log((sqrt(Px*Px+Py*Py+Pz*Pz)+Pz)/(sqrt(Px*Px+Py*Py+Pz*Pz)-Pz)))>>hyjets","final==1&&type==1&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - - - td->Draw("(0.5*log((sqrt(Px*Px+Py*Py+Pz*Pz)+Pz)/(sqrt(Px*Px+Py*Py+Pz*Pz)-Pz)))>>hy","final==1&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)&&(sqrt(Px*Px+Py*Py)<0.5)");//"final==1&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - - //td2->Draw("(pseudoRapidity)>>hy2","(pdg==211)&&(pt<0.5)");//"(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - td2->Draw("(0.5*log((sqrt(px*px+py*py+pz*pz)+pz)/(sqrt(px*px+py*py+pz*pz)-pz)))>>hy2","(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)&&(sqrt(px*px+py*py)<0.5)");//"final==1&&(ab - - Int_t nbx=hy->GetNbinsX(); - Double_t binmin=hy->GetXaxis()->GetXmin(); - Double_t binmax=hy->GetXaxis()->GetXmax(); - Double_t delta=binmax-binmin; - - Int_t nbx2=hy2->GetNbinsX(); - Double_t binmin2=hy2->GetXaxis()->GetXmin(); - Double_t binmax2=hy2->GetXaxis()->GetXmax(); - Double_t delta2=binmax2-binmin2; - - hy2->Scale(nbx2/(nevents2*delta2)); - - hy->Scale(nbx/(nevents*delta)); - hyjets->Scale(nbx/ (nevents*delta)); - hyhydro->Scale(nbx/ (nevents*delta)); - - hy->SetLineWidth(2.); - hy->SetLineStyle(1); - hyjets->SetLineWidth(2.); - hyjets->SetLineStyle(2); - hyhydro->SetLineWidth(2.); - hyhydro->SetLineStyle(3); - - hy2->SetLineWidth(2.); - hy2->SetLineStyle(1); - hy2->SetLineColor(2); - - hy->Draw("histo"); - hy2->Draw("same:histo"); - //hyjets->Draw("same:histo"); - //hyhydro->Draw("same:histo"); - TLegend *legend=new TLegend(0.6, 0.6, 0.9, 0.9); - legend->AddEntry(hy, " HYDJET++: all charged ", "l"); - legend->AddEntry(hy2, " Hydjet2: all charged ", "l"); - legend->AddEntry(hyjets, " HYDJET++: jet part ", "l"); - legend->AddEntry(hyhydro, " HYDJET++: hydro part ", "l"); - //legend->Draw(); - - - - - -}else if(v2AN){ - - TH1D *hy2v2 = new TH1D("h2v2", "h2v2_histo", 100, 0.0, 10.); - TH1D *hy2v0 = new TH1D("h2v0", "h2v0_histo", 100, 0., 10.); - TH1D *hy2v2res1 = new TH1D("h2v2res1", "h2v2res1", 100, 0.0, 10.); - - TH1D *hyv2 = new TH1D("hv2", "hv2_histo", 100, 0.0, 10.); - TH1D *hyv0 = new TH1D("hv0", "hv0_histo", 100, 0., 10.); - TH1D *hyv2res1 = new TH1D("hv2res1", "hv2res1", 100, 0.0, 10.); - - hyv2res1->Sumw2(); - hy2v2res1->Sumw2(); - -// td2->Draw("(pt)>>h2v2","TMath::Cos(2*phi)","(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); -// td2->Draw("(pt)>>h2v0","1.","(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - td2->Draw("(TMath::Sqrt(px*px+py*py))>>h2v2","TMath::Cos(2*(TMath::ATan2(py,px)))","(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - td2->Draw("(TMath::Sqrt(px*px+py*py))>>h2v0","1.","(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - - - td->Draw("(TMath::Sqrt(Px*Px+Py*Py))>>hv2","TMath::Cos(2*(TMath::ATan2(Py,Px)))","final==1&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - td->Draw("(TMath::Sqrt(Px*Px+Py*Py))>>hv0","1.","final==1&&(abs(pdg)==211||abs(pdg)==321||abs(pdg)==2212)"); - - hyv2res1->Divide(hyv2,hyv0,1.,1.); - hy2v2res1->Divide(hy2v2,hy2v0,1.,1.); - -cout<<" V2 "<SetLineWidth(2); - hy2v2->SetLineStyle(2); - - hyv2res1->SetLineWidth(2.); - hyv2res1->SetLineStyle(1); - - hy2v2res1->SetLineWidth(2.); - hy2v2res1->SetLineStyle(1); - hy2v2res1->SetLineColor(2); -//hy2v2->Draw("histo"); -//hy2v0->Draw("same:histo"); -hyv2res1->GetXaxis()->SetTitle("pt, GeV/c"); -hyv2res1->GetYaxis()->SetTitle(" v2 "); -hyv2res1->Draw("histo"); -hy2v2res1->Draw("same:histo"); - -TLegend *legend=new TLegend(0.6, 0.6, 0.9, 0.9); - legend->AddEntry(hyv2res1, " HYDJET++: all charged ", "l"); - legend->AddEntry(hy2v2res1, " Hydjet2: all charged ", "l"); -// legend->Draw(); - -}else if(ptAN){ - -c1->SetLogy(); - TH1D *hypT = new TH1D("hpT", "hpT_histo", 100, 0.0, 20.); - TH1D *hypTj = new TH1D("hpTj", "hpTj_histo", 100, 0.0, 20.); - TH1D *hypTh = new TH1D("hpTh", "hpTh_histo", 100, 0.0, 20.); - TH1D *hy2pT = new TH1D("h2pT", "h2pT_histo", 100, 0.0, 20.); - - td->Draw("sqrt(Px*Px+Py*Py)>>hpT","(1.0/(sqrt(Px*Px+Py*Py)))*(final==1 && pdg==211 && abs(0.5*log((E+Pz)/(E-Pz)))<1.)"); - td->Draw("sqrt(Px*Px+Py*Py)>>hpTj","(1.0/(sqrt(Px*Px+Py*Py)))*(final==1 && type==1 && pdg==211 && abs(0.5*log((E+Pz)/(E-Pz)))<1.)"); - td->Draw("sqrt(Px*Px+Py*Py)>>hpTh","(1.0/(sqrt(Px*Px+Py*Py)))*(final==1 && type==0 && pdg==211 && abs(0.5*log((E+Pz)/(E-Pz)))<1.)"); - td2->Draw("sqrt(px*px+py*py)>>h2pT","(1.0/(sqrt(px*px+py*py)))*(pdg==211 && abs(0.5*log((e+pz)/(e-pz)))<1.)"); -// td2->Draw("pt>>h2pT","(1.0/(pt))*( pdg==211 && abs(pseudoRapidity)<1.)"); - - Int_t nbx=hypT->GetNbinsX(); - Double_t binmin=hypT->GetXaxis()->GetXmin(); - Double_t binmax=hypT->GetXaxis()->GetXmax(); - Double_t delta=binmax-binmin; - Double_t delta_y=2; //[-1;1] - - Int_t nbx2=hy2pT->GetNbinsX(); - Double_t binmin2=hy2pT->GetXaxis()->GetXmin(); - Double_t binmax2=hy2pT->GetXaxis()->GetXmax(); - Double_t delta2=binmax2-binmin2; - Double_t delta2_y=2; //[-1;1] - - hypT->Scale(nbx/ (2.0*TMath::Pi()*nevents*delta_y*delta)); - hypTj->Scale(nbx/ (2.0*TMath::Pi()*nevents*delta_y*delta)); - hypTh->Scale(nbx/ (2.0*TMath::Pi()*nevents*delta_y*delta)); - hy2pT->Scale(nbx2/ (2.0*TMath::Pi()*nevents2*delta2_y*delta2)); - - hypT->GetXaxis()->SetTitle("p_{t} (GeV/c)"); - hypT->GetYaxis()->SetTitle("1/(2 #pi) d^{2}N/ N p_{t} dp_{t} dY, c^{2}/GeV^{2}"); - - hypT->SetLineWidth(2.); - hypTj->SetLineWidth(2.); - hypTh->SetLineWidth(2.); - hy2pT->SetLineWidth(2.); - - hypTj->SetLineStyle(2); - hypTh->SetLineStyle(3); - hy2pT->SetLineColor(2); - - hypT->Draw("hist"); - //hypTj->Draw("same::hist"); - //hypTh->Draw("same::hist"); - hy2pT->Draw("same::hist"); - - TLegend *legend=new TLegend(0.6, 0.6, 0.9, 0.9); - legend->AddEntry(hy2pT, " Hydjet2: all #pi^{+} ", "l"); - legend->AddEntry(hypT, " HYDJET++: all #pi^{+} ", "l"); - legend->AddEntry(hypTj, " HYDJET++: jet part ", "l"); - legend->AddEntry(hypTh, " HYDJET++: hydro part ", "l"); - - //legend->Draw(); - -} - -} diff --git a/GeneratorInterface/Hydjet2Interface/test/testHydjet.py b/GeneratorInterface/Hydjet2Interface/test/testHydjet.py index a11f0919a18ab..a3921092c083f 100644 --- a/GeneratorInterface/Hydjet2Interface/test/testHydjet.py +++ b/GeneratorInterface/Hydjet2Interface/test/testHydjet.py @@ -6,64 +6,61 @@ process.load("Configuration.StandardSequences.Services_cff") process.load("GeneratorInterface.Hydjet2Interface.hydjet2Default_cfi") -process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", - generator = cms.PSet( - initialSeed = cms.untracked.uint32(123456789), - engineName = cms.untracked.string('HepJamesRandom') - ) -) - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(100) -) +process.maxEvents = cms.untracked.PSet(input = cms.untracked.int32(100)) process.ana = cms.EDAnalyzer('Hydjet2Analyzer', - doHistos = cms.untracked.bool(True), - userHistos = cms.untracked.bool(False), - - # Settings for USER histos - uStatus = cms.untracked.int32(2), # 1 - it's 1,2,3,4,5 of Pythia status; 2 - 11,12,13,14,15; 3 - All - uPDG_1 = cms.untracked.int32(443), - - ### Eta cut for pT dep. dist. - uPTetaCut = cms.untracked.double(4.), - dPTetaCut = cms.untracked.double(2.5), - - ### Vectors of bins borders (when 0 - uniform bins would be used) - PtBins = cms.untracked.vdouble(0.,1.,2.,3.,4.,5.,6.,8.,12.,16.,20.), - EtaBins = cms.untracked.vdouble(0.), - PhiBins = cms.untracked.vdouble(0.), - v2EtaBins = cms.untracked.vdouble(0.), - v2PtBins = cms.untracked.vdouble(0.,1.,2.,3.,4.,6.,8.,12.,16.,20.), - - ### Settings for uniform bins - nintPt = cms.untracked.int32(1000), - nintEta = cms.untracked.int32(100), - nintPhi = cms.untracked.int32(100), - nintV2pt = cms.untracked.int32(100), - nintV2eta = cms.untracked.int32(100), - - minPt = cms.untracked.double(0.), - minEta = cms.untracked.double(-10.), - minPhi = cms.untracked.double(-3.14159265358979), - minV2pt = cms.untracked.double(0.), - minV2eta = cms.untracked.double(-10.), + doHistos = cms.untracked.bool(True), + userHistos = cms.untracked.bool(False), + #doAnalysis = cms.untracked.bool(True), + + ###Settings for USER histos + + #status + uStatus = cms.untracked.int32(1), #1 - it's 1,2,3,4,5 of Pythia status; 2 - 11,12,13,14,15; 3 - All + + #up to 3 abs(PDG) for selection, if less needed just comment not used + uPDG_1 = cms.untracked.int32(211), + uPDG_2 = cms.untracked.int32(321), + uPDG_3 = cms.untracked.int32(2212), + + # |eta| cut for pT dep.dist. + dPTetaCut = cms.untracked.double(0.), #down + uPTetaCut = cms.untracked.double(0.8), #up + + #Vectors of bins borders(when 0 - uniform bins would be used) + PtBins = cms.untracked.vdouble(0.), #, 1., 2., 3., 4., 5., 6., 8., 12., 16., 20.), + EtaBins = cms.untracked.vdouble(0.), + PhiBins = cms.untracked.vdouble(0.), + v2EtaBins = cms.untracked.vdouble(0.), + v2PtBins = cms.untracked.vdouble(0.), #, 1., 2., 3., 4., 6., 8., 12., 16., 20.), + + #Settings for uniform bins + nintPt = cms.untracked.int32(100), + nintEta = cms.untracked.int32(51), + nintPhi = cms.untracked.int32(100), + nintV2pt = cms.untracked.int32(100), + nintV2eta = cms.untracked.int32(100), + + minPt = cms.untracked.double(0.), + minEta = cms.untracked.double(-10.), + minPhi = cms.untracked.double(-3.14159265358979), + minV2pt = cms.untracked.double(0.), + minV2eta = cms.untracked.double(-10.), - maxPt = cms.untracked.double(100.), - maxEta = cms.untracked.double(10.), - maxPhi = cms.untracked.double(3.14159265358979), - maxV2pt = cms.untracked.double(10.), - maxV2eta = cms.untracked.double(10.), + maxPt = cms.untracked.double(100.), + maxEta = cms.untracked.double(10.), + maxPhi = cms.untracked.double(3.14159265358979), + maxV2pt = cms.untracked.double(10.), + maxV2eta = cms.untracked.double(10.), ) - +#to separate hydro and jet parts of hydjet2 +process.generator.separateHydjetComponents = cms.untracked.bool(True) process.TFileService = cms.Service('TFileService', fileName = cms.string('Hydjet2_MB_5020GeV.root') ) process.p = cms.Path(process.generator*process.ana) - - diff --git a/GeneratorInterface/HydjetInterface/python/hydjetDefaultParameters_cff.py b/GeneratorInterface/HydjetInterface/python/hydjetDefaultParameters_cff.py index d1f3b31cc3972..4ec9f08aadd67 100644 --- a/GeneratorInterface/HydjetInterface/python/hydjetDefaultParameters_cff.py +++ b/GeneratorInterface/HydjetInterface/python/hydjetDefaultParameters_cff.py @@ -34,7 +34,7 @@ rotateEventPlane = cms.bool(True), allowEmptyEvents = cms.bool(False), angularSpectrumSelector = cms.int32(0), ## angular emitted gluon spectrum : - embeddingMode = cms.bool(False) + embeddingMode = cms.int32(False) ) pyquenPythiaDefaultBlock = cms.PSet( diff --git a/GeneratorInterface/HydjetInterface/src/HydjetHadronizer.cc b/GeneratorInterface/HydjetInterface/src/HydjetHadronizer.cc index a391d67780ef9..c220a565c35b1 100644 --- a/GeneratorInterface/HydjetInterface/src/HydjetHadronizer.cc +++ b/GeneratorInterface/HydjetInterface/src/HydjetHadronizer.cc @@ -1,6 +1,6 @@ /** \brief Interface to the HYDJET generator (since core v. 1.9.1), produces HepMC events - \version 2.0 + \version 2.1 \authors Camelia Mironov, Andrey Belyaev */ @@ -64,7 +64,7 @@ HydjetHadronizer::HydjetHadronizer(const ParameterSet& pset, edm::ConsumesCollec bmax_(pset.getParameter("bMax")), bmin_(pset.getParameter("bMin")), cflag_(pset.getParameter("cFlag")), - embedding_(pset.getParameter("embeddingMode")), + embedding_(pset.getParameter("embeddingMode")), comenergy(pset.getParameter("comEnergy")), doradiativeenloss_(pset.getParameter("doRadiativeEnLoss")), docollisionalenloss_(pset.getParameter("doCollisionalEnLoss")), diff --git a/GeneratorInterface/HydjetInterface/test/HydjetAnalyzer.cc b/GeneratorInterface/HydjetInterface/test/HydjetAnalyzer.cc index 6f39d09d19148..aa31eeb722444 100644 --- a/GeneratorInterface/HydjetInterface/test/HydjetAnalyzer.cc +++ b/GeneratorInterface/HydjetInterface/test/HydjetAnalyzer.cc @@ -7,33 +7,32 @@ // system include files #include -#include +#include #include +#include #include -#include // user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/EDAnalyzer.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "DataFormats/HepMCCandidate/interface/GenParticle.h" #include "SimDataFormats/CrossingFrame/interface/MixCollection.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" +#include "SimDataFormats/HiGenData/interface/GenHIEvent.h" #include "SimDataFormats/Vertex/interface/SimVertex.h" #include "SimDataFormats/Vertex/interface/SimVertexContainer.h" -#include "SimDataFormats/HiGenData/interface/GenHIEvent.h" -#include "DataFormats/HepMCCandidate/interface/GenParticle.h" #include "HepMC/GenEvent.h" #include "HepMC/HeavyIon.h" @@ -44,9 +43,9 @@ #include "TFile.h" #include "TNtuple.h" -#include "FWCore/Utilities/interface/EDGetToken.h" -#include "FWCore/Framework/interface/EDProducer.h" #include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/EDProducer.h" +#include "FWCore/Utilities/interface/EDGetToken.h" using namespace edm; using namespace std; @@ -154,13 +153,14 @@ class HydjetAnalyzer : public edm::EDAnalyzer { const double pi = 3.14159265358979; edm::EDGetTokenT srcT_; - edm::EDGetTokenT > srcTmix_; + edm::EDGetTokenT> srcTmix_; // edm::InputTag src_; edm::InputTag genParticleSrc_; edm::InputTag genHIsrc_; edm::InputTag simVerticesTag_; - edm::ESHandle pdt; + edm::ESGetToken pdt_; + edm::Service f; //common @@ -287,6 +287,7 @@ class HydjetAnalyzer : public edm::EDAnalyzer { // HydjetAnalyzer::HydjetAnalyzer(const edm::ParameterSet &iConfig) { //now do what ever initialization is needed + pdt_ = esConsumes(); fBFileName = iConfig.getUntrackedParameter("output_b", "b_values.txt"); fNFileName = iConfig.getUntrackedParameter("output_n", "n_values.txt"); fMFileName = iConfig.getUntrackedParameter("output_m", "m_values.txt"); @@ -302,7 +303,7 @@ HydjetAnalyzer::HydjetAnalyzer(const edm::ParameterSet &iConfig) { ptMin_ = iConfig.getUntrackedParameter("ptMin", 0); srcT_ = mayConsume( iConfig.getUntrackedParameter("src", edm::InputTag("generator", "unsmeared"))); - srcTmix_ = consumes >( + srcTmix_ = consumes>( iConfig.getUntrackedParameter("srcMix", edm::InputTag("mix", "generatorSmeared"))); // src_ = iConfig.getUntrackedParameter("src", edm::InputTag("VtxSmeared")); @@ -321,11 +322,11 @@ HydjetAnalyzer::HydjetAnalyzer(const edm::ParameterSet &iConfig) { uPDG_3 = iConfig.getUntrackedParameter("uPDG_3", uPDG_1); upTetaCut_ = iConfig.getUntrackedParameter("uPTetaCut", 0.8); downTetaCut_ = iConfig.getUntrackedParameter("dPTetaCut", -1.); - uPtBins_ = iConfig.getUntrackedParameter >("PtBins"); - uEtaBins_ = iConfig.getUntrackedParameter >("EtaBins"); - uPhiBins_ = iConfig.getUntrackedParameter >("PhiBins"); - uV2ptBins_ = iConfig.getUntrackedParameter >("v2PtBins"); - uV2etaBins_ = iConfig.getUntrackedParameter >("v2EtaBins"); + uPtBins_ = iConfig.getUntrackedParameter>("PtBins"); + uEtaBins_ = iConfig.getUntrackedParameter>("EtaBins"); + uPhiBins_ = iConfig.getUntrackedParameter>("PhiBins"); + uV2ptBins_ = iConfig.getUntrackedParameter>("v2PtBins"); + uV2etaBins_ = iConfig.getUntrackedParameter>("v2EtaBins"); //Pt int PtSize = uPtBins_.size(); @@ -430,6 +431,7 @@ HydjetAnalyzer::~HydjetAnalyzer() { // // ------------ method called to for each event ------------ void HydjetAnalyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) { + auto const &pdt = iSetup.getData(pdt_); using namespace edm; using namespace HepMC; hev_.event = iEvent.id().event(); @@ -458,7 +460,7 @@ void HydjetAnalyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iS if (useHepMCProduct_) { //_______________________________________________________________________________________ if (doCF_) { - Handle > cf; + Handle> cf; iEvent.getByToken(srcTmix_, cf); MixCollection mix(cf.product()); nmix = mix.size(); @@ -478,7 +480,7 @@ void HydjetAnalyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iS float eta = (*it)->momentum().eta(); float phi = (*it)->momentum().phi(); float pt = (*it)->momentum().perp(); - const ParticleData *part = pdt->particle(pdg_id); + const ParticleData *part = pdt.particle(pdg_id); int charge = static_cast(part->charge()); hev_.pt[hev_.mult] = pt; hev_.eta[hev_.mult] = eta; @@ -540,19 +542,19 @@ void HydjetAnalyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iS float e = (*it)->momentum().e(); float pseudoRapidity = (*it)->momentum().pseudoRapidity(); int charge = -1; - if ((pdt->particle(pdg_id))) { - part = pdt->particle(pdg_id); + if ((pdt.particle(pdg_id))) { + part = pdt.particle(pdg_id); charge = static_cast(part->charge()); } /* if(pdg_id==-130){ //there are not -130 in pdt - part = pdt->particle(130); - }else if(!(pdt->particle(pdg_id))){ //skip if not in PDT!!! + part = pdt.particle(130); + }else if(!(pdt.particle(pdg_id))){ //skip if not in PDT!!! cout<<" Out of PDT: "<< pdg_id<particle(pdg_id); + part = pdt.particle(pdg_id); } */ // int charge = static_cast(part->charge()); @@ -816,7 +818,7 @@ void HydjetAnalyzer::analyze(const edm::Event &iEvent, const edm::EventSetup &iS } } // ------------ method called once each job just before starting event loop ------------ -void HydjetAnalyzer::beginRun(const edm::Run &, const edm::EventSetup &iSetup) { iSetup.getData(pdt); } +void HydjetAnalyzer::beginRun(const edm::Run &, const edm::EventSetup &iSetup) {} void HydjetAnalyzer::beginJob() { if (printLists_) { out_b.open(fBFileName.c_str()); @@ -832,11 +834,6 @@ void HydjetAnalyzer::beginJob() { if (doHistos_) { if (userHistos_) { - cout << "---------------------------------------------------------------INPUT------------------------------------" - "-------------------------------" - << endl; - cout << "etaCut for pT = " << downTetaCut_ << " - " << upTetaCut_ << endl; - //pt uhpt = new TH1D("uhpt", "uhpt", nintPt, ptBins); uhptj = new TH1D("uhptj", "uhptj", nintPt, ptBins); diff --git a/GeneratorInterface/HydjetInterface/test/testHydjet.py b/GeneratorInterface/HydjetInterface/test/testHydjet.py index 3150e80f35f51..4f7a63d3e663f 100644 --- a/GeneratorInterface/HydjetInterface/test/testHydjet.py +++ b/GeneratorInterface/HydjetInterface/test/testHydjet.py @@ -14,7 +14,7 @@ ) process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(5) + input = cms.untracked.int32(100) ) process.ana = cms.EDAnalyzer('HydjetAnalyzer', diff --git a/GeneratorInterface/PyquenInterface/python/pyquenDefault_cfi.py b/GeneratorInterface/PyquenInterface/python/pyquenDefault_cfi.py index 422c0931410b6..47de500010f3e 100644 --- a/GeneratorInterface/PyquenInterface/python/pyquenDefault_cfi.py +++ b/GeneratorInterface/PyquenInterface/python/pyquenDefault_cfi.py @@ -19,7 +19,7 @@ ), qgpProperTimeFormation = cms.double(0.1), ## proper time of QGP formation; allowed range [0.01,10.0]fm/c; # Center of mass energy - comEnergy = cms.double(2800.0), + comEnergy = cms.double(5020.0), qgpNumQuarkFlavor = cms.int32(0), ## number of active quark flavors in qgp; allowed values: 0,1,2,3 cFlag = cms.int32(0), ## centrality flag @@ -28,8 +28,8 @@ maxEventsToPrint = cms.untracked.int32(0), ## events to print if pythiaPylistVerbosit aBeamTarget = cms.double(208.0), ## beam/target atomic number doCollisionalEnLoss = cms.bool(False), ## if true, perform partonic collisional en loss - embeddingMode = cms.bool(False) - + embeddingMode = cms.int32(0), + signalVtx = cms.untracked.vdouble(0.,0.,0.,0.) ) diff --git a/GeneratorInterface/PyquenInterface/src/PyquenHadronizer.cc b/GeneratorInterface/PyquenInterface/src/PyquenHadronizer.cc index 0da76ebf89f67..7b22611efd67e 100644 --- a/GeneratorInterface/PyquenInterface/src/PyquenHadronizer.cc +++ b/GeneratorInterface/PyquenInterface/src/PyquenHadronizer.cc @@ -44,7 +44,7 @@ PyquenHadronizer ::PyquenHadronizer(const ParameterSet& pset, edm::ConsumesColle docollisionalenloss_(pset.getParameter("doCollisionalEnLoss")), doIsospin_(pset.getParameter("doIsospin")), protonSide_(pset.getUntrackedParameter("protonSide", 0)), - embedding_(pset.getParameter("embeddingMode")), + embedding_(pset.getParameter("embeddingMode")), evtPlane_(0), nquarkflavor_(pset.getParameter("qgpNumQuarkFlavor")), qgpt0_(pset.getParameter("qgpInitialTemperature")), @@ -78,7 +78,7 @@ PyquenHadronizer ::PyquenHadronizer(const ParameterSet& pset, edm::ConsumesColle maxEventsToPrint_ = pset.getUntrackedParameter("maxEventsToPrint", 0); LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_ << endl; - if (embedding_) { + if (embedding_ == 1) { cflag_ = 0; src_ = iC.consumes >( pset.getUntrackedParameter("backgroundLabel", edm::InputTag("mix", "generatorSmeared"))); @@ -131,7 +131,7 @@ bool PyquenHadronizer::generatePartonsAndHadronize() { // at this part, need to overwrite filter() in // PyquenGeneratorFilter - if (embedding_) { + if (embedding_ == 1) { const edm::Event& e = getEDMEvent(); HepMC::GenVertex* genvtx = nullptr; const HepMC::GenEvent* inev = nullptr; @@ -215,6 +215,11 @@ bool PyquenHadronizer::generatePartonsAndHadronize() { // pyquen_hepevtio.set_trust_mothers_before_daughters(true); HepMC::GenEvent* evt = pyquen_hepevtio.read_next_event(); + // signal vertex + HepMC::GenVertex* sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), 0); // just initialization + if (!evt->signal_process_vertex()) + evt->set_signal_process_vertex(sub_vertices); + evt->set_signal_process_id(pypars.msti[0]); // type of the process evt->set_event_scale(pypars.pari[16]); // Q^2 diff --git a/GeneratorInterface/PyquenInterface/test/PyquenAnalyzer.cc b/GeneratorInterface/PyquenInterface/test/PyquenAnalyzer.cc index 2feb7a18a8d69..6bd8af077d57c 100644 --- a/GeneratorInterface/PyquenInterface/test/PyquenAnalyzer.cc +++ b/GeneratorInterface/PyquenInterface/test/PyquenAnalyzer.cc @@ -53,16 +53,16 @@ void PyquenAnalyzer::analyze(const Event& e, const EventSetup&) { //runs every event Handle EvtHandle; - - // find initial (unsmeared, unfiltered,...) HepMCProduct - // by its label - PyquenSource, that is - //e.getByLabel( "source", EvtHandle ) ; e.getByToken(srcT_, EvtHandle); // EvtHandle->GetEvent()->print(); double part_eta, part_y, part_pt, part_phi, part_e, part_pz; const HepMC::GenEvent* myEvt = EvtHandle->GetEvent(); + //HepMC::GenVertex* genvtx = nullptr; + //genvtx = myEvt->signal_process_vertex(); + //cout<<" HEPMC Vertex X "<position().x()<particles_begin(); p != myEvt->particles_end(); p++) { if (!(*p)->end_vertex() && abs((*p)->pdg_id()) == 211) { part_eta = (*p)->momentum().eta(); diff --git a/GeneratorInterface/PyquenInterface/test/testPyquen.py b/GeneratorInterface/PyquenInterface/test/testPyquen.py index 41d46566f8542..ee39e3bcad0bb 100644 --- a/GeneratorInterface/PyquenInterface/test/testPyquen.py +++ b/GeneratorInterface/PyquenInterface/test/testPyquen.py @@ -20,7 +20,7 @@ ) process.TFileService = cms.Service('TFileService', - fileName = cms.string('treefile.root') + fileName = cms.string('Pyquen_0_5020GeV.root') ) process.p = cms.Path(process.generator*process.ana)