ATLAS Offline Software
Loading...
Searching...
No Matches
CharginosConfig Namespace Reference

Functions

 get_and_fix_PDGTABLE_AMSB (replace)
 CharginosPhysicsToolCfg (flags, name="CharginosPhysicsTool", **kwargs)
 CharginoPlusToPiPlusNeutralinoCfg (flags, name="CharginoPlusToPiPlusNeutralino", **kwargs)
 CharginoMinusToPiMinusNeutralinoCfg (flags, name="CharginoMinusToPiMinusNeutralino", **kwargs)
 CharginoPlusToEPlusNeutralinoCfg (flags, name="CharginoPlusToEPlusNeutralino", **kwargs)
 CharginoMinusToEMinusNeutralinoCfg (flags, name="CharginoMinusToEMinusNeutralino", **kwargs)
 CharginoPlusToMuPlusNeutralinoCfg (flags, name="CharginoPlusToMuPlusNeutralino", **kwargs)
 CharginoMinusToMuMinusNeutralinoCfg (flags, name="CharginoMinusToMuMinusNeutralino", **kwargs)
 AMSB_Cfg (flags)
 AMSB_VerboseSelectorCfg (flags, name="G4UA::VerboseSelectorTool", **kwargs)

Function Documentation

◆ AMSB_Cfg()

CharginosConfig.AMSB_Cfg ( flags)

Definition at line 151 of file CharginosConfig.py.

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 # patching PDGTABLE
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 # Add Chargino decays if necessary
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

◆ AMSB_VerboseSelectorCfg()

CharginosConfig.AMSB_VerboseSelectorCfg ( flags,
name = "G4UA::VerboseSelectorTool",
** kwargs )

Definition at line 182 of file CharginosConfig.py.

182def AMSB_VerboseSelectorCfg(flags, name="G4UA::VerboseSelectorTool", **kwargs):
183 kwargs.setdefault('TargetEvent',1)
184 kwargs.setdefault('VerboseLevel',1)
185 kwargs.setdefault('TargetPdgIDs',
186 [
187 1000022, # ~chi(0,1)
188 -1000024,1000024 # ~chi(+,1)
189 ])
190 from G4DebuggingTools.G4DebuggingToolsConfig import VerboseSelectorToolCfg
191 return VerboseSelectorToolCfg(flags, name, **kwargs)

◆ CharginoMinusToEMinusNeutralinoCfg()

CharginosConfig.CharginoMinusToEMinusNeutralinoCfg ( flags,
name = "CharginoMinusToEMinusNeutralino",
** kwargs )

Definition at line 112 of file CharginosConfig.py.

112def CharginoMinusToEMinusNeutralinoCfg(flags, name="CharginoMinusToEMinusNeutralino", **kwargs):
113 result = ComponentAccumulator()
114 C1ToEBR = 0.0
115 C1ToEleBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToEleBR", "-1.0"))
116 if C1ToEleBR > 0.0:
117 C1ToEBR = C1ToEleBR
118 kwargs.setdefault("ParticleName","s_chi_minus_1")
119 kwargs.setdefault("BR",C1ToEBR) #Branching Ratio
120 kwargs.setdefault("Daughters","s_chi_0_1,anti_nu_e,e-")
121 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
122 return result
123
124

◆ CharginoMinusToMuMinusNeutralinoCfg()

CharginosConfig.CharginoMinusToMuMinusNeutralinoCfg ( flags,
name = "CharginoMinusToMuMinusNeutralino",
** kwargs )

Definition at line 138 of file CharginosConfig.py.

138def CharginoMinusToMuMinusNeutralinoCfg(flags, name="CharginoMinusToMuMinusNeutralino", **kwargs):
139 result = ComponentAccumulator()
140 C1ToMuonBR = 0.0
141 C1ToMuBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToMuBR", "-1.0"))
142 if C1ToMuBR > 0.0:
143 C1ToMuonBR = C1ToMuBR
144 kwargs.setdefault("ParticleName","s_chi_minus_1")
145 kwargs.setdefault("BR",C1ToMuonBR) #Branching Ratio
146 kwargs.setdefault("Daughters","s_chi_0_1,anti_nu_mu,mu-")
147 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
148 return result
149
150

