JHUGen MELA  v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
mela.py
Go to the documentation of this file.
1 """
2 Python wrapper for MELA
3 >>> from mela import Mela, SimpleParticle_t, SimpleParticleCollection_t, TVar
4 >>> m = Mela(13, 125)
5 Then you can use m mostly like a C++ mela object.
6 
7 >>> m.setProcess(TVar.SelfDefine_spin0, TVar.JHUGen, TVar.ZZINDEPENDENT)
8 
9 The main change is that computeP and similar functions return the ME instead of modifying a reference.
10 (computeP_selfD* are not implemented here, but you can access the functionality through computeP)
11 
12 >>> print(m.computeP(False))
13 
14 You can modify the couplings either by
15 >>> m.selfDHzzcoupl[0][0][0] = 1
16 >>> m.selfDHzzcoupl[0][0][1] = 2
17 or by the more convenient way
18 >>> m.ghz1 = 1+2j
19 
20 SimpleParticle_t and SimpleParticleCollection_t are implemented to take inputs in ways more normal for python.
21 >>> daughters = SimpleParticleCollection_t([
22 ... "11 -71.89 30.50 -47.20 91.25",
23 ... #...other daughters
24 ... ])
25 
26 There are also a few functions for convenience
27 >>> m.setInputEvent_fromLHE_Hwithdecay( #or _StableHiggs or _JHUGenVBFVH, or _JHUGenttH
28 ... '''
29 ... <event>
30 ... #(...)
31 ... </event>
32 ... ''')
33 which are useful for quick tests.
34 
35 See examples at the bottom.
36 """
37 
38 from __future__ import print_function
39 from collections import namedtuple
40 import ROOT
41 from pythonmelautils import MultiDimensionalCppArray, SelfDParameter, SelfDCoupling
42 from ROOT import TUtil, TVar
43 
44 try:
45  basestring
46 except NameError:
47  basestring = str
48 
49 class Mela(object):
50  counter = 0
51  doneinit = False
52  computeptemplate = """
53  #include <Mela.h>
54  float getPAux(Mela& mela) {
55  float result;
56  mela.getPAux(result);
57  return result;
58  }
59  array<float, 8> computeDecayAngles(Mela& mela) {
60  array<float, 8> result;
61  mela.computeDecayAngles(
62  result[0],
63  result[1],
64  result[2],
65  result[3],
66  result[4],
67  result[5],
68  result[6],
69  result[7]
70  );
71  return result;
72  }
73  array<float, 7> computeVBFAngles(Mela& mela) {
74  array<float, 7> result;
75  mela.computeVBFAngles(
76  result[0],
77  result[1],
78  result[2],
79  result[3],
80  result[4],
81  result[5],
82  result[6]
83  );
84  return result;
85  }
86  array<float, 9> computeVBFAngles_ComplexBoost(Mela& mela) {
87  array<float, 9> result;
88  mela.computeVBFAngles_ComplexBoost(
89  result[0],
90  result[1],
91  result[2],
92  result[3],
93  result[4],
94  result[5],
95  result[6],
96  result[7],
97  result[8]
98  );
99  return result;
100  }
101  array<float, 7> computeVHAngles(Mela& mela, TVar::Production prod) {
102  mela.setProcess(TVar::HSMHiggs, TVar::JHUGen, prod);
103  array<float, 7> result;
104  mela.computeVHAngles(
105  result[0],
106  result[1],
107  result[2],
108  result[3],
109  result[4],
110  result[5],
111  result[6]
112  );
113  return result;
114  }
115  //not implementing the computeP_selfD* functions here
116  //would be easier to do in pure python but not worth it anyway
117  float computeP(Mela& mela, bool useConstant) {
118  float result;
119  mela.computeP(result, useConstant);
120  return result;
121  }
122  float computeD_CP(Mela& mela, TVar::MatrixElement myME, TVar::Process myType) {
123  float result;
124  mela.computeD_CP(myME, myType, result);
125  return result;
126  }
127  float computeProdP(Mela& mela, bool useConstant) {
128  float result;
129  mela.computeProdP(result, useConstant);
130  return result;
131  }
132  float computeProdDecP(Mela& mela, bool useConstant) {
133  float result;
134  mela.computeProdDecP(result, useConstant);
135  return result;
136  }
137  float computeProdP_VH(Mela& mela, bool includeHiggsDecay, bool useConstant) {
138  float result;
139  mela.computeProdP_VH(result, includeHiggsDecay, useConstant);
140  return result;
141  }
142  float computeProdP_ttH(Mela& mela, int topProcess, int topDecay, bool useConstant) {
143  float result;
144  mela.computeProdP_ttH(result, topProcess, topDecay, useConstant);
145  return result;
146  }
147  float compute4FermionWeight(Mela& mela) {
148  float result;
149  mela.compute4FermionWeight(result);
150  return result;
151  }
152  float getXPropagator(Mela& mela, TVar::ResonancePropagatorScheme scheme) {
153  float result;
154  mela.getXPropagator(scheme, result);
155  return result;
156  }
157  float computePM4l(Mela& mela, TVar::SuperMelaSyst syst) {
158  float result;
159  mela.computePM4l(syst, result);
160  return result;
161  }
162  float computeD_gg(Mela& mela, TVar::MatrixElement myME, TVar::Process myType) {
163  float result;
164  mela.computeD_gg(myME, myType, result);
165  return result;
166  }
167  float getConstant(Mela& mela) {
168  float result;
169  mela.getConstant(result);
170  return result;
171  }
172  float computeDijetConvBW(Mela& mela, bool useTrueBW) {
173  float result;
174  mela.computeDijetConvBW(result, useTrueBW);
175  return result;
176  }
177 
178  vector<vector<double>> getWeightedMEArray(MelaIO& melaio) {
179  double resultarray[nmsq][nmsq] = {{0}};
180  melaio.getWeightedMEArray(resultarray);
181  vector<vector<double>> result;
182  for (const auto& lst : resultarray) {
183  vector<double> vctr;
184  for (const auto& number : lst) {
185  vctr.push_back(number);
186  }
187  result.push_back(vctr);
188  }
189  return result;
190  }
191  vector<vector<double>> getUnweightedMEArray(MelaIO& melaio) {
192  double resultarray[nmsq][nmsq];
193  melaio.getUnweightedMEArray(resultarray);
194  vector<vector<double>> result;
195  for (const auto& lst : resultarray) {
196  vector<double> vctr;
197  for (const auto& number : lst) {
198  vctr.push_back(number);
199  }
200  result.push_back(vctr);
201  }
202  return result;
203  }
204  std::pair<vector<double>, vector<double>> getPartonWeights(MelaIO& melaio) {
205  std::pair<vector<double>, vector<double>> result;
206  result.first.resize(nmsq);
207  result.second.resize(nmsq);
208  melaio.getPartonWeights(result.first.data(), result.second.data());
209  return result;
210  }
211  """
212  def __init__(self, *args, **kwargs):
213  self.__mela = ROOT.Mela(*args, **kwargs)
214  self.index = self.counter
215  type(self).counter += 1
216 
217  arrays = (
218  ("selfDHggcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HGG, 2)),
219  ("selfDHg4g4coupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HGG, 2)),
220  ("selfDHqqcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HQQ, 2)),
221  ("selfDHbbcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HQQ, 2)),
222  ("selfDHttcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HQQ, 2)),
223  ("selfDHb4b4coupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HQQ, 2)),
224  ("selfDHt4t4coupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HQQ, 2)),
225  ("selfDHzzcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV, 2)),
226  ("selfDHwwcoupl", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV, 2)),
227  ("selfDHzzLambda_qsq", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV_LAMBDAQSQ, ROOT.py_SIZE_HVV_CQSQ)),
228  ("selfDHwwLambda_qsq", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV_LAMBDAQSQ, ROOT.py_SIZE_HVV_CQSQ)),
229  ("selfDHzzCLambda_qsq", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV_CQSQ)),
230  ("selfDHwwCLambda_qsq", (ROOT.nSupportedHiggses, ROOT.py_SIZE_HVV_CQSQ)),
231  ("selfDHzzpcoupl", (ROOT.py_SIZE_HVV, 2)),
232  ("selfDHzpzpcoupl", (ROOT.py_SIZE_HVV, 2)),
233  ("selfDZpffcoupl", (ROOT.py_SIZE_Vpff, 2)),
234  ("selfDHwwpcoupl", (ROOT.py_SIZE_HVV, 2)),
235  ("selfDHwpwpcoupl", (ROOT.py_SIZE_HVV, 2)),
236  ("selfDWpffcoupl", (ROOT.py_SIZE_Vpff, 2)),
237  ("selfDZqqcoupl", (ROOT.py_SIZE_ZQQ, 2)),
238  ("selfDZvvcoupl", (ROOT.py_SIZE_ZVV, 2)),
239  ("selfDGqqcoupl", (ROOT.py_SIZE_GQQ, 2)),
240  ("selfDGggcoupl", (ROOT.py_SIZE_GGG, 2)),
241  ("selfDGvvcoupl", (ROOT.py_SIZE_GVV, 2)),
242  ("selfDGvvpcoupl", (ROOT.py_SIZE_GVV, 2)),
243  ("selfDGvpvpcoupl", (ROOT.py_SIZE_GVV, 2)),
244  ("selfDaTQGCcoupl", (ROOT.py_SIZE_ATQGC, 2)),
245  )
246 
247  f = None
248  for name, dimensions in arrays:
249  setattr(
250  self,
251  name,
253  "mela{}{}".format(self.index, name),
254  "mela.{}".format(name),
255  ["Mela.h"],
256  {"Mela& mela": self.__mela},
257  *dimensions
258  )
259  )
260  f = getattr(self, name).writecpp(f)
261  bkpgErrorIgnoreLevel, ROOT.gErrorIgnoreLevel = ROOT.gErrorIgnoreLevel, ROOT.kInfo+1
262  f.write(self.computeptemplate)
263  for name, dimensions in arrays:
264  getattr(self, name).compilecpp(f)
265  ROOT.gErrorIgnoreLevel = bkpgErrorIgnoreLevel
266  self.doneinit = True
267 
268  def __getattr__(self, name):
269  return getattr(self.__mela, name)
270 
271  def __setattr__(self, name, value):
272  if self.doneinit:
273  if hasattr(self.__mela, name):
274  return setattr(self.__mela, name, value)
275  elif hasattr(type(self), name) and hasattr(getattr(type(self), name), "__set__"):
276  return getattr(type(self), name).__set__(self, value)
277  else:
278  raise ValueError("Can't set attribute '{}' for python Mela, which doesn't exist for C++ MELA".format(name))
279  else:
280  super(Mela, self).__setattr__(name, value)
281 
282  def setInputEvent(self, daughters, associated=None, mothers=None, isGen=False):
283  if daughters is None: daughters = ROOT.nullptr #but ConvertVectorFormat will be unhappy and just return an empty candidate
284  if associated is None: associated = ROOT.nullptr
285  if mothers is None: mothers = ROOT.nullptr
286 
287  self.__mela.setInputEvent(daughters, associated, mothers, isGen)
288 
289  def setInputEvent_fromLHE_Hwithdecay(self, event, isgen=False):
290  "For any LHE event that writes H (id=25 or 39) explicitly and decays it"
291  from lhefile import LHEEvent_Hwithdecay
292  self.setInputEvent(*LHEEvent_Hwithdecay(event, isgen))
293  def setInputEvent_fromLHE_StableHiggs(self, event, isgen=False):
294  "For any LHE event that writes H (id=25) explicitly and doesn't decay it"
295  from lhefile import LHEEvent_StableHiggs
296  self.setInputEvent(*LHEEvent_StableHiggs(event, isgen))
297  def setInputEvent_fromLHE_JHUGenVBFVH(self, event, isgen=False):
298  "For undecayed JHUGen VBF and VH (same as StableHiggs, but insists on exactly 2 associated particles)"
299  from lhefile import LHEEvent_JHUGenVBFVH
300  self.setInputEvent(*LHEEvent_JHUGenVBFVH(event, isgen))
301  def setInputEvent_fromLHE_JHUGenttH(self, event, isgen=False):
302  "For undecayed JHUGen ttH (same as StableHiggs, but insists on exactly 6 associated particles)"
303  from lhefile import LHEEvent_JHUGenttH
304  self.setInputEvent(*LHEEvent_JHUGenttH(event, isgen))
305 
306  def getPAux(self): return ROOT.getPAux(self.__mela)
307 
308  DecayAngles = namedtuple("DecayAngles", "qH m1 m2 costheta1 costheta2 Phi costhetastar Phi1")
309  def computeDecayAngles(self): return self.DecayAngles(*ROOT.computeDecayAngles(self.__mela))
310  VBFAngles = namedtuple("VBFAngles", "Q2V1 Q2V2 costheta1 costheta2 Phi costhetastar Phi1")
311  def computeVBFAngles(self): return self.VBFAngles(*ROOT.computeVBFAngles(self.__mela))
313  result = ROOT.computeVBFAngles_ComplexBoost(self.__mela)
314  result = tuple(result)
315  return self.VBFAngles(result[0], result[1], result[2]+1j*result[3], result[4]+1j*result[5], *result[6:])
316  VHAngles = namedtuple("VHAngles", "mVstar mV costheta1 costheta2 Phi costhetastar Phi1")
317  def computeVHAngles(self, prod): return self.VHAngles(*ROOT.computeVHAngles(self.__mela, prod))
318 
319  def computeP(self, useConstant=True): return ROOT.computeP(self.__mela, useConstant)
320  def computeD_CP(self, myME, myType): return ROOT.computeD_CP(self.__mela, myME, myType)
321  def computeProdP(self, useConstant=True): return ROOT.computeProdP(self.__mela, useConstant)
322  def computeProdDecP(self, useConstant=True): return ROOT.computeProdDecP(self.__mela, useConstant)
324  def getXPropagator(self, scheme): return ROOT.getXPropagator(self.__mela, scheme)
325  def computePM4l(self, syst): return ROOT.computePM4l(self.__mela, syst)
326  def computeD_gg(self, myME, myType): return ROOT.computeD_gg(self.__mela, myME, myType)
327  def computeProdP_VH(self, includeHiggsDecay=False, useConstant=True): return ROOT.computeProdP_VH(self.__mela, includeHiggsDecay, useConstant)
328  def computeProdP_ttH(self, topProcess=2, topDecay=0, useConstant=True): return ROOT.computeProdP_ttH(self.__mela, topProcess, topDecay, useConstant)
329  def getConstant(self): return ROOT.getConstant(self.__mela)
330  def computeDijetConvBW(self, useTrueBW=False): return ROOT.computeDijetConvBW(self.__mela, useTrueBW)
331 
332  def getIORecord(self): return self.MelaIO(self.__mela.getIORecord())
333 
334  class MelaIO(object):
335  def __init__(self, cppmelaio):
336  self.__melaio = cppmelaio
337  def __getattr__(self, attr):
338  return getattr(self.__melaio, attr)
340  result = ROOT.getWeightedMEArray(self.__melaio)
341  return [list(_) for _ in result]
343  result = ROOT.getUnweightedMEArray(self.__melaio)
344  return [list(_) for _ in result]
345  def getPartonWeights(self):
346  result = ROOT.getPartonWeights(self.__melaio)
347  return list(result.first), list(result.second)
348 
349  ghg2 = SelfDCoupling("selfDHggcoupl", 0, ROOT.py_gHIGGS_GG_2)
350  ghg3 = SelfDCoupling("selfDHggcoupl", 0, ROOT.py_gHIGGS_GG_3)
351  ghg4 = SelfDCoupling("selfDHggcoupl", 0, ROOT.py_gHIGGS_GG_4)
352 
353  #https://github.com/cms-analysis/HiggsAnalysis-ZZMatrixElement/blob/41232f911b4f03065ae2b83752b5bcd4daacaa2c/MELA/fortran/mod_JHUGenMELA.F90#L123-L168
354  ghz1 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1)
355  ghz2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2)
356  ghz3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3)
357  ghz4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4)
358 
359  ghzgs2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_ZA_2)
360  ghzgs3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_ZA_3)
361  ghzgs4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_ZA_4)
362  ghgsgs2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_AA_2)
363  ghgsgs3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_AA_3)
364  ghgsgs4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_AA_4)
365 
366  ghz1_prime = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME)
367  ghz1_prime2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME2)
368  ghz1_prime3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME3)
369  ghz1_prime4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME4)
370  ghz1_prime5 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME5)
371 
372  ghz2_prime = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME)
373  ghz2_prime2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME2)
374  ghz2_prime3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME3)
375  ghz2_prime4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME4)
376  ghz2_prime5 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME5)
377 
378  ghz3_prime = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME)
379  ghz3_prime2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME2)
380  ghz3_prime3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME3)
381  ghz3_prime4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME4)
382  ghz3_prime5 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME5)
383 
384  ghz4_prime = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME)
385  ghz4_prime2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME2)
386  ghz4_prime3 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME3)
387  ghz4_prime4 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME4)
388  ghz4_prime5 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME5)
389 
390  ghzgs1_prime2 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_ZA_1_PRIME2)
391 
392  ghz1_prime6 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME6)
393  ghz1_prime7 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME7)
394  ghz2_prime6 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME6)
395  ghz2_prime7 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME7)
396  ghz3_prime6 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME6)
397  ghz3_prime7 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME7)
398  ghz4_prime6 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME6)
399  ghz4_prime7 = SelfDCoupling("selfDHzzcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME7)
400 
401  cz_q1sq = SelfDParameter("selfDHzzCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ1)
402  Lambda_z11 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ1)
403  Lambda_z12 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ1)
404  Lambda_z13 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ1)
405  Lambda_z14 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ1)
406 
407  cz_q2sq = SelfDParameter("selfDHzzCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ2)
408  Lambda_z21 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ2)
409  Lambda_z22 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ2)
410  Lambda_z23 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ2)
411  Lambda_z24 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ2)
412 
413  cz_q12sq = SelfDParameter("selfDHzzCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ12)
414  Lambda_z01 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ12)
415  Lambda_z02 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ12)
416  Lambda_z03 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ12)
417  Lambda_z04 = SelfDParameter("selfDHzzLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ12)
418 
419  ghw1 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1)
420  ghw2 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2)
421  ghw3 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3)
422  ghw4 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4)
423 
424  ghw1_prime = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME)
425  ghw1_prime2 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME2)
426  ghw1_prime3 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME3)
427  ghw1_prime4 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME4)
428  ghw1_prime5 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME5)
429 
430  ghw2_prime = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME)
431  ghw2_prime2 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME2)
432  ghw2_prime3 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME3)
433  ghw2_prime4 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME4)
434  ghw2_prime5 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME5)
435 
436  ghw3_prime = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME)
437  ghw3_prime2 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME2)
438  ghw3_prime3 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME3)
439  ghw3_prime4 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME4)
440  ghw3_prime5 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME5)
441 
442  ghw4_prime = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME)
443  ghw4_prime2 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME2)
444  ghw4_prime3 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME3)
445  ghw4_prime4 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME4)
446  ghw4_prime5 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_4_PRIME5)
447 
448  ghw1_prime6 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME6)
449  ghw1_prime7 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_1_PRIME7)
450  ghw2_prime6 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME6)
451  ghw2_prime7 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_2_PRIME7)
452  ghw3_prime6 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME6)
453  ghw3_prime7 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME7)
454  ghw4_prime6 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME6)
455  ghw4_prime7 = SelfDCoupling("selfDHwwcoupl", 0, ROOT.py_gHIGGS_VV_3_PRIME7)
456 
457  cw_q1sq = SelfDParameter("selfDHwwCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ1)
458  Lambda_w11 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ1)
459  Lambda_w12 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ1)
460  Lambda_w13 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ1)
461  Lambda_w14 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ1)
462 
463  cw_q2sq = SelfDParameter("selfDHwwCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ2)
464  Lambda_w21 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ2)
465  Lambda_w22 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ2)
466  Lambda_w23 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ2)
467  Lambda_w24 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ2)
468 
469  cw_q12sq = SelfDParameter("selfDHwwCLambda_qsq", 0, ROOT.py_cLambdaHIGGS_VV_QSQ12)
470  Lambda_w01 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_1, ROOT.py_cLambdaHIGGS_VV_QSQ12)
471  Lambda_w02 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_2, ROOT.py_cLambdaHIGGS_VV_QSQ12)
472  Lambda_w03 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_3, ROOT.py_cLambdaHIGGS_VV_QSQ12)
473  Lambda_w04 = SelfDParameter("selfDHwwLambda_qsq", 0, ROOT.py_LambdaHIGGS_QSQ_VV_4, ROOT.py_cLambdaHIGGS_VV_QSQ12)
474 
475  kappa = SelfDCoupling("selfDHqqcoupl", 0, ROOT.py_gHIGGS_KAPPA)
476  kappa_tilde = SelfDCoupling("selfDHqqcoupl", 0, ROOT.py_gHIGGS_KAPPA_TILDE)
477 
478  ghzzp1 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1)
479  ghzzp2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2)
480  ghzzp3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3)
481  ghzzp4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4)
482 
483  ghzpgs2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_ZA_2)
484  ghzpgs3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_ZA_3)
485  ghzpgs4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_ZA_4)
486 
487  ghzzp1_prime = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME)
488  ghzzp1_prime2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME2)
489  ghzzp1_prime3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME3)
490  ghzzp1_prime4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME4)
491  ghzzp1_prime5 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME5)
492 
493  ghzzp2_prime = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME)
494  ghzzp2_prime2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME2)
495  ghzzp2_prime3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME3)
496  ghzzp2_prime4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME4)
497  ghzzp2_prime5 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME5)
498 
499  ghzzp3_prime = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME)
500  ghzzp3_prime2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME2)
501  ghzzp3_prime3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME3)
502  ghzzp3_prime4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME4)
503  ghzzp3_prime5 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME5)
504 
505  ghzzp4_prime = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME)
506  ghzzp4_prime2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME2)
507  ghzzp4_prime3 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME3)
508  ghzzp4_prime4 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME4)
509  ghzzp4_prime5 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME5)
510 
511  ghzpgs1_prime2 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_ZA_1_PRIME2)
512 
513  ghzzp1_prime6 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME6)
514  ghzzp1_prime7 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME7)
515  ghzzp2_prime6 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME6)
516  ghzzp2_prime7 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME7)
517  ghzzp3_prime6 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME6)
518  ghzzp3_prime7 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME7)
519  ghzzp4_prime6 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME6)
520  ghzzp4_prime7 = SelfDCoupling("selfDHzzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME7)
521 
522  ghzpzp1 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1)
523  ghzpzp2 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2)
524  ghzpzp3 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3)
525  ghzpzp4 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4)
526 
527  ghzpzp1_prime = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME)
528  ghzpzp1_prime2 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME2)
529  ghzpzp1_prime3 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME3)
530  ghzpzp1_prime4 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME4)
531  ghzpzp1_prime5 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME5)
532 
533  ghzpzp2_prime = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME)
534  ghzpzp2_prime2 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME2)
535  ghzpzp2_prime3 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME3)
536  ghzpzp2_prime4 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME4)
537  ghzpzp2_prime5 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME5)
538 
539  ghzpzp3_prime = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME)
540  ghzpzp3_prime2 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME2)
541  ghzpzp3_prime3 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME3)
542  ghzpzp3_prime4 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME4)
543  ghzpzp3_prime5 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME5)
544 
545  ghzpzp4_prime = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME)
546  ghzpzp4_prime2 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME2)
547  ghzpzp4_prime3 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME3)
548  ghzpzp4_prime4 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME4)
549  ghzpzp4_prime5 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_4_PRIME5)
550 
551  ghzpzp1_prime6 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME6)
552  ghzpzp1_prime7 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_1_PRIME7)
553  ghzpzp2_prime6 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME6)
554  ghzpzp2_prime7 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_2_PRIME7)
555  ghzpzp3_prime6 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME6)
556  ghzpzp3_prime7 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME7)
557  ghzpzp4_prime6 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME6)
558  ghzpzp4_prime7 = SelfDCoupling("selfDHzpzpcoupl", ROOT.py_gHIGGS_VV_3_PRIME7)
559 
560  ezp_El_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_El_left)
561  ezp_El_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_El_right)
562  ezp_Mu_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Mu_left)
563  ezp_Mu_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Mu_right)
564  ezp_Ta_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Ta_left)
565  ezp_Ta_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Ta_right)
566  ezp_NuE_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_NuE_left)
567  ezp_NuE_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_NuE_right)
568  ezp_Dn_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Dn_left)
569  ezp_Dn_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Dn_right)
570  ezp_Up_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Up_left)
571  ezp_Up_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Up_right)
572  ezp_Str_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Str_left)
573  ezp_Str_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Str_right)
574  ezp_Chm_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Chm_left)
575  ezp_Chm_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Chm_right)
576  ezp_Bot_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Bot_left)
577  ezp_Bot_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Bot_right)
578  ezp_Top_left = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Top_left)
579  ezp_Top_right = SelfDCoupling("selfDZpffcoupl", ROOT.py_gHIGGS_Vp_Top_right)
580 
581  ghwwp1 = SelfDCoupling("selfDHwwpcoupl", ROOT.py_gHIGGS_VV_1)
582  ghwpwp1 = SelfDCoupling("selfDHwpwpcoupl", ROOT.py_gHIGGS_VV_1)
583  ewp_El_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_El_left)
584  ewp_El_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_El_right)
585  ewp_Mu_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Mu_left)
586  ewp_Mu_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Mu_right)
587  ewp_Ta_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Ta_left)
588  ewp_Ta_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Ta_right)
589  ewp_Up_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Up_left)
590  ewp_Up_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Up_right)
591  ewp_Chm_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Chm_left)
592  ewp_Chm_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Chm_right)
593  ewp_Top_left = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Top_left)
594  ewp_Top_right = SelfDCoupling("selfDWpffcoupl", ROOT.py_gHIGGS_Vp_Top_right)
595 
596  M_Zprime = SelfDParameter("selfDM_Zprime")
597  Ga_Zprime = SelfDParameter("selfDGa_Zprime")
598  M_Wprime = SelfDParameter("selfDM_Wprime")
599  Ga_Wprime = SelfDParameter("selfDGa_Wprime")
600 
601  zprime_qq_left = SelfDCoupling("selfDZqqcoupl", ROOT.py_gZPRIME_QQ_LEFT)
602  zprime_qq_right = SelfDCoupling("selfDZqqcoupl", ROOT.py_gZPRIME_QQ_RIGHT)
603  zprime_zz_1 = SelfDCoupling("selfDZvvcoupl", ROOT.py_gZPRIME_VV_1)
604  zprime_zz_2 = SelfDCoupling("selfDZvvcoupl", ROOT.py_gZPRIME_VV_2)
605 
606  graviton_qq_left = SelfDCoupling("selfDGqqcoupl", ROOT.py_gGRAVITON_QQ_LEFT)
607  graviton_qq_right = SelfDCoupling("selfDGqqcoupl", ROOT.py_gGRAVITON_QQ_RIGHT)
608 
609  a1 = SelfDCoupling("selfDGggcoupl", ROOT.py_gGRAVITON_GG_1)
610  a2 = SelfDCoupling("selfDGggcoupl", ROOT.py_gGRAVITON_GG_2)
611  a3 = SelfDCoupling("selfDGggcoupl", ROOT.py_gGRAVITON_GG_3)
612  a4 = SelfDCoupling("selfDGggcoupl", ROOT.py_gGRAVITON_GG_4)
613  a5 = SelfDCoupling("selfDGggcoupl", ROOT.py_gGRAVITON_GG_5)
614 
615  b1 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_1)
616  b2 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_2)
617  b3 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_3)
618  b4 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_4)
619  b5 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_5)
620  b6 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_6)
621  b7 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_7)
622  b8 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_8)
623  b9 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_9)
624  b10 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_VV_10)
625 
626  bzgs1 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_ZA_1)
627  bzgs2 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_ZA_2)
628  bzgs3 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_ZA_3)
629  bzgs4 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_ZA_4)
630  bzgs8 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_ZA_8)
631 
632  bgsgs1 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_AA_1)
633  bgsgs2 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_AA_2)
634  bgsgs3 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_AA_3)
635  bgsgs4 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_AA_4)
636  bgsgs8 = SelfDCoupling("selfDGvvcoupl", ROOT.py_gGRAVITON_AA_8)
637 
638  bzzp1 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_1)
639  bzzp2 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_2)
640  bzzp3 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_3)
641  bzzp4 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_4)
642  bzzp5 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_5)
643  bzzp6 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_6)
644  bzzp7 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_7)
645  bzzp8 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_8)
646  bzzp9 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_9)
647  bzzp10 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_VV_10)
648 
649  bzpgs1 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_ZA_1)
650  bzpgs2 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_ZA_2)
651  bzpgs3 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_ZA_3)
652  bzpgs4 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_ZA_4)
653  bzpgs8 = SelfDCoupling("selfDGvvpcoupl", ROOT.py_gGRAVITON_ZA_8)
654 
655  bzpzp1 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_1)
656  bzpzp2 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_2)
657  bzpzp3 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_3)
658  bzpzp4 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_4)
659  bzpzp5 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_5)
660  bzpzp6 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_6)
661  bzpzp7 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_7)
662  bzpzp8 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_8)
663  bzpzp9 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_9)
664  bzpzp10 = SelfDCoupling("selfDGvpvpcoupl", ROOT.py_gGRAVITON_VV_10)
665 
666  dV_A = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dVA);
667  dP_A = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dPA);
668  dM_A = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dMA);
669  dFour_A = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dFourA);
670 
671  dV_Z = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dVZ);
672  dP_Z = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dPZ);
673  dM_Z = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dMZ);
674  dFour_Z = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dFourZ);
675 
676  dAAWpWm = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dAAWpWm);
677  dZAWpWm = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dZAWpWm);
678  dZZWpWm = SelfDCoupling("selfDaTQGCcoupl", ROOT.py_gATQGC_dZZWpWm);
679 
680 
681 
682 
683 def SimpleParticleCollection_t(iterable=None):
684  if iterable is None: return ROOT.SimpleParticleCollection_t()
685  result = ROOT.SimpleParticleCollection_t()
686  for _ in iterable:
687  result.push_back(SimpleParticle_t(_))
688  return result
689 
690 def SimpleParticle_t(lineorid, pxortlv=None, py=None, pz=None, e=None):
691  if pxortlv is py is pz is e is None:
692  if isinstance(lineorid, ROOT.SimpleParticle_t): return lineorid
693  if isinstance(lineorid, basestring):
694  lineorid = lineorid.split()
695  if len(lineorid) == 13:
696  id, status, mother1, mother2, color1, color2, px, py, pz, e, m, lifetime, spin = (f(_) for f, _ in zip((int, int, int, int, int, int, float, float, float, float, float, float, float), lineorid))
697  elif len(lineorid) == 5:
698  id, px, py, pz, e = (f(_) for f, _ in zip((int, float, float, float, float), lineorid))
699  elif len(lineorid) == 2:
700  id, pxortlv = lineorid
701  else:
702  raise ValueError("len(lineorid) has to be 5 or 13, not {}".format(len(lineorid)))
703  else:
704  id = lineorid
705  px = pxortlv
706 
707  if py is pz is e is None:
708  tlv = pxortlv
709  else:
710  tlv = ROOT.TLorentzVector(px, py, pz, e)
711 
712  return ROOT.SimpleParticle_t(id, tlv)
713 
714 if __name__ == "__main__":
715  m = Mela()
716  event1 = """
717 <event>
718 12 50 1.0000000E+00 1.2500000E+02 7.8125000E-03 1.2380607E-01
719  2 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 1.65430825479E+03 1.65430825479E+03 0.00000000000E+00 0.00000000000E+00 1.
720  -1 -1 0 0 0 503 0.00000000000E+00 0.00000000000E+00 -1.42857195999E+01 1.42857195999E+01 0.00000000000E+00 0.00000000000E+00 1.
721  24 2 1 2 0 0 -2.29473352103E+00 -1.04804828491E+02 4.95291431378E+02 5.12296652853E+02 7.83896718395E+01 0.00000000000E+00 1.
722  25 2 1 2 0 0 2.29473352103E+00 1.04804828491E+02 1.14473110382E+03 1.15629732154E+03 1.24999511524E+02 0.00000000000E+00 1.
723  14 1 3 3 0 0 4.42035961901E+00 -5.60456350211E+01 4.09886160671E+02 4.13723721213E+02 8.42936970218E-06 0.00000000000E+00 1.
724  -13 1 3 3 0 0 -6.71509314004E+00 -4.87591934698E+01 8.54052707068E+01 9.85729316407E+01 1.05660000144E-01 0.00000000000E+00 1.
725  23 2 4 4 0 0 -2.00748771644E+01 3.21702667586E+01 3.27018956548E+02 3.30034988785E+02 2.33188576920E+01 0.00000000000E+00 1.
726  23 2 4 4 0 0 2.23696106855E+01 7.26345617324E+01 8.17712147272E+02 8.26262332755E+02 9.09950970840E+01 0.00000000000E+00 1.
727  -11 1 7 7 0 0 -1.74223737299E+01 9.11950220870E+00 1.06644211152E+02 1.08442114510E+02 5.11001208360E-04 0.00000000000E+00 1.
728  11 1 7 7 0 0 -2.65250343458E+00 2.30507645499E+01 2.20374745396E+02 2.21592874275E+02 5.10994690391E-04 0.00000000000E+00 1.
729  -13 1 8 8 0 0 8.81223774828E+00 8.87930337607E+01 5.03683096793E+02 5.11525690007E+02 1.05660000328E-01 0.00000000000E+00 1.
730  13 1 8 8 0 0 1.35573729372E+01 -1.61584720283E+01 3.14029050479E+02 3.14736642748E+02 1.05659999907E-01 0.00000000000E+00 1.
731 </event>
732  """
733  event2 = """
734 <event>
735 12 50 1.0000000E+00 1.2500000E+02 7.8125000E-03 1.2380607E-01
736  1 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 1.58591490197E+03 1.58591490197E+03 0.00000000000E+00 0.00000000000E+00 1.
737  -1 -1 0 0 0 503 0.00000000000E+00 0.00000000000E+00 -8.99084923758E+00 8.99084923758E+00 0.00000000000E+00 0.00000000000E+00 1.
738  23 2 1 2 0 0 4.31808951699E+01 1.18843550193E+01 8.22005355890E+02 8.28398612649E+02 9.24425698805E+01 0.00000000000E+00 1.
739  25 2 1 2 0 0 -4.31808951699E+01 -1.18843550193E+01 7.54918696840E+02 7.66507138556E+02 1.25000508063E+02 0.00000000000E+00 1.
740  11 1 3 3 0 0 -1.35803884002E+01 -5.28931958672E+00 5.41360784563E+02 5.41556924907E+02 5.11072900539E-04 0.00000000000E+00 1.
741  -11 1 3 3 0 0 5.67612835701E+01 1.71736746060E+01 2.80644571326E+02 2.86841687743E+02 5.11012071458E-04 0.00000000000E+00 1.
742  23 2 4 4 0 0 -2.43038338852E+01 5.06442605250E+00 2.48359236741E+02 2.53284239962E+02 4.30612469142E+01 0.00000000000E+00 1.
743  23 2 4 4 0 0 -1.88770612847E+01 -1.69487810718E+01 5.06559460099E+02 5.13222898594E+02 7.84324703350E+01 0.00000000000E+00 1.
744  -13 1 7 7 0 0 -3.25370809281E+01 -6.79837669312E+00 2.02354268485E+02 2.05066186143E+02 1.05659999991E-01 0.00000000000E+00 1.
745  13 1 7 7 0 0 8.23324704291E+00 1.18628027456E+01 4.60049682560E+01 4.82180538193E+01 1.05659999989E-01 0.00000000000E+00 1.
746  -13 1 8 8 0 0 4.59433181687E+00 -3.18015647781E+01 4.39027117172E+02 4.40201395027E+02 1.05659999655E-01 0.00000000000E+00 1.
747  13 1 8 8 0 0 -2.34713931016E+01 1.48527837063E+01 6.75323429266E+01 7.30215035668E+01 1.05660000010E-01 0.00000000000E+00 1.
748 </event>
749  """
750  event3 = """
751 <event>
752 11 60 1.0000000E+00 1.2500000E+02 7.8125000E-03 1.2380607E-01
753  1 -1 0 0 501 0 0.00000000000E+00 0.00000000000E+00 8.38349783822E+01 8.38349783822E+01 0.00000000000E+00 0.00000000000E+00 1.
754  2 -1 0 0 502 0 0.00000000000E+00 0.00000000000E+00 -8.69647303563E+02 8.69647303563E+02 0.00000000000E+00 0.00000000000E+00 1.
755  4 1 1 2 501 0 4.93534233194E+01 -7.45486758049E+00 2.54822242213E+01 5.60417629563E+01 0.00000000000E+00 0.00000000000E+00 1.
756  1 1 1 2 502 0 -4.29482465415E+01 4.39907893858E+01 -7.51475061906E+02 7.53985749267E+02 0.00000000000E+00 0.00000000000E+00 1.
757  25 2 1 2 0 0 -6.40517677787E+00 -3.65359218053E+01 -5.98194874970E+01 1.43454769722E+02 1.25000000000E+02 0.00000000000E+00 1.
758  23 2 5 5 0 0 -1.61638014503E+01 -3.55963825472E+01 -2.51394501445E+01 1.03431837860E+02 9.24001201399E+01 0.00000000000E+00 1.
759  23 2 5 5 0 0 9.75862467247E+00 -9.39539258134E-01 -3.46800373525E+01 4.00229318615E+01 1.74073718437E+01 0.00000000000E+00 1.
760  -11 1 6 6 0 0 3.37109433312E+01 -2.97615359833E+01 4.38251799494E+00 4.51816687231E+01 5.11000134768E-04 0.00000000000E+00 1.
761  11 1 6 6 0 0 -4.98747447816E+01 -5.83484656388E+00 -2.95219681394E+01 5.82501691374E+01 5.11001208360E-04 0.00000000000E+00 1.
762  -13 1 7 7 0 0 1.46596263059E+01 5.33582780943E-01 -2.31337995488E+01 2.73929406894E+01 1.05660000000E-01 0.00000000000E+00 1.
763  13 1 7 7 0 0 -4.90100163341E+00 -1.47312203908E+00 -1.15462378037E+01 1.26299911721E+01 1.05660000000E-01 0.00000000000E+00 1.
764 </event>
765  """
766 
767  daughters = """
768  11 -71.89077865749999319 30.50307494750000004 -47.20025487019999844 91.25012710839999386
769  -11 -25.13451734110000046 -18.85931656560000036 -81.42283896300000379 87.27597887359999618
770  11 -51.80274100940000181 1.64269040236999997 -41.79162596869999646 66.57899375339999892
771  -11 -93.72924763700000028 39.45060783929999815 -92.98363978320000456 137.79506373300000632
772  """
773  associated = """
774  -1 211.33318543799998679 -14.90577872979999974 3.74371777679000006 211.89127619999999297
775  2 31.22409920730000010 -37.83127789369999761 1.23465418111000003 49.06805813689999951
776  """
777  mothers = """
778  -1 0.00000000000000000 0.00000000000000000 192.71975508899998886 192.71975508899998886
779  2 0.00000000000000000 0.00000000000000000 -451.13974271600000066 451.13974271600000066
780  """
781 
782  m.setInputEvent(
783  SimpleParticleCollection_t(line.split() for line in daughters.split("\n") if line.split()),
784  SimpleParticleCollection_t(line.split() for line in associated.split("\n") if line.split()),
785  SimpleParticleCollection_t(line.split() for line in mothers.split("\n") if line.split()),
786  True,
787  )
788  #or:
789  #m.setInputEvent_fromLHE_Hwithdecay(event1)
790 
791  couplings = (
792  (1, 0, 0, 0),
793  (0, 1, 0, 0),
794  (0, 0, 1, 0),
795  (0, 0, 0, 1),
796  (1, 1.663195, 0, 0),
797  (1, 0, 2.55502, 0),
798  (1, 0, 0, -12110.20),
799  )
800  for _ in couplings:
801  m.ghz1, m.ghz2, m.ghz4, m.ghz1_prime2 = _
802  m.setProcess(TVar.SelfDefine_spin0, TVar.JHUGen, TVar.ZZINDEPENDENT)
803  dec = m.computeP(False)
804  m.ghz1, m.ghz2, m.ghz4, m.ghz1_prime2 = _
805  m.setProcess(TVar.SelfDefine_spin0, TVar.JHUGen, TVar.Had_WH)
806  prod = m.computeProdP(False)
807  print(prod, dec, prod*dec)
808 
809  print(m.computeDecayAngles())
810  print(m.computeVBFAngles())
811  print(m.computeVBFAngles_ComplexBoost())
812  print(m.computeVHAngles(TVar.Had_WH))
813  print("propagator:")
814  print(" BW:", m.getXPropagator(TVar.FixedWidth))
815  print(" CPS:", m.getXPropagator(TVar.CPS))
816  print(m.getIORecord().getWeightedMEArray())
817  print(m.getIORecord().getUnweightedMEArray())
818  print(m.getIORecord().getPartonWeights())
mela.Mela.setInputEvent
def setInputEvent(self, daughters, associated=None, mothers=None, isGen=False)
Definition: mela.py:282
mela.Mela.__init__
def __init__(self, *args, **kwargs)
Definition: mela.py:212
mela.Mela.setInputEvent_fromLHE_StableHiggs
def setInputEvent_fromLHE_StableHiggs(self, event, isgen=False)
Definition: mela.py:293
mela.Mela.computeDijetConvBW
def computeDijetConvBW(self, useTrueBW=False)
Definition: mela.py:330
mela.SimpleParticle_t
def SimpleParticle_t(lineorid, pxortlv=None, py=None, pz=None, e=None)
Definition: mela.py:690
mela.Mela.__setattr__
def __setattr__(self, name, value)
Definition: mela.py:271
mela.Mela.VHAngles
VHAngles
Definition: mela.py:316
mela.SimpleParticleCollection_t
def SimpleParticleCollection_t(iterable=None)
Definition: mela.py:683
mela.Mela.VBFAngles
VBFAngles
Definition: mela.py:310
pythonmelautils.SelfDCoupling
Definition: pythonmelautils.py:178
mela.Mela.computePM4l
def computePM4l(self, syst)
Definition: mela.py:325
mela.Mela.getIORecord
def getIORecord(self)
Definition: mela.py:332
mela.Mela.computeD_CP
def computeD_CP(self, myME, myType)
Definition: mela.py:320
mela.Mela.doneinit
bool doneinit
Definition: mela.py:51
mela.Mela.counter
int counter
Definition: mela.py:50
mela.Mela.MelaIO
Definition: mela.py:334
mela.Mela.MelaIO.getWeightedMEArray
def getWeightedMEArray(self)
Definition: mela.py:339
mela.Mela
Definition: mela.py:49
mela.Mela.computeVBFAngles_ComplexBoost
def computeVBFAngles_ComplexBoost(self)
Definition: mela.py:312
mela.Mela.computeDecayAngles
def computeDecayAngles(self)
Definition: mela.py:309
mela.Mela.computeVHAngles
def computeVHAngles(self, prod)
Definition: mela.py:317
mela.Mela.setInputEvent_fromLHE_JHUGenVBFVH
def setInputEvent_fromLHE_JHUGenVBFVH(self, event, isgen=False)
Definition: mela.py:297
mela.Mela.computeP
def computeP(self, useConstant=True)
Definition: mela.py:319
mela.Mela.computeVBFAngles
def computeVBFAngles(self)
Definition: mela.py:311
mela.Mela.computeProdP_ttH
def computeProdP_ttH(self, topProcess=2, topDecay=0, useConstant=True)
Definition: mela.py:328
mela.Mela.computeptemplate
string computeptemplate
Definition: mela.py:52
mela.Mela.MelaIO.__getattr__
def __getattr__(self, attr)
Definition: mela.py:337
mela.Mela.MelaIO.getPartonWeights
def getPartonWeights(self)
Definition: mela.py:345
mela.Mela.__getattr__
def __getattr__(self, name)
Definition: mela.py:268
mela.Mela.computeProdDecP
def computeProdDecP(self, useConstant=True)
Definition: mela.py:322
mela.Mela.getPAux
def getPAux(self)
Definition: mela.py:306
mela.Mela.index
index
Definition: mela.py:214
mela.Mela.computeD_gg
def computeD_gg(self, myME, myType)
Definition: mela.py:326
mela.Mela.DecayAngles
DecayAngles
Definition: mela.py:308
mela.Mela.getConstant
def getConstant(self)
Definition: mela.py:329
mela.Mela.setInputEvent_fromLHE_JHUGenttH
def setInputEvent_fromLHE_JHUGenttH(self, event, isgen=False)
Definition: mela.py:301
pythonmelautils.MultiDimensionalCppArray
Definition: pythonmelautils.py:57
mela.Mela.getXPropagator
def getXPropagator(self, scheme)
Definition: mela.py:324
mela.Mela.MelaIO.getUnweightedMEArray
def getUnweightedMEArray(self)
Definition: mela.py:342
mela.Mela.MelaIO.__melaio
__melaio
Definition: mela.py:336
mela.Mela.computeProdP
def computeProdP(self, useConstant=True)
Definition: mela.py:321
mela.Mela.compute4FermionWeight
def compute4FermionWeight(self)
Definition: mela.py:323
testME_all.type
type
Definition: testME_all.py:13
mela.Mela.computeProdP_VH
def computeProdP_VH(self, includeHiggsDecay=False, useConstant=True)
Definition: mela.py:327
globalc::f
double complex, dimension(2) f
Definition: reductionC.F90:50
mela.Mela.setInputEvent_fromLHE_Hwithdecay
def setInputEvent_fromLHE_Hwithdecay(self, event, isgen=False)
Definition: mela.py:289
pythonmelautils.SelfDParameter
Definition: pythonmelautils.py:158
mela.Mela.MelaIO.__init__
def __init__(self, cppmelaio)
Definition: mela.py:335
mela.Mela.__mela
__mela
Definition: mela.py:213