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

#include <RooSpinZero_3D_pp_VH.h>

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

Public Member Functions

 RooSpinZero_3D_pp_VH ()
 
 RooSpinZero_3D_pp_VH (const char *name, const char *title, modelMeasurables const &_measurables, modelParameters const &_parameters, modelCouplings const &_couplings, Double_t _sqrts, RooSpin::VdecayType _Vdecay1=RooSpin::kVdecayType_Zll, RooSpin::VdecayType _Vdecay2=RooSpin::kVdecayType_Zll, TVar::VerbosityLevel verbosity_=TVar::ERROR)
 
 RooSpinZero_3D_pp_VH (const RooSpinZero_3D_pp_VH &other, const char *name=0)
 
virtual TObject * clone (const char *newname) const
 
virtual ~RooSpinZero_3D_pp_VH ()
 
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
 
- Public Member Functions inherited from RooSpinZero
 RooSpinZero ()
 
 RooSpinZero (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)
 
 RooSpinZero (const RooSpinZero &other, const char *name=0)
 
virtual ~RooSpinZero ()
 
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)
 

Public Attributes

Double_t sqrts
 

Protected Member Functions

void evaluatePolarizationTerms (Double_t &A00term, Double_t &Appterm, Double_t &Ammterm, Double_t &A00ppterm, Double_t &A00mmterm, Double_t &Appmmterm, const Int_t code, int VGammaVpmode1=0, int VGammaVpmode2=0) const
 
Double_t partonicLuminosity (Double_t mVal, Double_t YVal, Double_t sqrts) const
 
- Protected Member Functions inherited from RooSpinZero
virtual void calculateAi (Double_t &a1Re, Double_t &a1Im, Double_t &a2Re, Double_t &a2Im, Double_t &a3Re, Double_t &a3Im, int VGammaVpmode1=0, int VGammaVpmode2=0) const
 
virtual void calculateAmplitudes (Double_t &A00Re, Double_t &A00Im, Double_t &AppRe, Double_t &AppIm, Double_t &AmmRe, Double_t &AmmIm, int VGammaVpmode1=0, int VGammaVpmode2=0) const
 
virtual Bool_t computeNeededAmplitude (int VGammaVpmode1, int VGammaVpmode2) const final
 
- 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
 

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
}
 
- Protected Attributes inherited from RooSpinZero
RooRealProxy g1Val
 
RooRealProxy g2Val
 
RooRealProxy g3Val
 
RooRealProxy g4Val
 
RooRealProxy g1_primeVal
 
RooRealProxy g2_primeVal
 
RooRealProxy g3_primeVal
 
RooRealProxy g4_primeVal
 
RooRealProxy g1_prime2Val
 
RooRealProxy g2_prime2Val
 
RooRealProxy g3_prime2Val
 
RooRealProxy g4_prime2Val
 
RooRealProxy g1_prime3Val
 
RooRealProxy g2_prime3Val
 
RooRealProxy g3_prime3Val
 
RooRealProxy g4_prime3Val
 
RooRealProxy g1_prime4Val
 
RooRealProxy g2_prime4Val
 
RooRealProxy g3_prime4Val
 
RooRealProxy g4_prime4Val
 
RooRealProxy g1_prime5Val
 
RooRealProxy g2_prime5Val
 
RooRealProxy g3_prime5Val
 
RooRealProxy g4_prime5Val
 
RooRealProxy g1_prime6Val
 
RooRealProxy g2_prime6Val
 
RooRealProxy g3_prime6Val
 
RooRealProxy g4_prime6Val
 
RooRealProxy g1_prime7Val
 
RooRealProxy g2_prime7Val
 
RooRealProxy g3_prime7Val
 
RooRealProxy g4_prime7Val
 
RooRealProxy gzgs1_prime2Val
 
RooRealProxy gzgs2Val
 
RooRealProxy gzgs3Val
 
RooRealProxy gzgs4Val
 
RooRealProxy ggsgs2Val
 
RooRealProxy ggsgs3Val
 
RooRealProxy ggsgs4Val
 
RooRealProxy g1ValIm
 
RooRealProxy g2ValIm
 
RooRealProxy g3ValIm
 
RooRealProxy g4ValIm
 
RooRealProxy g1_primeValIm
 
RooRealProxy g2_primeValIm
 
RooRealProxy g3_primeValIm
 
RooRealProxy g4_primeValIm
 
RooRealProxy g1_prime2ValIm
 
RooRealProxy g2_prime2ValIm
 
RooRealProxy g3_prime2ValIm
 
RooRealProxy g4_prime2ValIm
 
RooRealProxy g1_prime3ValIm
 
RooRealProxy g2_prime3ValIm
 
RooRealProxy g3_prime3ValIm
 
RooRealProxy g4_prime3ValIm
 
RooRealProxy g1_prime4ValIm
 
RooRealProxy g2_prime4ValIm
 
RooRealProxy g3_prime4ValIm
 
RooRealProxy g4_prime4ValIm
 
RooRealProxy g1_prime5ValIm
 
RooRealProxy g2_prime5ValIm
 
RooRealProxy g3_prime5ValIm
 
RooRealProxy g4_prime5ValIm
 
RooRealProxy g1_prime6ValIm
 
RooRealProxy g2_prime6ValIm
 
