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.
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RooSpinTwo_7DComplex_ppHVV Class Reference

#include <RooSpinTwo_7DComplex_ppHVV.h>

Inheritance diagram for RooSpinTwo_7DComplex_ppHVV:
Inheritance graph
[legend]
Collaboration diagram for RooSpinTwo_7DComplex_ppHVV:
Collaboration graph
[legend]

Public Member Functions

 RooSpinTwo_7DComplex_ppHVV ()
 
 RooSpinTwo_7DComplex_ppHVV (const char *name, const char *title, modelMeasurables const &_measurables, modelParameters const &_parameters, modelCouplings const &_couplings, RooSpin::VdecayType _Vdecay1=RooSpin::kVdecayType_Zll, RooSpin::VdecayType _Vdecay2=RooSpin::kVdecayType_Zll, TVar::VerbosityLevel verbosity_=TVar::ERROR)
 
 RooSpinTwo_7DComplex_ppHVV (const RooSpinTwo_7DComplex_ppHVV &other, const char *name=0)
 
virtual TObject * clone (const char *newname) const
 
virtual ~RooSpinTwo_7DComplex_ppHVV ()
 
Double_t evaluate () const
 
Int_t getAnalyticalIntegral (RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=0) const
 
Double_t analyticalIntegral (Int_t code, const char *rangeName=0) const
 
void setZZ4fOrdering (Bool_t flag=true)
 
- Public Member Functions inherited from RooSpinTwo
 RooSpinTwo ()
 
 RooSpinTwo (const char *name, const char *title, modelMeasurables const &_measurables, modelParameters const &_parameters, modelCouplings const &_couplings, RooSpin::VdecayType _Vdecay1=RooSpin::kVdecayType_Zll, RooSpin::VdecayType _Vdecay2=RooSpin::kVdecayType_Zll, TVar::VerbosityLevel verbosity_=TVar::ERROR)
 
 RooSpinTwo (const RooSpinTwo &other, const char *name=0)
 
virtual ~RooSpinTwo ()
 
virtual void printParameters () const
 
- Public Member Functions inherited from RooSpin
 RooSpin ()
 
 RooSpin (const char *name, const char *title, modelMeasurables const &_measurables, modelParameters const &_parameters, RooSpin::VdecayType _Vdecay1=RooSpin::kVdecayType_Zll, RooSpin::VdecayType _Vdecay2=RooSpin::kVdecayType_Zll, TVar::VerbosityLevel verbosity_=TVar::ERROR)
 
 RooSpin (const RooSpin &other, const char *name=0)
 
virtual ~RooSpin ()
 
void setVerbosity (TVar::VerbosityLevel verbosity_)
 
virtual void setDecayModes (RooSpin::VdecayType Vdecay1_, RooSpin::VdecayType Vdecay2_)
 
virtual void getMVGamV (Double_t *mV=0, Double_t *gamV=0) const
 
virtual void getMVprimeGamVprime (Double_t *mV=0, Double_t *gamV=0) const
 
virtual void defaultIntegration ()
 
virtual void alwaysIntegrate (Int_t code=1)
 

Protected Member Functions

Double_t evaluateHSFactor (Int_t di, Int_t dj, Int_t code) const
 
Double_t evaluateH1Factor (Int_t i1, Int_t j1, Int_t helicity, Int_t code) const
 
Double_t evaluateH2Factor (Int_t i2, Int_t j2, Int_t helicity, Int_t code) const
 
Double_t evaluatePhi1PhiFactor (Int_t i1, Int_t i2, Int_t j1, Int_t j2, Int_t code, Double_t extraPhase1, Double_t extraPhase2) const
 
void evaluatePolarizationTerms (std::vector< Double_t > &Axxyyterm, const Int_t code, bool isGammaV1=false, bool isGammaV2=false) const
 
- Protected Member Functions inherited from RooSpinTwo
virtual void calculateCi (std::vector< Double_t > &ciRe, std::vector< Double_t > &ciIm, bool isGammaV1=false, bool isGammaV2=false) const
 
virtual void calculateAmplitudes (Double_t &A00Re, Double_t &A00Im, Double_t &AppRe, Double_t &AppIm, Double_t &A0pRe, Double_t &A0pIm, Double_t &Ap0Re, Double_t &Ap0Im, Double_t &AmmRe, Double_t &AmmIm, Double_t &A0mRe, Double_t &A0mIm, Double_t &Am0Re, Double_t &Am0Im, Double_t &ApmRe, Double_t &ApmIm, Double_t &AmpRe, Double_t &AmpIm, bool isGammaV1=false, bool isGammaV2=false) const
 
- Protected Member Functions inherited from RooSpin
virtual void calculatePropagator (Double_t &propRe, Double_t &propIm, Double_t mass, Int_t propType=1) const
 
virtual void calculateVffGVGA (Double_t &gV, Double_t &gA, RooSpin::VdecayType Vdecay, bool isGamma=false) const
 
