151def AMSB_Cfg(flags):
152 result = ComponentAccumulator()
153 if flags.Common.ProductionStep == ProductionStep.Simulation:
154 from G4AtlasServices.G4AtlasServicesConfig import PhysicsListSvcCfg
155 result.merge(PhysicsListSvcCfg(flags))
156 C1Mass = eval(flags.Input.SpecialConfiguration["AMSBC1Mass"])
157 N1Mass = eval(flags.Input.SpecialConfiguration["AMSBN1Mass"])
158
159 get_and_fix_PDGTABLE_AMSB([(1000022, N1Mass, '~chi(0,1)', '0'), (1000024, C1Mass, '~chi(+,1)', '+')])
160 from ExtraParticles.PDGHelpers import updateExtraParticleAcceptList
161 updateExtraParticleAcceptList('G4particle_acceptlist_ExtraParticles.txt', [1000022,-1000024,1000024])
162 if flags.Common.ProductionStep == ProductionStep.Simulation:
163 physicsOptions = [ result.popToolsAndMerge(CharginosPhysicsToolCfg(flags)) ]
164
165 C1Lifetime = eval(flags.Input.SpecialConfiguration.get("AMSBC1Lifetime", "-1.0"))
166 if C1Lifetime > 0.0:
167 physicsOptions += [ result.popToolsAndMerge(CharginoPlusToPiPlusNeutralinoCfg(flags)) ]
168 physicsOptions += [ result.popToolsAndMerge(CharginoMinusToPiMinusNeutralinoCfg(flags)) ]
169 C1ToEleBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToEleBR", "-1.0"))
170 if C1ToEleBR > 0.0:
171 physicsOptions += [ result.popToolsAndMerge(CharginoPlusToEPlusNeutralinoCfg(flags)) ]
172 physicsOptions += [ result.popToolsAndMerge(CharginoMinusToEMinusNeutralinoCfg(flags)) ]
173 C1ToMuBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToMuBR", "-1.0"))
174 if C1ToMuBR > 0.0:
175 physicsOptions += [ result.popToolsAndMerge(CharginoPlusToMuPlusNeutralinoCfg(flags)) ]
176 physicsOptions += [ result.popToolsAndMerge(CharginoMinusToMuMinusNeutralinoCfg(flags)) ]
177 result.getService("PhysicsListSvc").PhysOption += physicsOptions
178
179 return result
180
181