◆ CharginoMinusToPiMinusNeutralinoCfg()

CharginosConfig.CharginoMinusToPiMinusNeutralinoCfg ( flags,
name = "CharginoMinusToPiMinusNeutralino",
** kwargs )

Definition at line 83 of file CharginosConfig.py.

83def CharginoMinusToPiMinusNeutralinoCfg(flags, name="CharginoMinusToPiMinusNeutralino", **kwargs):
84 result = ComponentAccumulator()
85 C1ToPiBR = 1.0
86 C1ToEleBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToEleBR", "-1.0"))
87 if C1ToEleBR > 0.0:
88 C1ToPiBR -= C1ToEleBR
89 C1ToMuBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToMuBR", "-1.0"))
90 if C1ToMuBR > 0.0:
91 C1ToPiBR -= C1ToMuBR
92 kwargs.setdefault("ParticleName","s_chi_minus_1")
93 kwargs.setdefault("BR",C1ToPiBR) #Branching Ratio
94 kwargs.setdefault("Daughters","s_chi_0_1,pi-")
95 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
96 return result
97
98

◆ CharginoPlusToEPlusNeutralinoCfg()

CharginosConfig.CharginoPlusToEPlusNeutralinoCfg ( flags,
name = "CharginoPlusToEPlusNeutralino",
** kwargs )

Definition at line 99 of file CharginosConfig.py.

99def CharginoPlusToEPlusNeutralinoCfg(flags, name="CharginoPlusToEPlusNeutralino", **kwargs):
100 result = ComponentAccumulator()
101 C1ToEBR = 0.0
102 C1ToEleBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToEleBR", "-1.0"))
103 if C1ToEleBR > 0.0:
104 C1ToEBR = C1ToEleBR
105 kwargs.setdefault("ParticleName","s_chi_plus_1")
106 kwargs.setdefault("BR",C1ToEBR) #Branching Ratio
107 kwargs.setdefault("Daughters","s_chi_0_1,nu_e,e+")
108 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
109 return result
110
111

◆ CharginoPlusToMuPlusNeutralinoCfg()

CharginosConfig.CharginoPlusToMuPlusNeutralinoCfg ( flags,
name = "CharginoPlusToMuPlusNeutralino",
** kwargs )

Definition at line 125 of file CharginosConfig.py.

125def CharginoPlusToMuPlusNeutralinoCfg(flags, name="CharginoPlusToMuPlusNeutralino", **kwargs):
126 result = ComponentAccumulator()
127 C1ToMuonBR = 0.0
128 C1ToMuBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToMuBR", "-1.0"))
129 if C1ToMuBR > 0.0:
130 C1ToMuonBR = C1ToMuBR
131 kwargs.setdefault("ParticleName","s_chi_plus_1")
132 kwargs.setdefault("BR",C1ToMuonBR) #Branching Ratio
133 kwargs.setdefault("Daughters","s_chi_0_1,nu_mu,mu+")
134 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
135 return result
136
137

◆ CharginoPlusToPiPlusNeutralinoCfg()

CharginosConfig.CharginoPlusToPiPlusNeutralinoCfg ( flags,
name = "CharginoPlusToPiPlusNeutralino",
** kwargs )

Definition at line 67 of file CharginosConfig.py.

67def CharginoPlusToPiPlusNeutralinoCfg(flags, name="CharginoPlusToPiPlusNeutralino", **kwargs):
68 result = ComponentAccumulator()
69 C1ToPiBR = 1.0
70 C1ToEleBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToEleBR", "-1.0"))
71 if C1ToEleBR > 0.0:
72 C1ToPiBR -= C1ToEleBR
73 C1ToMuBR = eval(flags.Input.SpecialConfiguration.get("AMSBC1ToMuBR", "-1.0"))
74 if C1ToMuBR > 0.0:
75 C1ToPiBR -= C1ToMuBR
76 kwargs.setdefault("ParticleName","s_chi_plus_1")
77 kwargs.setdefault("BR",C1ToPiBR) #Branching Ratio
78 kwargs.setdefault("Daughters","s_chi_0_1,pi+")
79 result.setPrivateTools(CompFactory.AddPhysicsDecayTool(name, **kwargs))
80 return result
81
82