virtual void calculateVffR1R2 (Double_t &R1Val, Double_t &R2Val, bool isGammaV1=false, bool isGammaV2=false) const
 
virtual Double_t calculateAmplitudeScale (int VGammaVpmode1=0, int VGammaVpmode2=0) const
 
virtual void calculateVprimeffGVGA (Double_t &gV, Double_t &gA, int whichVprime) const
 
virtual void calculateVprimeffR1R2 (Double_t &R1Val, Double_t &R2Val) const
 
virtual void setProxies (modelMeasurables _measurables)
 
virtual void setProxy (RooRealProxy &proxy, RooAbsReal *objectPtr)
 
virtual Bool_t checkFundamentalType (const RooRealProxy &proxy) const
 
virtual Bool_t computeNeededAmplitude (int, int) const
 

Protected Attributes

Bool_t ZZ4fOrdering
 
- Protected Attributes inherited from RooSpinTwo
RooRealProxy b1Val
 
RooRealProxy b2Val
 
RooRealProxy b3Val
 
RooRealProxy b4Val
 
RooRealProxy b5Val
 
RooRealProxy b6Val
 
RooRealProxy b7Val
 
RooRealProxy b8Val
 
RooRealProxy b9Val
 
RooRealProxy b10Val
 
RooRealProxy b1ValIm
 
RooRealProxy b2ValIm
 
RooRealProxy b3ValIm
 
RooRealProxy b4ValIm
 
RooRealProxy b5ValIm
 
RooRealProxy b6ValIm
 
RooRealProxy b7ValIm
 
RooRealProxy b8ValIm
 
RooRealProxy b9ValIm
 
RooRealProxy b10ValIm
 
RooRealProxy Lambda
 
RooRealProxy f_spinz1
 
RooRealProxy f_spinz2
 
- Protected Attributes inherited from RooSpin
RooRealProxy h1
 
RooRealProxy h2
 
RooRealProxy Phi
 
RooRealProxy m1
 
RooRealProxy m2
 
RooRealProxy m12
 
RooRealProxy hs
 
RooRealProxy Phi1
 
RooRealProxy Y
 
RooRealProxy mX
 
RooRealProxy gamX
 
RooRealProxy mW
 
RooRealProxy gamW
 
RooRealProxy mZ
 
RooRealProxy gamZ
 
RooRealProxy mWprime
 
RooRealProxy gamWprime
 
RooRealProxy mZprime
 
RooRealProxy gamZprime
 
RooRealProxy Sin2ThetaW
 
RooRealProxy vev
 
RooRealProxy gVprimeff_decay1_left
 
RooRealProxy gVprimeff_decay1_right
 
RooRealProxy gVprimeff_decay2_left
 
RooRealProxy gVprimeff_decay2_right
 
RooSpin::VdecayType Vdecay1
 
RooSpin::VdecayType Vdecay2
 
Int_t intCodeStart
 
TVar::VerbosityLevel verbosity
 

Additional Inherited Members

- Public Types inherited from RooSpin
enum  VdecayType {
  kVdecayType_Wany =-1, kVdecayType_GammaOnshell =0, kVdecayType_Zll =1, kVdecayType_Znn =2,
  kVdecayType_Zuu =3, kVdecayType_Zdd =4, kVdecayType_Zud =5
}
 
enum  {
  prime_h1 =2, prime_h2 =3, prime_hs =5, prime_Phi =7,
  prime_Phi1 =11, prime_m1 =13, prime_m2 =17, prime_m12 =19,
  prime_Y =23
}
 
- Static Protected Attributes inherited from RooSpin
static constexpr Double_t GeVunit =1e-2
 

Detailed Description

Definition at line 7 of file RooSpinTwo_7DComplex_ppHVV.h.

Constructor & Destructor Documentation

◆ RooSpinTwo_7DComplex_ppHVV() [1/3]

RooSpinTwo_7DComplex_ppHVV::RooSpinTwo_7DComplex_ppHVV ( )

Definition at line 8 of file RooSpinTwo_7DComplex_ppHVV.cc.

8 : RooSpinTwo(){}

◆ RooSpinTwo_7DComplex_ppHVV() [2/3]

RooSpinTwo_7DComplex_ppHVV::RooSpinTwo_7DComplex_ppHVV ( const char *  name,
const char *  title,
modelMeasurables const &  _measurables,
modelParameters const &  _parameters,
modelCouplings const &  _couplings,
RooSpin::VdecayType  _Vdecay1 = RooSpin::kVdecayType_Zll,
RooSpin::VdecayType  _Vdecay2 = RooSpin::kVdecayType_Zll,
TVar::VerbosityLevel  verbosity_ = TVar::ERROR 
)

Definition at line 9 of file RooSpinTwo_7DComplex_ppHVV.cc.

16  : RooSpinTwo(
17  name, title,
18  _measurables,
19  _parameters,
20  _couplings,
21  _Vdecay1, _Vdecay2,
22  verbosity_
23 ),
24 ZZ4fOrdering(true)
25 {}

◆ RooSpinTwo_7DComplex_ppHVV() [3/3]