RooRealProxy g3_prime6ValIm
 
RooRealProxy g4_prime6ValIm
 
RooRealProxy g1_prime7ValIm
 
RooRealProxy g2_prime7ValIm
 
RooRealProxy g3_prime7ValIm
 
RooRealProxy g4_prime7ValIm
 
RooRealProxy gzgs1_prime2ValIm
 
RooRealProxy gzgs2ValIm
 
RooRealProxy gzgs3ValIm
 
RooRealProxy gzgs4ValIm
 
RooRealProxy ggsgs2ValIm
 
RooRealProxy ggsgs3ValIm
 
RooRealProxy ggsgs4ValIm
 
RooRealProxy Lambda
 
RooRealProxy Lambda_zgs1
 
RooRealProxy Lambda_z1
 
RooRealProxy Lambda_z2
 
RooRealProxy Lambda_z3
 
RooRealProxy Lambda_z4
 
RooRealProxy Lambda_Q
 
RooRealProxy Lambda_z11
 
RooRealProxy Lambda_z21
 
RooRealProxy Lambda_z31
 
RooRealProxy Lambda_z41
 
RooRealProxy Lambda_z12
 
RooRealProxy Lambda_z22
 
RooRealProxy Lambda_z32
 
RooRealProxy Lambda_z42
 
RooRealProxy Lambda_z10
 
RooRealProxy Lambda_z20
 
RooRealProxy Lambda_z30
 
RooRealProxy Lambda_z40
 
RooRealProxy cz_q1sq
 
RooRealProxy cz_q2sq
 
RooRealProxy cz_q12sq
 
RooRealProxy gvvp1Val
 
RooRealProxy gvpvp1Val
 
RooRealProxy gvvp1ValIm
 
RooRealProxy gvpvp1ValIm
 
- 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
 
- Static Protected Attributes inherited from RooSpin
static constexpr Double_t GeVunit =1e-2
 

Detailed Description

Definition at line 9 of file RooSpinZero_3D_pp_VH.h.

Constructor & Destructor Documentation

◆ RooSpinZero_3D_pp_VH() [1/3]

RooSpinZero_3D_pp_VH::RooSpinZero_3D_pp_VH ( )

Definition at line 4 of file RooSpinZero_3D_pp_VH.cc.

4 : RooSpinZero(){}

◆ RooSpinZero_3D_pp_VH() [2/3]

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

Definition at line 5 of file RooSpinZero_3D_pp_VH.cc.

13  : RooSpinZero(
14  name, title,
15  _measurables,
16  _parameters,
17  _couplings,
18  _Vdecay1, _Vdecay2,
19  verbosity_
20 ),
21 sqrts(_sqrts)
22 {}

◆ RooSpinZero_3D_pp_VH() [3/3]

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

Definition at line 25 of file RooSpinZero_3D_pp_VH.cc.

27  : RooSpinZero(other, name),
28 sqrts(other.sqrts)
29 {}

◆ ~RooSpinZero_3D_pp_VH()

virtual RooSpinZero_3D_pp_VH::~RooSpinZero_3D_pp_VH ( )
inlinevirtual

Definition at line 27 of file RooSpinZero_3D_pp_VH.h.

27 {}

Member Function Documentation

◆ analyticalIntegral()

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

Implements RooSpinZero.

Definition at line 219 of file RooSpinZero_3D_pp_VH.cc.