◆ CharginosPhysicsToolCfg()

CharginosConfig.CharginosPhysicsToolCfg ( flags,
name = "CharginosPhysicsTool",
** kwargs )

Definition at line 44 of file CharginosConfig.py.

44def CharginosPhysicsToolCfg(flags, name="CharginosPhysicsTool", **kwargs):
45 result = ComponentAccumulator()
46 # Example specialConfiguration: {'AMSBC1Mass': '1200.16*GeV', 'AMSBN1Mass': '1200.0*GeV', 'AMSBC1Lifetime': '0.2*ns'}
47 C1Mass = eval(flags.Input.SpecialConfiguration.get("AMSBC1Mass", None))
48 N1Mass = eval(flags.Input.SpecialConfiguration.get("AMSBN1Mass", None))
49 C1Lifetime = eval(flags.Input.SpecialConfiguration.get("AMSBC1Lifetime", "-1.0"))
50
51 kwargs.setdefault("CharginoPlusMass", C1Mass)
52 kwargs.setdefault("CharginoPlusStable", (C1Lifetime < 0))
53 if not (C1Lifetime < 0):
54 kwargs.setdefault("CharginoPlusLifetime", C1Lifetime)
55
56 kwargs.setdefault("CharginoMinusMass", C1Mass)
57 kwargs.setdefault("CharginoMinusStable", (C1Lifetime < 0))
58 if not (C1Lifetime < 0):
59 kwargs.setdefault("CharginoMinusLifetime", C1Lifetime)
60
61 kwargs.setdefault("NeutralinoMass", N1Mass)
62
63 result.setPrivateTools(CompFactory.CharginosPhysicsTool(name, **kwargs))
64 return result
65
66

◆ get_and_fix_PDGTABLE_AMSB()

CharginosConfig.get_and_fix_PDGTABLE_AMSB ( replace)

Definition at line 13 of file CharginosConfig.py.

13def get_and_fix_PDGTABLE_AMSB(replace):
14
15 # Download generic PDGTABLE (overwrite existing one if it exists)
16 if getPDGTABLE('PDGTABLE.MeV'):
17 shutil.move('PDGTABLE.MeV', 'PDGTABLE.MeV.org')
18
19 # an example line to illustrate the fixed format, see PDGTABLE.MeV for more details
20 # M 1000022 0.E+00 +0.0E+00 -0.0E+00 ~chi(0,1) 0
21
22 lines = open('PDGTABLE.MeV.org').readlines()
23 for pdgid,mass,name,charge in replace:
24 if not re.search(r'[MW]\s+'+str(pdgid)+r'\s+\S+', ''.join(lines)):
25 lines.append('M' + str(pdgid).rjust(8) +''.ljust(26) +
26 ('%11.5E' % mass).ljust(15) +
27 '+0.0E+00'.ljust(9) + '-0.0E+00'.ljust(9) +
28 name.strip() + ''.ljust(6) + charge.strip()+''.rjust(20-len(name.strip())) + '\n')
29 lines.append('W' + str(pdgid).rjust(8) +''.ljust(26) +
30 '0.E+00'.ljust(15) + '+0.0E+00'.ljust(9) + '-0.0E+00'.ljust(9) +
31 name.strip() + ''.ljust(6) + charge.strip()+''.rjust(20-len(name.strip())) + '\n')
32 else:
33 from past.builtins import xrange # Temporary workaround for python3 compatibility use range in CA-based config
34 for i in xrange(len(lines)):
35 if re.search(r'M\s+'+str(pdgid)+r'\s+\S+', lines[i]):
36 l = lines[i]
37 lines[i] = l[0:35] + ('%11.5E' % mass).ljust(14) + l[49:]
38
39 update = open('PDGTABLE.MeV', 'w')
40 update.write(''.join(lines))
41 update.close()
42
43
void xrange(TH1 *h, bool symmetric)