RooSpinTwo_7DComplex_ppHVV::RooSpinTwo_7DComplex_ppHVV ( const RooSpinTwo_7DComplex_ppHVV other,
const char *  name = 0 
)

Definition at line 28 of file RooSpinTwo_7DComplex_ppHVV.cc.

30  : RooSpinTwo(other, name),
32 {}

◆ ~RooSpinTwo_7DComplex_ppHVV()

virtual RooSpinTwo_7DComplex_ppHVV::~RooSpinTwo_7DComplex_ppHVV ( )
inlinevirtual

Definition at line 21 of file RooSpinTwo_7DComplex_ppHVV.h.

21 {}

Member Function Documentation

◆ analyticalIntegral()

Double_t RooSpinTwo_7DComplex_ppHVV::analyticalIntegral ( Int_t  code,
const char *  rangeName = 0 
) const
virtual

Implements RooSpinTwo.

Definition at line 341 of file RooSpinTwo_7DComplex_ppHVV.cc.

341  {
342  Double_t mV;
343  getMVGamV(&mV);
344  bool isZZ = (mV >= 90.);
345  Double_t epsilon=1e-10;
346  Double_t m1_=m1; if (Vdecay1==RooSpin::kVdecayType_GammaOnshell) m1_=0;
347  Double_t m2_=m2; if (Vdecay2==RooSpin::kVdecayType_GammaOnshell) m2_=0;
348  if (
349  (m1_+m2_)>m12 ||
350  (isZZ && Vdecay1==Vdecay2 && ZZ4fOrdering && fabs(m2_-mV)<fabs(m1_-mV) && Vdecay2!=RooSpin::kVdecayType_GammaOnshell) ||
353  ) return epsilon;
354 
355  Double_t betaValSq = (1.-(pow(m1_-m2_, 2)/pow(m12, 2)))*(1.-(pow(m1_+m2_, 2)/pow(m12, 2)));
356  if (betaValSq<=0.) return epsilon;
357  Double_t betaVal = sqrt(betaValSq);
358 
359  Double_t term1Coeff = 1;
360  Double_t term2Coeff = 1;
361  if (Vdecay1!=RooSpin::kVdecayType_GammaOnshell) term1Coeff = 2.*m1_*GeVunit;
362  if (Vdecay2!=RooSpin::kVdecayType_GammaOnshell) term2Coeff = 2.*m2_*GeVunit;
363 
364  std::vector<Double_t> Axxyyterm;
365  evaluatePolarizationTerms(Axxyyterm, code);
366  Double_t value = 0;
367  for (unsigned int s=0; s<Axxyyterm.size(); s++) value += Axxyyterm.at(s);
368  value *= term1Coeff*term2Coeff*betaVal;
369 
370  if (!(value==value)){
371  MELAout << "Integral NaN=" << value << " at "
372  << "h1=" << h1 << '\t'
373  << "h2=" << h2 << '\t'
374  << "hs=" << hs << '\t'
375  << "Phi1=" << Phi1 << '\t'
376  << "Phi=" << Phi << '\t'
377  << "m1=" << m1_ << '\t'
378  << "m2=" << m2_ << '\t'
379  << "m12=" << m12 << '\t'
380  << endl;
381  MELAout << "Possible sources:\n"
382  << "betaVal=" << betaVal << '\t'
383  << "term1Coeff=" << term1Coeff << '\t'
384  << "term2Coeff=" << term2Coeff << '\t'
385  << endl;
386  }
387  if (value<=0.){
388  MELAout << "Evaluated integral<=0: " << value << endl;
389  value=epsilon;
390  }
391  return value;
392 }

◆ clone()

virtual TObject* RooSpinTwo_7DComplex_ppHVV::clone ( const char *  newname) const
inlinevirtual

Implements RooSpinTwo.

Definition at line 20 of file RooSpinTwo_7DComplex_ppHVV.h.

20 { return new RooSpinTwo_7DComplex_ppHVV(*this, newname); }

◆ evaluate()

Double_t RooSpinTwo_7DComplex_ppHVV::evaluate ( ) const
virtual

Implements RooSpinTwo.

Definition at line 286 of file RooSpinTwo_7DComplex_ppHVV.cc.

