3188
3188
self.assert_(wf.get_with_flow('state') != old_wf.get_with_flow('state'))
3191
def test_decay_chain_different_pdgs(self):
3192
"""Test decay chain with identical particles with different PDG
3193
With the new IdentifyMETag, processes with identical s-channel particles
3194
but different PDG code are not combined, to ensure that the particles
3195
are correctly included in the event file.
3198
mypartlist = base_objects.ParticleList()
3199
myinterlist = base_objects.InteractionList()
3201
# A electron and positron
3202
mypartlist.append(base_objects.Particle({'name':'e-',
3209
'antitexname':'e^+',
3215
'self_antipart':False}))
3216
eminus = mypartlist[len(mypartlist) - 1]
3217
eplus = copy.copy(eminus)
3218
eplus.set('is_part', False)
3220
# A E slepton and its antiparticle
3221
mypartlist.append(base_objects.Particle({'name':'sl2-',
3227
'texname':'\tilde e^-',
3228
'antitexname':'\tilde e^+',
3234
'self_antipart':False}))
3235
seminus = mypartlist[len(mypartlist) - 1]
3236
seplus = copy.copy(seminus)
3237
seplus.set('is_part', False)
3239
# A E' slepton and its antiparticle
3240
mypartlist.append(base_objects.Particle({'name':'sl4-',
3246
'texname':'\tilde mu^-',
3247
'antitexname':'\tilde mu^+',
3253
'self_antipart':False}))
3254
sepminus = mypartlist[len(mypartlist) - 1]
3255
sepplus = copy.copy(sepminus)
3256
sepplus.set('is_part', False)
3259
mypartlist.append(base_objects.Particle({'name':'n1',
3265
'texname':'\chi_0^1',
3266
'antitexname':'\chi_0^1',
3272
'self_antipart':True}))
3273
n1 = mypartlist[len(mypartlist) - 1]
3276
mypartlist.append(base_objects.Particle({'name':'a',
3283
'antitexname':'\gamma',
3289
'self_antipart':True}))
3290
a = mypartlist[len(mypartlist) - 1]
3292
# Coupling of n1 to e and se
3293
myinterlist.append(base_objects.Interaction({
3295
'particles': base_objects.ParticleList(\
3301
'couplings':{(0, 0):'MGVX350'},
3302
'orders':{'QED':1}}))
3304
myinterlist.append(base_objects.Interaction({
3306
'particles': base_objects.ParticleList(\
3312
'couplings':{(0, 0):'MGVX494'},
3313
'orders':{'QED':1}}))
3315
myinterlist.append(base_objects.Interaction({
3317
'particles': base_objects.ParticleList(\
3323
'couplings':{(0, 0):'MGVX350'},
3324
'orders':{'QED':1}}))
3326
myinterlist.append(base_objects.Interaction({
3328
'particles': base_objects.ParticleList(\
3334
'couplings':{(0, 0):'MGVX494'},
3335
'orders':{'QED':1}}))
3337
# Coupling of e to gamma
3338
myinterlist.append(base_objects.Interaction({
3340
'particles': base_objects.ParticleList(\
3346
'couplings':{(0, 0):'MGVX12'},
3347
'orders':{'QED':1}}))
3349
# Coupling of sl2 to gamma
3350
myinterlist.append(base_objects.Interaction({
3352
'particles': base_objects.ParticleList(\
3358
'couplings':{(0, 0):'MGVX56'},
3359
'orders':{'QED':1}}))
3361
myinterlist.append(base_objects.Interaction({
3363
'particles': base_objects.ParticleList(\
3369
'couplings':{(0, 0):'MGVX56'},
3370
'orders':{'QED':1}}))
3372
mymodel = base_objects.Model()
3373
mymodel.set('particles', mypartlist)
3374
mymodel.set('interactions', myinterlist)
3376
myleglist = base_objects.MultiLegList()
3378
myleglist.append(base_objects.MultiLeg({'ids':[11],
3380
myleglist.append(base_objects.MultiLeg({'ids':[-11],
3382
myleglist.append(base_objects.MultiLeg({'ids':[1000011,1000013],
3384
myleglist.append(base_objects.MultiLeg({'ids':[-1000011,-1000013],
3387
mycoreproc = base_objects.ProcessDefinition({'legs':myleglist,
3390
myleglist = base_objects.MultiLegList()
3392
myleglist.append(base_objects.MultiLeg({'ids':[1000011,1000013],
3394
myleglist.append(base_objects.MultiLeg({'ids':[11],
3396
myleglist.append(base_objects.MultiLeg({'ids':[1000022],
3399
mydecay1 = base_objects.ProcessDefinition({'legs':myleglist,
3402
myleglist = base_objects.MultiLegList()
3404
myleglist.append(base_objects.MultiLeg({'ids':[-1000011,-1000013],
3406
myleglist.append(base_objects.MultiLeg({'ids':[-11],
3408
myleglist.append(base_objects.MultiLeg({'ids':[1000022],
3412
mydecay2 = base_objects.ProcessDefinition({'legs':myleglist,
3415
mycoreproc.set('decay_chains', base_objects.ProcessDefinitionList([\
3416
mydecay1,mydecay2]))
3418
myamplitude = diagram_generation.DecayChainAmplitude(mycoreproc)
3420
matrix_element = helas_objects.HelasDecayChainProcess(myamplitude)
3422
matrix_elements = matrix_element.combine_decay_chain_processes()
3424
self.assertEqual(len(matrix_elements), 4)
3191
3427
def test_equal_decay_chains(self):
3192
3428
"""Test the functions for checking equal decay chains