219  {
220  Double_t epsilon=1e-10;
221  Double_t m1_=m1; if (Vdecay1==RooSpin::kVdecayType_GammaOnshell) return epsilon;
222  Double_t m2_=m2; if (Vdecay2==RooSpin::kVdecayType_GammaOnshell) m2_=0;
223  if ((m12+m2_) > m1_ || (m2_ <= 0. && Vdecay2!=RooSpin::kVdecayType_GammaOnshell) || m1_ <= 0.) return epsilon;
224 
225  Double_t betaValSq = (1.-(pow(m12-m2_, 2)/pow(m1_, 2)))*(1.-(pow(m12+m2_, 2)/pow(m1_, 2)));
226  if (betaValSq<=0.) return epsilon;
227  Double_t betaVal = sqrt(betaValSq);
228 
229  Double_t term1Coeff = 1;
230  Double_t term2Coeff = 1;
231  term1Coeff = pow(m1_*GeVunit, -2);
232  if (Vdecay2!=RooSpin::kVdecayType_GammaOnshell) term2Coeff = 2.*m2_*GeVunit;
233  Double_t plumi = partonicLuminosity(m1_, Y, sqrts);
234 
235  Double_t value = 0;
236  for (int VGammaVpmode1=0; VGammaVpmode1<=2; VGammaVpmode1++){
237  for (int VGammaVpmode2=0; VGammaVpmode2<=2; VGammaVpmode2++){
238  if (!(
239  (VGammaVpmode1==0 && VGammaVpmode2==0 && Vdecay1!=RooSpin::kVdecayType_GammaOnshell && Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
240  ||
241  (VGammaVpmode1==0 && VGammaVpmode2==1 && Vdecay1!=RooSpin::kVdecayType_GammaOnshell)
242  ||
243  (VGammaVpmode1==1 && VGammaVpmode2==0 && Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
244  ||
245  (VGammaVpmode1==1 && VGammaVpmode2==1)
246  ||
247  (VGammaVpmode1==0 && VGammaVpmode2==2 && Vdecay1!=RooSpin::kVdecayType_GammaOnshell && Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
248  ||
249  (VGammaVpmode1==2 && VGammaVpmode2==0 && Vdecay1!=RooSpin::kVdecayType_GammaOnshell && Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
250  ||
251  (VGammaVpmode1==2 && VGammaVpmode2==2 && Vdecay1!=RooSpin::kVdecayType_GammaOnshell && Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
252  )) continue;
253  Double_t val_A00=0, val_App=0, val_Amm=0, val_A0p=0, val_A0m=0, val_Amp=0;
254  evaluatePolarizationTerms(val_A00, val_App, val_Amm, val_A0p, val_A0m, val_Amp, code, VGammaVpmode1, VGammaVpmode2);
255  value += val_A00 + val_App + val_Amm + val_A0p + val_A0m + val_Amp;
256  }
257  }
258  value *= betaVal*term1Coeff*term2Coeff*plumi;
259  return value;
260 }

◆ clone()

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

Implements RooSpinZero.

Definition at line 26 of file RooSpinZero_3D_pp_VH.h.

26 { return new RooSpinZero_3D_pp_VH(*this, newname); }

◆ evaluate()

Double_t RooSpinZero_3D_pp_VH::evaluate ( ) const
virtual

Implements RooSpinZero.

Definition at line 166 of file RooSpinZero_3D_pp_VH.cc.

166  {
167  Double_t epsilon=1e-15;
168  Double_t m1_=m1; if (Vdecay1==RooSpin::kVdecayType_GammaOnshell) return epsilon;
169  Double_t m2_=m2; if (Vdecay2==RooSpin::kVdecayType_GammaOnshell) m2_=0;
170  if ((m12+m2_) > m1_ || (m2_ <= 0. && Vdecay2!=RooSpin::kVdecayType_GammaOnshell) || m1_ <= 0.) return epsilon;
171 
172  Int_t code = intCodeStart;
174 
175  Double_t betaValSq = (1.-(pow(m12-m2_, 2)/pow(m1_, 2)))*(1.-(pow(m12+m2_, 2)/pow(m1_, 2)));
176  if (betaValSq<=0.) return epsilon;
177  Double_t betaVal = sqrt(betaValSq);
178 
179  Double_t term1Coeff = 1;
180  Double_t term2Coeff = 1;
181  term1Coeff = pow(m1_*GeVunit, -2);
182  if (Vdecay2!=RooSpin::kVdecayType_GammaOnshell) term2Coeff = 2.*m2_*GeVunit;
183  Double_t plumi = partonicLuminosity(m1_, Y, sqrts);
184 
185  Double_t value = 0;
186  for (int VGammaVpmode1=0; VGammaVpmode1<=2; VGammaVpmode1++){
187  for (int VGammaVpmode2=0; VGammaVpmode2<=2; VGammaVpmode2++){
188  if (!(
190  &&
191  (VGammaVpmode2==1 || Vdecay2!=RooSpin::kVdecayType_GammaOnshell)
192  )
193  ||
194  VGammaVpmode1==1
195  ||
196  (VGammaVpmode1==2 && VGammaVpmode2==1)
197  ||
198  !computeNeededAmplitude(VGammaVpmode1, VGammaVpmode2)
199  ) continue;
200  Double_t val_A00=0, val_App=0, val_Amm=0, val_A0p=0, val_A0m=0, val_Amp=0;
201  evaluatePolarizationTerms(val_A00, val_App, val_Amm, val_A0p, val_A0m, val_Amp, code, VGammaVpmode1, VGammaVpmode2);
202  value += val_A00 + val_App + val_Amm + val_A0p + val_A0m + val_Amp;
203  }
204  }
205  value *= betaVal*term1Coeff*term2Coeff*plumi;
206  return value;
207 }

◆ evaluatePolarizationTerms()

void RooSpinZero_3D_pp_VH::evaluatePolarizationTerms ( Double_t &  A00term,
Double_t &  Appterm,
Double_t &  Ammterm,
Double_t &  A00ppterm,
Double_t &  A00mmterm,
Double_t &  Appmmterm,
const Int_t  code,
int  VGammaVpmode1 = 0,
int  VGammaVpmode2 = 0 
) const
protectedvirtual

Implements RooSpinZero.

Definition at line 32 of file RooSpinZero_3D_pp_VH.cc.

37  {
38  const Double_t Pi = TMath::Pi();
39 
40  Double_t R1Val, R2Val;
41  calculateVffR1R2(R1Val, R2Val, VGammaVpmode1==1, VGammaVpmode2==1);
42  if (VGammaVpmode1==2 || VGammaVpmode2==2){
43  Double_t RVp1Val=0, RVp2Val=0;
44  calculateVprimeffR1R2(RVp1Val, RVp2Val);
45  if (VGammaVpmode1==2) R1Val=RVp1Val;
46  if (VGammaVpmode2==2) R1Val=RVp2Val;
47  }
48 
49  Double_t A00Re, A00Im, AppRe, AppIm, AmmRe, AmmIm;
50  calculateAmplitudes(A00Re, A00Im, AppRe, AppIm, AmmRe, AmmIm, VGammaVpmode1, VGammaVpmode2);
51 
52  Double_t A00 = A00Im*A00Im + A00Re*A00Re;
53  Double_t App = AppIm*AppIm + AppRe*AppRe;
54  Double_t Amm = AmmIm*AmmIm + AmmRe*AmmRe;
55 
56  Double_t phi00=atan2(A00Im, A00Re);
57  Double_t phipp=atan2(AppIm, AppRe)-phi00;
58  Double_t phimm=atan2(AmmIm, AmmRe)-phi00;
59 
60  Double_t A00_prefactor = 1.;
61  Double_t Amm_pp_prefactor = 1.;
62  Double_t A00mm_prefactor = 2.;
63  Double_t A00pp_prefactor = 2.;
64  Double_t Ammpp_prefactor = 2.;
65 
66  A00term = A00*A00_prefactor;
67  Appterm = App*Amm_pp_prefactor;
68  Ammterm = Amm*Amm_pp_prefactor;
69  A00ppterm = sqrt(A00*App)*A00pp_prefactor;
70  A00mmterm = sqrt(A00*Amm)*A00mm_prefactor;
71  Appmmterm = sqrt(Amm*App)*Ammpp_prefactor;
72 
73  if ((code % prime_h1)==0){
74  Double_t A00_h1int = 4./3.;
75  Double_t Ammpp_h1int = 8./3.;
76  Double_t A0m_h1int = Pi/2.*R1Val;
77  Double_t A0p_h1int = Pi/2.*R1Val;
78  Double_t Amp_h1int = 4./3.;
79 
80  if (A00term!=0) A00term *= A00_h1int;
81  if (Appterm!=0) Appterm *= Ammpp_h1int;
82  if (Ammterm!=0) Ammterm *= Ammpp_h1int;
83  if (A00ppterm!=0) A00ppterm *= A0p_h1int;
84  if (A00mmterm!=0) A00mmterm *= A0m_h1int;
85  if (Appmmterm!=0) Appmmterm *= Amp_h1int;
86  }
87  else{
88  if (A00term!=0) A00term *= (1. - pow(h1, 2));
89  if (Appterm!=0) Appterm *= (1. + pow(h1, 2) - 2.*h1*R1Val);
90  if (Ammterm!=0) Ammterm *= (1. + pow(h1, 2) + 2.*h1*R1Val);
91  if (A00ppterm!=0) A00ppterm *= sqrt(1. - pow(h1, 2))*(R1Val - h1);
92  if (A00mmterm!=0) A00mmterm *= sqrt(1. - pow(h1, 2))*(R1Val + h1);
93  if (Appmmterm!=0) Appmmterm *= (1. - pow(h1, 2));
94  }
95 
96  if ((code % prime_h2)==0){
97  Double_t A00_h2int = 4./3.;
98  Double_t Ammpp_h2int = 8./3.;
99  Double_t A0m_h2int = Pi/2.*R2Val;
100  Double_t A0p_h2int = Pi/2.*R2Val;
101  Double_t Amp_h2int = 4./3.;
102 
103  if (A00term!=0) A00term *= A00_h2int;
104  if (Appterm!=0) Appterm *= Ammpp_h2int;
105  if (Ammterm!=0) Ammterm *= Ammpp_h2int;
106  if (A00ppterm!=0) A00ppterm *= A0p_h2int;
107  if (A00mmterm!=0) A00mmterm *= A0m_h2int;
108  if (Appmmterm!=0) Appmmterm *= Amp_h2int;
109  }
110  else{
111  if (A00term!=0) A00term *= (1. - pow(h2, 2));
112  if (Appterm!=0) Appterm *= (1. + pow(h2, 2) + 2.*h2*R2Val);
113  if (Ammterm!=0) Ammterm *= (1. + pow(h2, 2) - 2.*h2*R2Val);
114  if (A00ppterm!=0) A00ppterm *= sqrt(1. - pow(h2, 2))*(R2Val + h2);
115  if (A00mmterm!=0) A00mmterm *= sqrt(1. - pow(h2, 2))*(R2Val - h2);
116  if (Appmmterm!=0) Appmmterm *= (1. - pow(h2, 2));
117  }
118 
119  if ((code % prime_hs)==0){
120  Double_t A_hsint = 2.;
121 
122  if (A00term!=0) A00term *= A_hsint;
123  if (Appterm!=0) Appterm *= A_hsint;
124  if (Ammterm!=0) Ammterm *= A_hsint;
125  if (A00ppterm!=0) A00ppterm *= A_hsint;
126  if (A00mmterm!=0) A00mmterm *= A_hsint;
127  if (Appmmterm!=0) Appmmterm *= A_hsint;
128  } // else *= 1
129 
130  if ((code % prime_Phi)==0){
131  Double_t A00mmpp_phiint = 2.*Pi;
132  Double_t A0p_phiint = 0;
133  Double_t A0m_phiint = 0;
134  Double_t Amp_phiint = 0;
135 
136  if (A00term!=0) A00term *= A00mmpp_phiint;
137  if (Appterm!=0) Appterm *= A00mmpp_phiint;
138  if (Ammterm!=0) Ammterm *= A00mmpp_phiint;
139  if (A00ppterm!=0) A00ppterm *= A0p_phiint;
140  if (A00mmterm!=0) A00mmterm *= A0m_phiint;
141  if (Appmmterm!=0) Appmmterm *= Amp_phiint;
142  }
143  else{
144  //if (A00term!=0) A00term *= 1.;
145  //if (Appterm!=0) Appterm *= 1.;
146  //if (Ammterm!=0) Ammterm *= 1.;
147  if (A00ppterm!=0) A00ppterm *= cos(Phi + phipp);
148  if (A00mmterm!=0) A00mmterm *= cos(Phi - phimm);
149  if (Appmmterm!=0) Appmmterm *= cos(2*Phi - phimm + phipp);
150  }
151 
152  if ((code % prime_Phi1)==0){
153  Double_t A_phi1int = 2.*Pi;
154 
155  if (A00term!=0) A00term *= A_phi1int;
156  if (Appterm!=0) Appterm *= A_phi1int;
157  if (Ammterm!=0) Ammterm *= A_phi1int;
158  if (A00ppterm!=0) A00ppterm *= A_phi1int;
159  if (A00mmterm!=0) A00mmterm *= A_phi1int;
160  if (Appmmterm!=0) Appmmterm *= A_phi1int;
161  }
162  // else *= 1
163 }

◆ getAnalyticalIntegral()

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

Implements RooSpinZero.

Definition at line 209 of file RooSpinZero_3D_pp_VH.cc.

209  {
210  Int_t code = intCodeStart;
211  if (checkFundamentalType(h1)){ if (matchArgs(allVars, analVars, h1)) code *= prime_h1; }
212  if (checkFundamentalType(h2)){ if (matchArgs(allVars, analVars, h2) || Vdecay2==RooSpin::kVdecayType_GammaOnshell) code *= prime_h2; }
213  if (checkFundamentalType(hs)){ if (matchArgs(allVars, analVars, hs)) code *= prime_hs; }
214  if (checkFundamentalType(Phi)){ if (matchArgs(allVars, analVars, Phi) || Vdecay2==RooSpin::kVdecayType_GammaOnshell) code *= prime_Phi; }
215  if (checkFundamentalType(Phi1)){ if (matchArgs(allVars, analVars, Phi1) || Vdecay2==RooSpin::kVdecayType_GammaOnshell) code *= prime_Phi1; }
216  if (code==1) code=0;
217  return code;
218 }

◆ partonicLuminosity()

Double_t RooSpinZero_3D_pp_VH::partonicLuminosity ( Double_t  mVal,
Double_t  YVal,
Double_t  sqrts 
) const
protected

Definition at line 262 of file RooSpinZero_3D_pp_VH.cc.

262  {
263  Double_t Q = mVal;
264  Double_t xa0 = mVal/sqrtsVal; // -> E E <- => xa0=xb0=p/Ebeam (Ebeam = sqrts/2)
265  Double_t xa = exp(YVal)*xa0; // -> Ea Eb <- => xa=Ea/Ebeam
266  Double_t xb = exp(-YVal)*xa0; // -> Ea Eb <- => xb=Eb/Ebeam
267  Double_t prefactor = 1.;
268  if (
269  (
270  (mVal <= 600. && fabs(YVal) > 20.*pow(mVal, -0.32))
271  ||
272  (mVal > 600. && fabs(YVal) > 21.*pow(mVal, -0.34))
274  ){
275  xa = xa0;
276  xb = xa0;
277  prefactor = 1e-5;
278  }
279 
280  Double_t weightu = 0.5;
281  Double_t weightd = 0.5;
282  Double_t weightc = 1.0;
283  Double_t weights = 1.0;
284  Double_t weightb = 1.0;
285 
286 
287  // PDF parameters
288  // up params
289  Double_t u0par0 = 0.03134; Double_t u0par1 =-2.068e-05; Double_t u0par2 = 1.283e-08;
290  Double_t u1par0 = 0.9; Double_t u1par1 =-0.0004307; Double_t u1par2 = 2.458e-07;
291  Double_t u2par0 =-0.1369; Double_t u2par1 = 0.003423; Double_t u2par2 =-2.155e-06;
292  Double_t u3par0 =-0.4013; Double_t u3par1 =-0.0002574; Double_t u3par2 = 1.561e-07;
293  Double_t u4par0 = 0.5782; Double_t u4par1 =-0.004728; Double_t u4par2 = 2.906e-06;
294  Double_t ubar0par0 = 0.02856; Double_t ubar0par1 =-2.112e-05; Double_t ubar0par2 = 1.272e-08;
295  Double_t ubar1par0 =-0.06822; Double_t ubar1par1 = 3.172e-05; Double_t ubar1par2 =-2.008e-08;
296  Double_t ubar2par0 = 0.1967; Double_t ubar2par1 =-0.000118; Double_t ubar2par2 = 6.871e-08;
297  Double_t ubar3par0 =-0.2251; Double_t ubar3par1 = 0.0001295; Double_t ubar3par2 =-7.181e-08;
298  Double_t ubar4par0 =-0.4068; Double_t ubar4par1 =-0.0002956; Double_t ubar4par2 = 1.783e-07;
299  Double_t ubar5par0 =-2.251; Double_t ubar5par1 =-0.0001699; Double_t ubar5par2 = 1.492e-07;
300  // down params
301  Double_t d0par0 = 0.03278; Double_t d0par1 =-2.915e-05; Double_t d0par2 = 1.809e-08;
302  Double_t d1par0 = 0.479; Double_t d1par1 =-0.0002559; Double_t d1par2 = 1.557e-07;
303  Double_t d2par0 =-0.5972; Double_t d2par1 = 0.0003118; Double_t d2par2 =-1.905e-07;
304  Double_t d3par0 =-0.3892; Double_t d3par1 =-0.000317; Double_t d3par2 = 1.944e-07;
305  Double_t d4par0 = 0.5007; Double_t d4par1 =-0.001665; Double_t d4par2 = 9.895e-07;
306  Double_t dbar0par0 = 0.02328; Double_t dbar0par1 =-1.367e-05; Double_t dbar0par2 = 8.246e-09;
307  Double_t dbar1par0 = 0.09422; Double_t dbar1par1 =-0.0001019; Double_t dbar1par2 = 6.375e-08;
308  Double_t dbar2par0 =-0.5296; Double_t dbar2par1 = 0.000466; Double_t dbar2par2 =-2.896e-07;
309  Double_t dbar3par0 = 0.5354; Double_t dbar3par1 =-0.0004404; Double_t dbar3par2 = 2.728e-07;
310  Double_t dbar4par0 =-0.4386; Double_t dbar4par1 =-0.0002605; Double_t dbar4par2 = 1.582e-07;
311  Double_t dbar5par0 =-1.289; Double_t dbar5par1 =-0.001618; Double_t dbar5par2 = 9.601e-07;
312  // charm, strange, bottom params
313  Double_t c0par0 = 0.01829; Double_t c0par1 =-6.93e-06; Double_t c0par2 = 3.796e-09;
314  Double_t c1par0 = 0.03081; Double_t c1par1 = 4.325e-05; Double_t c1par2 =-3.95e-08;
315  Double_t c2par0 = 0.5398; Double_t c2par1 =-4.284e-05; Double_t c2par2 =-1.362e-08;
316  Double_t c3par0 =-0.5986; Double_t c3par1 = 0.002565; Double_t c3par2 =-1.937e-06;
317  Double_t c4par0 =-0.4534; Double_t c4par1 =-0.0002329; Double_t c4par2 = 1.343e-07;
318  Double_t c5par0 =-8.657; Double_t c5par1 =-0.005157; Double_t c5par2 = 3.68e-06;
319  Double_t s0par0 = 0.01312; Double_t s0par1 =-3.743e-06; Double_t s0par2 = 2.076e-09;
320  Double_t s1par0 =-0.001416; Double_t s1par1 =-7.649e-06; Double_t s1par2 = 4.757e-09;
321  Double_t s2par0 = 0.2864; Double_t s2par1 =-6.693e-05; Double_t s2par2 = 3.566e-08;
322  Double_t s3par0 =-0.4857; Double_t s3par1 =-0.000253; Double_t s3par2 = 1.541e-07;
323  Double_t s4par0 =-10.33; Double_t s4par1 =-0.001601; Double_t s4par2 = 9.718e-07;
324  Double_t b0par0 = 0.005934; Double_t b0par1 = 2.516e-06; Double_t b0par2 =-1.828e-09;
325  Double_t b1par0 =-0.003063; Double_t b1par1 =-6.761e-06; Double_t b1par2 = 4.298e-09;
326  Double_t b2par0 = 0.1174; Double_t b2par1 = 3.752e-05; Double_t b2par2 =-2.863e-08;
327  Double_t b3par0 =-0.5549; Double_t b3par1 =-0.0002205; Double_t b3par2 = 1.334e-07;
328  Double_t b4par0 =-10.18; Double_t b4par1 =-0.001136; Double_t b4par2 = 6.931e-07;
329 
330  // PDF definition
331  Double_t up0 = u0par0 + u0par1*Q + u0par2*Q*Q;
332  Double_t up1 = u1par0 + u1par1*Q + u1par2*Q*Q;
333  Double_t up2 = u2par0 + u2par1*Q + u2par2*Q*Q;
334  Double_t up3 = u3par0 + u3par1*Q + u3par2*Q*Q;
335  Double_t up4 = u4par0 + u4par1*Q + u4par2*Q*Q;
336  Double_t antiup0 = ubar0par0 + ubar0par1*Q + ubar0par2*Q*Q;
337  Double_t antiup1 = ubar1par0 + ubar1par1*Q + ubar1par2*Q*Q;
338  Double_t antiup2 = ubar2par0 + ubar2par1*Q + ubar2par2*Q*Q;
339  Double_t antiup3 = ubar3par0 + ubar3par1*Q + ubar3par2*Q*Q;
340  Double_t antiup4 = ubar4par0 + ubar4par1*Q + ubar4par2*Q*Q;
341  Double_t antiup5 = ubar5par0 + ubar5par1*Q + ubar5par2*Q*Q;
342  Double_t down0 = d0par0 + d0par1*Q + d0par2*Q*Q;
343  Double_t down1 = d1par0 + d1par1*Q + d1par2*Q*Q;
344  Double_t down2 = d2par0 + d2par1*Q + d2par2*Q*Q;
345  Double_t down3 = d3par0 + d3par1*Q + d3par2*Q*Q;
346  Double_t down4 = d4par0 + d4par1*Q + d4par2*Q*Q;
347  Double_t antidown0 = dbar0par0 + dbar0par1*Q + dbar0par2*Q*Q;
348  Double_t antidown1 = dbar1par0 + dbar1par1*Q + dbar1par2*Q*Q;
349  Double_t antidown2 = dbar2par0 + dbar2par1*Q + dbar2par2*Q*Q;
350  Double_t antidown3 = dbar3par0 + dbar3par1*Q + dbar3par2*Q*Q;
351  Double_t antidown4 = dbar4par0 + dbar4par1*Q + dbar4par2*Q*Q;
352  Double_t antidown5 = dbar5par0 + dbar5par1*Q + dbar5par2*Q*Q;
353  Double_t charm0 = c0par0 + c0par1*Q + c0par2*Q*Q;
354  Double_t charm1 = c1par0 + c1par1*Q + c1par2*Q*Q;
355  Double_t charm2 = c2par0 + c2par1*Q + c2par2*Q*Q;
356  Double_t charm3 = c3par0 + c3par1*Q + c3par2*Q*Q;
357  Double_t charm4 = c4par0 + c4par1*Q + c4par2*Q*Q;
358  Double_t charm5 = c5par0 + c5par1*Q + c5par2*Q*Q;
359  Double_t strange0 = s0par0 + s0par1*Q + s0par2*Q*Q;
360  Double_t strange1 = s1par0 + s1par1*Q + s1par2*Q*Q;
361  Double_t strange2 = s2par0 + s2par1*Q + s2par2*Q*Q;
362  Double_t strange3 = s3par0 + s3par1*Q + s3par2*Q*Q;
363  Double_t strange4 = s4par0 + s4par1*Q + s4par2*Q*Q;
364  Double_t bottom0 = b0par0 + b0par1*Q + b0par2*Q*Q;
365  Double_t bottom1 = b1par0 + b1par1*Q + b1par2*Q*Q;
366  Double_t bottom2 = b2par0 + b2par1*Q + b2par2*Q*Q;
367  Double_t bottom3 = b3par0 + b3par1*Q + b3par2*Q*Q;
368  Double_t bottom4 = b4par0 + b4par1*Q + b4par2*Q*Q;
369 
370  Double_t FuncAu1 = (up0+up1*xa+up2*pow(xa, 2))*pow((1-xa), 4)*pow(xa, up3)*exp(1.0+up4*xa);
371  Double_t FuncBu1 = (antiup0+antiup1*xb+antiup2*pow(xb, 2)+antiup3*pow(xb, 3))*pow((1-xb), 4)*pow(xb, antiup4)*exp(1.0+antiup5*xb);
372  Double_t FuncAu2 = (up0+up1*xb+up2*pow(xb, 2))*pow((1-xb), 4)*pow(xb, up3)*exp(1.0+up4*xb);
373  Double_t FuncBu2 = (antiup0+antiup1*xa+antiup2*pow(xa, 2)+antiup3*pow(xa, 3))*pow((1-xa), 4)*pow(xa, antiup4)*exp(1.0+antiup5*xa);
374 
375  Double_t FuncAd1 = (down0+down1*xa+down2*pow(xa, 2))*pow((1-xa), 4)*pow(xa, down3)*exp(1.0+down4*xa);
376  Double_t FuncBd1 = (antidown0+antidown1*xb+antidown2*pow(xb, 2)+antidown3*pow(xb, 3))*pow((1-xb), 4)*pow(xb, antidown4)*exp(1.0+antidown5*xb);
377  Double_t FuncAd2 = (down0+down1*xb+down2*pow(xb, 2))*pow((1-xb), 4)*pow(xb, down3)*exp(1.0+down4*xb);
378  Double_t FuncBd2 = (antidown0+antidown1*xa+antidown2*pow(xa, 2)+antidown3*pow(xa, 3))*pow((1-xa), 4)*pow(xa, antidown4)*exp(1.0+antidown5*xa);
379 
380  Double_t Funcca = (charm0+charm1*xa+charm2*pow(xa, 2)+charm3*pow(xa, 3))*pow((1-xa), 4)*pow(xa, charm4)*exp(1.0+charm5*xa);
381  Double_t Funccb = (charm0+charm1*xb+charm2*pow(xb, 2)+charm3*pow(xb, 3))*pow((1-xb), 4)*pow(xb, charm4)*exp(1.0+charm5*xb);
382  Double_t Funcsa = (strange0+strange1*xa+strange2*pow(xa, 2))*pow((1-xa), 4)*pow(xa, strange3)*exp(1.0+strange4*xa);
383  Double_t Funcsb = (strange0+strange1*xb+strange2*pow(xb, 2))*pow((1-xb), 4)*pow(xb, strange3)*exp(1.0+strange4*xb);
384  Double_t Funcba = (bottom0+bottom1*xa+bottom2*pow(xa, 2))*pow((1-xa), 4)*pow(xa, bottom3)*exp(1.0+bottom4*xa);
385  Double_t Funcbb = (bottom0+bottom1*xb+bottom2*pow(xb, 2))*pow((1-xb), 4)*pow(xb, bottom3)*exp(1.0+bottom4*xb);
386 
387  Double_t totSec = 0;
388 
389  if (Vdecay1!=RooSpin::kVdecayType_Wany){ // ZH or gammaH
390  Double_t FuncABu = FuncAu1/xa*FuncBu1/xb+FuncAu2/xa*FuncBu2/xb;
391  Double_t FuncABd = FuncAd1/xa*FuncBd1/xb+FuncAd2/xa*FuncBd2/xb;
392  Double_t FuncABc = Funcsa*Funcsb/xa/xb;
393  Double_t FuncABs = Funcca*Funccb/xa/xb;
394  Double_t FuncABb = Funcba*Funcbb/xa/xb;
395 
396  totSec = 2.*prefactor*mVal*(
397  (FuncABu)*weightu
398  +(FuncABd)*weightd
399  +(FuncABc)*weightc
400  +(FuncABs)*weights
401  +(FuncABb)*weightb
402  );
403  }
404  else{ // WH
405  Double_t FuncAB_udbar = FuncAu1/xa*FuncBd1/xb + FuncAu2/xa*FuncBd2/xb;
406  Double_t FuncAB_csbar = Funcca*Funcsb/xa/xb;
407  Double_t FuncAB_dubar = FuncAd1/xa*FuncBu1/xb + FuncAd2/xa*FuncBu2/xb;
408  Double_t FuncAB_scbar = Funccb*Funcsa/xa/xb;
409 
410  totSec = 2.*prefactor*mVal*(
411  (FuncAB_udbar)*weightu
412  +(FuncAB_dubar)*weightd
413  +(FuncAB_csbar)*weightc
414  +(FuncAB_scbar)*weights
415  );
416  }
417 
418  if (totSec<=0) totSec = 1e-5;
419  return totSec;
420 }

Member Data Documentation

◆ sqrts

Double_t RooSpinZero_3D_pp_VH::sqrts

Definition at line 12 of file RooSpinZero_3D_pp_VH.h.


The documentation for this class was generated from the following files:
value
pymela::gHIGGS_KAPPA value("gHIGGS_KAPPA_TILDE", pymela::gHIGGS_KAPPA_TILDE) .value("SIZE_HQQ"
RooSpin::Phi
RooRealProxy Phi
Definition: RooSpin.h:110
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
RooSpinZero::RooSpinZero
RooSpinZero()
Definition: RooSpinZero.cc:8
RooSpin::m1
RooRealProxy m1
Definition: RooSpin.h:111
RooSpinZero::computeNeededAmplitude
virtual Bool_t computeNeededAmplitude(int VGammaVpmode1, int VGammaVpmode2) const final
Definition: RooSpinZero.cc:583
RooSpin::calculateVprimeffR1R2
virtual void calculateVprimeffR1R2(Double_t &R1Val, Double_t &R2Val) const
Definition: RooSpin.cc:343
RooSpin::checkFundamentalType
virtual Bool_t checkFundamentalType(const RooRealProxy &proxy) const
Definition: RooSpin.cc:392
RooSpin::Y
RooRealProxy Y
Definition: RooSpin.h:116
RooSpin::Vdecay2
RooSpin::VdecayType Vdecay2
Definition: RooSpin.h:136
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
RooSpinZero_3D_pp_VH::sqrts
Double_t sqrts
Definition: RooSpinZero_3D_pp_VH.h:12
hto_aux_hbb::xb
real *8 xb
Definition: CALLING_cpHTO.f:226
RooSpinZero_3D_pp_VH::partonicLuminosity
Double_t partonicLuminosity(Double_t mVal, Double_t YVal, Double_t sqrts) const
Definition: RooSpinZero_3D_pp_VH.cc:262
RooSpin::m2
RooRealProxy m2
Definition: RooSpin.h:112
RooSpin::h2
RooRealProxy h2
Definition: RooSpin.h:109
RooSpinZero::calculateAmplitudes
virtual void calculateAmplitudes(Double_t &A00Re, Double_t &A00Im, Double_t &AppRe, Double_t &AppIm, Double_t &AmmRe, Double_t &AmmIm, int VGammaVpmode1=0, int VGammaVpmode2=0) const
Definition: RooSpinZero.cc:477
RooSpinZero_3D_pp_VH::evaluatePolarizationTerms
void evaluatePolarizationTerms(Double_t &A00term, Double_t &Appterm, Double_t &Ammterm, Double_t &A00ppterm, Double_t &A00mmterm, Double_t &Appmmterm, const Int_t code, int VGammaVpmode1=0, int VGammaVpmode2=0) const
Definition: RooSpinZero_3D_pp_VH.cc:32
RooSpin::hs
RooRealProxy hs
Definition: RooSpin.h:114
RooSpin::GeVunit
static constexpr Double_t GeVunit
Definition: RooSpin.h:141
Q
double Q[11]
Definition: TMCFM.hh:121
RooSpin::Vdecay1
RooSpin::VdecayType Vdecay1
Definition: RooSpin.h:135
RooSpin::kVdecayType_Wany
@ kVdecayType_Wany
Definition: RooSpin.h:29
RooSpin::h1
RooRealProxy h1
Definition: RooSpin.h:108
RooSpinZero_3D_pp_VH::RooSpinZero_3D_pp_VH
RooSpinZero_3D_pp_VH()
Definition: RooSpinZero_3D_pp_VH.cc:4
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