286  {
287  Double_t mV;
288  getMVGamV(&mV);
289  bool isZZ = (mV >= 90.);
290  Double_t epsilon=1e-15;
291  Double_t m1_=m1; if (Vdecay1==RooSpin::kVdecayType_GammaOnshell) m1_=0;
292  Double_t m2_=m2; if (Vdecay2==RooSpin::kVdecayType_GammaOnshell) m2_=0;
293  if (
294  (m1_+m2_)>m12 ||
295  (isZZ && Vdecay1==Vdecay2 && ZZ4fOrdering && fabs(m2_-mV)<fabs(m1_-mV) && Vdecay2!=RooSpin::kVdecayType_GammaOnshell) ||
298  ) return epsilon;
299 
300  Int_t code = intCodeStart;
302  code *= prime_Phi;
306  }
307 
308  Double_t betaValSq = (1.-(pow(m1_-m2_, 2)/pow(m12, 2)))*(1.-(pow(m1_+m2_, 2)/pow(m12, 2)));
309  if (betaValSq<=0.) return epsilon;
310  Double_t betaVal = sqrt(betaValSq);
311 
312  Double_t term1Coeff = 1;
313  Double_t term2Coeff = 1;
314  if (Vdecay1!=RooSpin::kVdecayType_GammaOnshell) term1Coeff = 2.*m1_*GeVunit;
315  if (Vdecay2!=RooSpin::kVdecayType_GammaOnshell) term2Coeff = 2.*m2_*GeVunit;
316 
317  std::vector<Double_t> Axxyyterm;
318  evaluatePolarizationTerms(Axxyyterm, code);
319  Double_t value = 0;
320  for (unsigned int s=0; s<Axxyyterm.size(); s++) value += Axxyyterm.at(s);
321  value *= term1Coeff*term2Coeff*betaVal;
322 
323  if (!(value==value)) MELAout << "Evaluate NaN=" << value << endl;
324  if (value<=0.){
325  MELAout << "Evaluated value<=0: " << value << endl;
326  value=epsilon;
327  }
328  return value;
329 }

◆ evaluateH1Factor()

Double_t RooSpinTwo_7DComplex_ppHVV::evaluateH1Factor ( Int_t  i1,
Int_t  j1,
Int_t  helicity,
Int_t  code 
) const
protected

Definition at line 35 of file RooSpinTwo_7DComplex_ppHVV.cc.

35  {
36  const Double_t Pi = TMath::Pi();
37  Double_t dHel = (Double_t)helicity;
38  Double_t result = 0;
39  if ((code % prime_h1)==0){
40  if ((i1==0 && j1==0) || (i1==-1 && j1==1) || (i1==1 && j1==-1)) result = 4./3.; // 15 amps
41  else if (i1==1 && j1==1) result = 8./3.; // 6 amps
42  else if (i1==-1 && j1==-1) result = 8./3.; // 6 amps
43  else if ((i1==0 && j1==1) || (i1==1 && j1==0)) result = Pi*dHel/2.; // 9 amps
44  else if ((i1==0 && j1==-1) || (i1==-1 && j1==0)) result = Pi*dHel/2.; // 9 amps
45  }
46  else{
47  if ((i1==0 && j1==0) || (i1==-1 && j1==1) || (i1==1 && j1==-1)) result = 1.-pow(h1, 2); // 15 amps
48  else if (i1==1 && j1==1) result = 1.+pow(h1, 2)-2.*h1*dHel; // 6 amps
49  else if (i1==-1 && j1==-1) result = 1.+pow(h1, 2)+2.*h1*dHel; // 6 amps
50  else if ((i1==0 && j1==1) || (i1==1 && j1==0)) result = sqrt(fabs(1.-pow(h1, 2)))*(dHel-h1); // 9 amps
51  else if ((i1==0 && j1==-1) || (i1==-1 && j1==0)) result = sqrt(fabs(1.-pow(h1, 2)))*(dHel+h1); // 9 amps
52  }
53  return result;
54 }

◆ evaluateH2Factor()

Double_t RooSpinTwo_7DComplex_ppHVV::evaluateH2Factor ( Int_t  i2,
Int_t  j2,
Int_t  helicity,
Int_t  code 
) const
protected

Definition at line 55 of file RooSpinTwo_7DComplex_ppHVV.cc.

55  {
56  const Double_t Pi = TMath::Pi();
57  Double_t dHel = (Double_t)helicity;
58  Double_t result = 0;
59  if ((code % prime_h2)==0){
60  if ((i2==0 && j2==0) || (i2==-1 && j2==1) || (i2==1 && j2==-1)) result = 4./3.; // 15 amps
61  else if (i2==1 && j2==1) result = 8./3.; // 6 amps
62  else if (i2==-1 && j2==-1) result = 8./3.; // 6 amps
63  else if ((i2==0 && j2==1) || (i2==1 && j2==0)) result = Pi*dHel/2.; // 9 amps
64  else if ((i2==0 && j2==-1) || (i2==-1 && j2==0)) result = Pi*dHel/2.; // 9 amps
65  }
66  else{
67  if ((i2==0 && j2==0) || (i2==-1 && j2==1) || (i2==1 && j2==-1)) result = 1.-pow(h2, 2); // 15 amps
68  else if (i2==1 && j2==1) result = 1.+pow(h2, 2)-2.*h2*dHel; // 6 amps
69  else if (i2==-1 && j2==-1) result = 1.+pow(h2, 2)+2.*h2*dHel; // 6 amps
70  else if ((i2==0 && j2==1) || (i2==1 && j2==0)) result = sqrt(fabs(1.-pow(h2, 2)))*(dHel-h2); // 9 amps
71  else if ((i2==0 && j2==-1) || (i2==-1 && j2==0)) result = sqrt(fabs(1.-pow(h2, 2)))*(dHel+h2); // 9 amps
72  }
73  return result;
74 }

◆ evaluateHSFactor()

Double_t RooSpinTwo_7DComplex_ppHVV::evaluateHSFactor ( Int_t  di,
Int_t  dj,
Int_t  code 
) const
protected

Definition at line 75 of file RooSpinTwo_7DComplex_ppHVV.cc.

75  {
76  Double_t f_spinz0 = 1. - f_spinz1 - f_spinz2;
77  if (f_spinz0<0.) f_spinz0=0;
78  Double_t hsneg = -hs; if (fabs(hsneg)>1.) hsneg *= 1./fabs(hsneg);
79 
80  Double_t AF200 = 0;
81  Double_t AF201 = 0;
82  Double_t AF202 = 0;
83  Double_t AF211 = 0;
84  Double_t AF2m11 = 0;
85  Double_t AF212 = 0;
86  Double_t AF2m12 = 0;
87  Double_t AF222 = 0;
88  Double_t AF2m22 = 0;
89  if ((code % prime_hs)==0){
90  AF200 = 2.*((2.*f_spinz0 + 3.*f_spinz2) - 6.*(2.*f_spinz0 - 2.*f_spinz1 + f_spinz2)/3. +3.*(6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)/5.)/8.; // 6
91  //AF201 = 0; // 12
92  AF202 = ((2.*f_spinz0 - f_spinz2)*(4./3.) - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*(4./15.))*(-sqrt(3./2.)/8.); // 6
93 
94  AF211 = 2.*((f_spinz1 + f_spinz2) + 3.*(2.*f_spinz0 - f_spinz1)/3. - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)/5.)/4.; // 6
95  AF2m11 = ((f_spinz1 - f_spinz2)*(4./3.) + (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*(4./15.))/(-4.); // 4
96 
97  //AF212 = 0; // 4
98  //AF2m12 = 0; // 4
99 
100  AF222 = 2.*((6.*f_spinz0 + 4.*f_spinz1 + f_spinz2) - 6.*(2.*f_spinz0 - f_spinz2)/3. + (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)/5.)/16.; // 2
101  AF2m22 = 16./15.*(6*f_spinz0 - 4*f_spinz1 + f_spinz2)/16.; // 1
102  }
103  else{
104  AF200 = ((2.*f_spinz0 + 3.*f_spinz2) - 6.*(2.*f_spinz0 - 2.*f_spinz1 + f_spinz2)*pow(hsneg, 2) +3.*(6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 4))/8.; // 6 // F(2)00
105  AF201 = (hsneg*sqrt(1 - pow(hsneg, 2))*((2.*f_spinz0 - 2.*f_spinz1 + f_spinz2) - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 2)))*(-sqrt(6.)/8.); // 12 // F(2)01
106  AF202 = ((1. - pow(hsneg, 2))*((2.*f_spinz0 - f_spinz2) - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 2)))*(-sqrt(3./2.)/8.); // 6 // F(2)02
107 
108  AF211 = ((f_spinz1 + f_spinz2) + 3.*(2.*f_spinz0 - f_spinz1)*pow(hsneg, 2) - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 4))/4.; // 6 // F(2)11
109  AF2m11 = ((1. - pow(hsneg, 2))*((f_spinz1 - f_spinz2) + (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 2)))/(-4.); // 4 // F(2)-11
110 
111  AF212 = (hsneg*sqrt(1 - pow(hsneg, 2))*((6.*f_spinz0 - 3.*f_spinz2) - (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 2)))/(-8.); // 4 // F(2)12
112  AF2m12 = ((6*f_spinz0 - 4*f_spinz1 + f_spinz2)*hsneg*pow(1. - pow(hsneg, 2), 1.5))/(-8.); // 4 // F(2)-12
113 
114  AF222 = ((6.*f_spinz0 + 4.*f_spinz1 + f_spinz2) - 6.*(2.*f_spinz0 - f_spinz2)*pow(hsneg, 2) + (6.*f_spinz0 - 4.*f_spinz1 + f_spinz2)*pow(hsneg, 4))/16.; // 2 // F(2)22
115  AF2m22 = ((6*f_spinz0 - 4*f_spinz1 + f_spinz2)*pow(1. - pow(hsneg, 2), 2))/16.; // 1 // F(2)-22
116  }
117 
118  Double_t result = 0;
119  if (di==0 && dj==0) result = AF200;
120  else if ((di==1 && dj==1) || (di==-1 && dj==-1)) result = AF211;
121  else if ((di==2 && dj==2) || (di==-2 && dj==-2)) result = AF222;
122 
123  else if ((di==1 && dj==0) || (di==0 && dj==1)) result = AF201;
124  else if ((di==-1 && dj==0) || (di==0 && dj==-1)) result = -AF201;
125  else if ((di==1 && dj==2) || (di==2 && dj==1)) result = AF212;
126  else if ((di==-1 && dj==-2) || (di==-2 && dj==-1)) result = -AF212;
127 
128  else if ((di==2 && dj==0) || (di==0 && dj==2) || (di==-2 && dj==0) || (di==0 && dj==-2)) result = AF202;
129  else if ((di==1 && dj==-1) || (di==-1 && dj==1)) result = AF2m11;
130 
131  else if ((di==-1 && dj==2) || (di==2 && dj==-1)) result = AF2m12;
132  else if ((di==-2 && dj==1) || (di==1 && dj==-2)) result = -AF2m12;
133 
134  else if ((di==-2 && dj==2) || (di==2 && dj==-2)) result = AF2m22;
135  return result;
136 }

◆ evaluatePhi1PhiFactor()

Double_t RooSpinTwo_7DComplex_ppHVV::evaluatePhi1PhiFactor ( Int_t  i1,
Int_t  i2,
Int_t  j1,
Int_t  j2,
Int_t  code,
Double_t  extraPhase1,
Double_t  extraPhase2 
) const
protected

Definition at line 137 of file RooSpinTwo_7DComplex_ppHVV.cc.

137  {
138  const Double_t Pi = TMath::Pi();
139 
140  Double_t result = 0;
141  Double_t phase = 0;
142  Double_t phasePhi = 0;
143  Double_t phasePhi1 = 0;
144 
145  phasePhi1 += -i1;
146  phasePhi1 += i2;
147  phasePhi += i2;
148 
149  phasePhi1 += j1;
150  phasePhi1 += -j2;
151  phasePhi += -j2;
152 
153  if ((code % prime_Phi)==0 && (code % prime_Phi1)==0){
154  if (i1==j1 && i2==j2) result = 4.*pow(Pi, 2);
155  // Everything else is 0!
156  }
157  else if ((code % prime_Phi)==0){
158  if (i1==j1 && i2==j2) result = 2.*Pi;
159  else if (phasePhi==0.){
160  phase = Phi1*phasePhi1+extraPhase1-extraPhase2;
161  result = cos(phase)*2.*Pi;
162  }
163  }
164  else if ((code % prime_Phi1)==0){
165  if (i1==j1 && i2==j2) result = 2.*Pi;
166  else if (phasePhi1==0.){
167  phase = Phi*phasePhi+extraPhase1-extraPhase2;
168  result = cos(phase)*2.*Pi;
169  }
170  }
171  else{
172  phase = Phi1*phasePhi1+Phi*phasePhi+extraPhase1-extraPhase2;
173  result = cos(phase);
174  }
175  return result;
176 }

◆ evaluatePolarizationTerms()

void RooSpinTwo_7DComplex_ppHVV::evaluatePolarizationTerms ( std::vector< Double_t > &  Axxyyterm,
const Int_t  code,
bool  isGammaV1 = false,
bool  isGammaV2 = false 
) const
protectedvirtual

Implements RooSpinTwo.

Definition at line 178 of file RooSpinTwo_7DComplex_ppHVV.cc.

178  {
179  Double_t R1Val, R2Val;
180  calculateVffR1R2(R1Val, R2Val, isGammaV1, isGammaV2);
181 
182  Double_t
183  A00Re, A00Im,
184  AppRe, AppIm,
185  A0pRe, A0pIm, Ap0Re, Ap0Im,
186  AmmRe, AmmIm, A0mRe, A0mIm, Am0Re, Am0Im,
187  ApmRe, ApmIm, AmpRe, AmpIm;
188 
190  A00Re, A00Im,
191  AppRe, AppIm,
192  A0pRe, A0pIm, Ap0Re, Ap0Im,
193  AmmRe, AmmIm, A0mRe, A0mIm, Am0Re, Am0Im,
194  ApmRe, ApmIm, AmpRe, AmpIm,
195  isGammaV1, isGammaV2
196  );
197 
198  std::vector<Double_t> ARexy, AImxy;
199  std::vector<Int_t> index_x,index_y;
200  ARexy.push_back(AmmRe);
201  ARexy.push_back(Am0Re);
202  ARexy.push_back(AmpRe);
203  ARexy.push_back(A0mRe);
204  ARexy.push_back(A00Re);
205  ARexy.push_back(A0pRe);
206  ARexy.push_back(ApmRe);
207  ARexy.push_back(Ap0Re);
208  ARexy.push_back(AppRe);
209  AImxy.push_back(AmmIm);
210  AImxy.push_back(Am0Im);
211  AImxy.push_back(AmpIm);
212  AImxy.push_back(A0mIm);
213  AImxy.push_back(A00Im);
214  AImxy.push_back(A0pIm);
215  AImxy.push_back(ApmIm);
216  AImxy.push_back(Ap0Im);
217  AImxy.push_back(AppIm);
218  index_x.push_back(-1);
219  index_x.push_back(-1);
220  index_x.push_back(-1);
221  index_x.push_back(0);
222  index_x.push_back(0);
223  index_x.push_back(0);
224  index_x.push_back(1);
225  index_x.push_back(1);
226  index_x.push_back(1);
227  index_y.push_back(-1);
228  index_y.push_back(0);
229  index_y.push_back(1);
230  index_y.push_back(-1);
231  index_y.push_back(0);
232  index_y.push_back(1);
233  index_y.push_back(-1);
234  index_y.push_back(0);
235  index_y.push_back(1);
236 
237  for (unsigned int ii=0; ii<index_x.size(); ii++){
238  Int_t i1 = index_x.at(ii);
239  Int_t i2 = index_y.at(ii);
240  Int_t i12 = i1-i2;
241  Double_t ARexyi = ARexy.at(ii);
242  Double_t AImxyi = AImxy.at(ii);
243 
244  Double_t Axyi = sqrt(ARexyi*ARexyi + AImxyi*AImxyi);
245  Double_t phixyi = atan2(AImxyi, ARexyi);
246 
247  for (unsigned int jj=ii; jj<index_x.size(); jj++){
248  Int_t j1 = index_x.at(jj);
249  Int_t j2 = index_y.at(jj);
250  Int_t j12 = j1-j2;
251  Double_t ARexyj = ARexy.at(jj);
252  Double_t AImxyj = AImxy.at(jj);
253 
254  Double_t Axyj = sqrt(ARexyj*ARexyj + AImxyj*AImxyj);
255  Double_t phixyj = atan2(AImxyj, ARexyj);
256 
257  Double_t globalFactor = 1;
258  if (ii!=jj) globalFactor = 2;
259  Double_t phifactor = evaluatePhi1PhiFactor(i1, i2, j1, j2, code, phixyi, phixyj);
260  if (phifactor==0) continue;
261  Double_t h1h2factor[4]={ 0 };
262  for (int ih1=0; ih1<2; ih1++){ // (LL, LR), (RL, RR)
263  Int_t hh1 = 1-2*ih1; // L/R
264  Double_t h1factor = evaluateH1Factor(i1, j1, hh1, code);
265  for (int ih2=0; ih2<2; ih2++){
266  Int_t hh2 = 1-2*ih2; // L/R
267  Double_t h2factor = evaluateH2Factor(i2, j2, hh2, code);
268 
269  Double_t fraction = (1.+((Double_t)hh1)*R1Val+((Double_t)hh2)*R2Val+((Double_t)hh1)*R1Val*((Double_t)hh2)*R2Val)/4.;
270  h1h2factor[2*ih1+ih2] = fraction*h1factor*h2factor;
271  }
272  }
273  Double_t hsfactor=evaluateHSFactor(i12, j12, code);
274 
275  globalFactor *= Axyi*Axyj*phifactor*hsfactor;
276  Double_t result = 0;
277  for (int ih1=0; ih1<2; ih1++){ // (LL, LR), (RL, RR)
278  for (int ih2=0; ih2<2; ih2++) result += globalFactor*h1h2factor[2*ih1+ih2];
279  }
280  if (result!=0.) Axxyyterm.push_back(result);
281  }
282  }
283  return;
284 }

◆ getAnalyticalIntegral()

Int_t RooSpinTwo_7DComplex_ppHVV::getAnalyticalIntegral ( RooArgSet &  allVars,
RooArgSet &  analVars,
const char *  rangeName = 0 
) const
virtual

Implements RooSpinTwo.

Definition at line 331 of file RooSpinTwo_7DComplex_ppHVV.cc.

331  {
332  Int_t code = intCodeStart;
333  if (checkFundamentalType(h1)){ if (matchArgs(allVars, analVars, h1) || Vdecay1==RooSpin::kVdecayType_GammaOnshell) code *= prime_h1; }
334  if (checkFundamentalType(h2)){ if (matchArgs(allVars, analVars, h2) || Vdecay2==RooSpin::kVdecayType_GammaOnshell) code *= prime_h2; }
335  if (checkFundamentalType(hs)){ if (matchArgs(allVars, analVars, hs)) code *= prime_hs; }
338  if (code==1) code=0;
339  return code;
340 }

◆ setZZ4fOrdering()

void RooSpinTwo_7DComplex_ppHVV::setZZ4fOrdering ( Bool_t  flag = true)

Definition at line 394 of file RooSpinTwo_7DComplex_ppHVV.cc.

394 { ZZ4fOrdering=flag; }

Member Data Documentation

◆ ZZ4fOrdering

Bool_t RooSpinTwo_7DComplex_ppHVV::ZZ4fOrdering
protected

Definition at line 38 of file RooSpinTwo_7DComplex_ppHVV.h.


The documentation for this class was generated from the following files:
RooSpinTwo_7DComplex_ppHVV::evaluateHSFactor
Double_t evaluateHSFactor(Int_t di, Int_t dj, Int_t code) const
Definition: RooSpinTwo_7DComplex_ppHVV.cc:75
value
pymela::gHIGGS_KAPPA value("gHIGGS_KAPPA_TILDE", pymela::gHIGGS_KAPPA_TILDE) .value("SIZE_HQQ"
RooSpin::Phi
RooRealProxy Phi
Definition: RooSpin.h:110
RooSpinTwo_7DComplex_ppHVV::evaluatePhi1PhiFactor
Double_t evaluatePhi1PhiFactor(Int_t i1, Int_t i2, Int_t j1, Int_t j2, Int_t code, Double_t extraPhase1, Double_t extraPhase2) const
Definition: RooSpinTwo_7DComplex_ppHVV.cc:137
RooSpinTwo::f_spinz1
RooRealProxy f_spinz1
Definition: RooSpinTwo.h:63
ih1
int ih1
Definition: TMCFM.hh:51
RooSpinTwo::f_spinz2
RooRealProxy f_spinz2
Definition: RooSpinTwo.h:64
RooSpin::m12
RooRealProxy m12
Definition: RooSpin.h:113
RooSpin::prime_h1
@ prime_h1
Definition: RooSpin.h:39
RooSpin::prime_Phi
@ prime_Phi
Definition: RooSpin.h:42
RooSpin::prime_Phi1
@ prime_Phi1
Definition: RooSpin.h:43
RooSpinTwo::calculateAmplitudes
virtual void calculateAmplitudes(Double_t &A00Re, Double_t &A00Im, Double_t &AppRe, Double_t &AppIm, Double_t &A0pRe, Double_t &A0pIm, Double_t &Ap0Re, Double_t &Ap0Im, Double_t &AmmRe, Double_t &AmmIm, Double_t &A0mRe, Double_t &A0mIm, Double_t &Am0Re, Double_t &Am0Im, Double_t &ApmRe, Double_t &ApmIm, Double_t &AmpRe, Double_t &AmpIm, bool isGammaV1=false, bool isGammaV2=false) const
Definition: RooSpinTwo.cc:139
RooSpin::m1
RooRealProxy m1
Definition: RooSpin.h:111
MELAStreamHelpers::MELAout
MELAOutputStreamer MELAout
RooSpin::checkFundamentalType
virtual Bool_t checkFundamentalType(const RooRealProxy &proxy) const
Definition: RooSpin.cc:392
RooSpin::Vdecay2
RooSpin::VdecayType Vdecay2
Definition: RooSpin.h:136
RooSpinTwo_7DComplex_ppHVV::evaluateH2Factor
Double_t evaluateH2Factor(Int_t i2, Int_t j2, Int_t helicity, Int_t code) const
Definition: RooSpinTwo_7DComplex_ppHVV.cc:55
RooSpinTwo_7DComplex_ppHVV::RooSpinTwo_7DComplex_ppHVV
RooSpinTwo_7DComplex_ppHVV()
Definition: RooSpinTwo_7DComplex_ppHVV.cc:8
RooSpin::intCodeStart
Int_t intCodeStart
Definition: RooSpin.h:138
RooSpin::kVdecayType_GammaOnshell
@ kVdecayType_GammaOnshell
Definition: RooSpin.h:30
RooSpin::prime_h2
@ prime_h2
Definition: RooSpin.h:40
RooSpin::m2
RooRealProxy m2
Definition: RooSpin.h:112
RooSpin::h2
RooRealProxy h2
Definition: RooSpin.h:109
RooSpinTwo_7DComplex_ppHVV::evaluateH1Factor
Double_t evaluateH1Factor(Int_t i1, Int_t j1, Int_t helicity, Int_t code) const
Definition: RooSpinTwo_7DComplex_ppHVV.cc:35
RooSpin::hs
RooRealProxy hs
Definition: RooSpin.h:114
ih2
int ih2
Definition: TMCFM.hh:51
RooSpinTwo_7DComplex_ppHVV::ZZ4fOrdering
Bool_t ZZ4fOrdering
Definition: RooSpinTwo_7DComplex_ppHVV.h:38
RooSpin::GeVunit
static constexpr Double_t GeVunit
Definition: RooSpin.h:141
RooSpin::getMVGamV
virtual void getMVGamV(Double_t *mV=0, Double_t *gamV=0) const
Definition: RooSpin.cc:305
RooSpin::Vdecay1
RooSpin::VdecayType Vdecay1
Definition: RooSpin.h:135
RooSpin::h1
RooRealProxy h1
Definition: RooSpin.h:108
RooSpinTwo_7DComplex_ppHVV::evaluatePolarizationTerms
void evaluatePolarizationTerms(std::vector< Double_t > &Axxyyterm, const Int_t code, bool isGammaV1=false, bool isGammaV2=false) const
Definition: RooSpinTwo_7DComplex_ppHVV.cc:178
RooSpinTwo::RooSpinTwo
RooSpinTwo()
Definition: RooSpinTwo.cc:7
RooSpin::calculateVffR1R2
virtual void calculateVffR1R2(Double_t &R1Val, Double_t &R2Val, bool isGammaV1=false, bool isGammaV2=false) const
Definition: RooSpin.cc:297
RooSpin::prime_hs
@ prime_hs
Definition: RooSpin.h:41
RooSpin::Phi1
RooRealProxy Phi1
Definition: RooSpin.h:115