Page MenuHomeHEPForge

ScannerSUser.cpp
No OneTemporary

ScannerSUser.cpp

#include "ScannerScore/ScannerSUser.h"
#include "ScannerSUserAux.h"
using namespace std;
//////////////////////////////////////////////////////////
////// Function contents to be defined by the user ///////
//////////////////////////////////////////////////////////
/// WARNING: Do not change the prototypes of these ///
/// template functions since they are used by the core ///
/// routines. Only change their contents! ///
//////////////////////////////////////////////////////////
void MyPhiParametrization(const PhiParamVec & PhiPar,PhiVec & Phi){
//////////////////////////
// Variables:
// PhiPar[] : Vector of VEV parameters
// Phi[] : Vector of VEVs
///////////////////////////
// Description:
//The purpose of this function is to provide for a parametrization of the VEVs such that they can be generated in more generic ways other than just in a hypercubic box. For example in the 2HDM model we may want to generate h_1=246*cos(beta) and h_2=246*sin(beta), i.e. on a circle, using beta as a parameter.
//Here you must write down such a relation in the form Phi[i]=function(PhiPar[0],PhiPar[1],...). The parameter ranges have already been specified in the mathematica notebook.
Phi[2]=246*abs(sin(PhiPar[0]));
Phi[6]=246*abs(cos(PhiPar[0]));
Phi[10]=246*abs(sin(PhiPar[1]));
Phi[14]=246*abs(cos(PhiPar[1]));
}
void MyInternalMixing(const PhiParamVec & PhiPar,const PhiVec & Phi,MixingparamVec & MixPars,vector< vector<double> > & MixInternal,RandGen & r){
//////////////////////////
// Variables:
// PhiPar[] Vector of VEV parameters
// Phi[] Vector of VEVs
// MixPars[] Vector of Mixing matrix parameters
// MixInternal[i][j] Used defined mixing matrix for the mixing block. i runs over the mass eigenstates and j runs from 0 to Nmixing-1 (Nmixing is the number or mixing states)
// r random number generator (called as r(mix,max)) in case the user whishes to change here the scan of MixPars[] more flexibly.
///////////////////////////
// Description:
//The purpose of this function is to provide for a parametrization of the mixing matrix when for simpler cases where an analytic parametrization is natural, just as for example in the 2HDM. Since at this point in the scan the VEVs have been generated (and possibly their parameters, if they have been re-parametrized), we assume a general structure where the mixing matrix parametrization can depend on such (constant) quantities (i.e. Phi, the VEVS and PhiPar, the parameters) and a new set of parameters (MixPars) whose ranges have been specified in the Mathematica notebook.
//Contrarily to the VEV re-parametrization, we allow here the use the option to actually change the values of MixPars (i.e. override the values that have been generated in the ranges defined in the mathematica notebook) so that relations between Mixing parameters and VEV parameters are possible (such as beta=alpha-Pi/2 in the decoupling limit of the 2HDM).
//Here you must write down:
// i) (this one is optional) a relation MixPars[i]=function(Phi[0],...,PhiPars[0],...)
MixPars[0]=PhiPar[0]-acos(-1)/2e0;
// ii) Expressions for the mixing matrix elements in the form MixInternal[i][j]=Function(MixPars[0],...,Phi[0],...,PhiPars[0],...), where the index i runs over the scalar eigenstates and the index j runs over the original mixing scalar states according to the order defined in the mathematica file. IMPORTANT NOTE: You are advised to check (in VERBOSE mode) that the ordering is indeed as you think it is. Note for example that the mass eigenstates are only ordered in mass if you enforce this in the Mathematica file! The work around for example in the 2HDM mode is to split the scan in 2 scans: The first, where the SM Higgs is the Heavy (and this state mass[0] fixed to 126) and the other is the ligth one (mass[1] < 126) and then another scan where the SM Higgs is the light (and this state mass[1] fixed at 126) and the other is the Heavy one (mass[0] > 126)
MixInternal[0][0]=cos(MixPars[0]);
MixInternal[0][1]=-sin(MixPars[0]);
MixInternal[1][0]=sin(MixPars[0]);
MixInternal[1][1]=cos(MixPars[0]);
}
void MyCoupMassRelations(const PhiParamVec & PhiPar,const PhiVec & Phi,const vector< vector<double> > & Mixing,const MixingparamVec & MixPars,vector<double> & L,vector<double> & Mass, MLparamVec & MLparams, vector<double> & IndependentMs,vector<double> & IndependentLs,RandGen & r){
//////////////////////////
// Variables:
// PhiPar[] Vector of VEV parameters
// Phi[] Vector of VEVs
// MixPars[] Vector of Mixing matrix parameters
// Mixing[i][j] Full mixing matrix (diagonal directions also present in the lines below the mixing directions) i runs over all mass eigenstates and j runs over all initial (gauge) scalar states according to the Mathematica ordering
// r random number generator (called as r(mix,max)) in case the user whishes to change here the scan of MixPars[] more flexibly.
///////////////////////////
// Description:
//The purpose of this function is to provide a way of imposing extra relations in the scan among the last masses and couplings that are left to be generated at the end, through a parametrization, and/or with all the other quantities that have already been generated in in the earlier stages of the scan step.
//IMPORTANT NOTE: it is crucial in this case, that you check in Verbose mode that the relations you impose below are among independent masses and couplings (in VERBOSE mode there are some lines at the end identifying the last independent quantities that are generated). If not, you may have to re-order your fields and couplings in the input mathematica notebook (the rule is that the prigram tries to leave for last, the last masses and couplings in the numbering adopted in the Mathematica notebook). In any case, below you will have to "declare" which couplings and masses you want to constrain so the code will crash and issue a warning if what you are trying to do is not allowed.
// Since at this point in the scan the VEVs, and Mixings have been generated (and possibly their parameters, if they have been re-parametrized), we assume a general structure where the relations you impose may depend on all such (constant) quantities and a new set of parameters (MLparams) whose ranges have been specified in the Mathematica notebook.
//Again, we allow here the use the option to actually change the values of MLparams (i.e. override the values that have been generated in the ranges defined in the mathematica notebook).
//Here you must write down:
// i) (WARNING: this one is NOT optional) specify here which masses and couplings (in the allowed set of independent couplings) you are going to use in your parametrization
IndependentMs.push_back(1); //Mass[1] here for example will re-parametrised
IndependentMs.push_back(2); //and Mass[2] as well
//and couplings (in this example we comment the next line and use only relations among masses)
////IndependentLs.push_back(7);
// ii) Now write here your relations (in this example, this re-parametrization sets two masses to be equal)
Mass[1]=MLparams[0];
Mass[2]=MLparams[0];
}
bool CheckStability(LambdaRef & L){
/*if(L[3]>0 && L[4]>0 && L[5]+ sqrt(L[3]*L[4])>0 && L[5]+L[6]-abs(L[7]) + sqrt(L[3]*L[4]) >0 ){
return false;
}*/
return true;
}
bool CheckGlobal(PhiRef & Phi0,LambdaRef & L0,Potential & V){
//Bind references to auxiliary potential Vaux
PhiRef Phi(V);
LambdaRef L(V);
//Copy values from current parameter space point
Phi.copy(Phi0);
L.copy(L0);
///////////////////////////////////////////
///// Your calculations here! /////////////
///////////////////////////////////////////
/*/// Compute discriminant D
double kd = pow((L[3]/L[4]),0.25);
double Disc=(L[0]-kd*kd*L[1])/(Phi[6]/Phi[2]-kd);
if(Disc < 0 || Disc == 0)
return false;
Phi.copy(Phi0);
*/
return true;
}
bool UserAnalysis(PhiRef & Phi,LambdaRef & L,MassRef & Mass, MmixingRef & Mixing){
/*double g011 = 3.0/4.0*L[1]* Phi[2]* Mixing[0][2]* pow(Mixing[1][2],2) + 1.0/2.0* L[2]* Phi[2]* Mixing[0][4]* Mixing[1][4]* Mixing[1][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][5]* Mixing[1][5]* Mixing[1][2] + 1.0/4.0* L[2]* Phi[2]* Mixing[0][2]*pow( Mixing[1][4],2) +
1.0/4.0* L[2]* Phi[2]* Mixing[0][2]* pow(Mixing[1][5],2) + 1.0/4.0* L[2]* Phi[5]* Mixing[0][5]* pow(Mixing[1][2],2) +
1.0/2.0* L[2]* Phi[5] *Mixing[0][2]* Mixing[1][5]* Mixing[1][2] + 1.0/4.0* L[4]* Phi[5]* Mixing[0][5]* pow(Mixing[1][4],2) +
3.0/4.0* L[4]* Phi[5]* Mixing[0][5]* pow(Mixing[1][5],2) + 1.0/2.0* L[4] *Phi[5]* Mixing[0][4]* Mixing[1][4]* Mixing[1][5] +
1.0/4.0* L[2]* Phi[4]* Mixing[0][4]* pow(Mixing[1][2],2) + 1.0/2.0* L[2]* Phi[4] *Mixing[0][2]* Mixing[1][4] *Mixing[1][2] +
3.0/4.0* L[4]* Phi[4]* Mixing[0][4]* pow(Mixing[1][4],2) + 1.0/4.0* L[4]* Phi[4]* Mixing[0][4]* pow(Mixing[1][5],2) +
1.0/2.0* L[4]* Phi[4] *Mixing[0][5]* Mixing[1][4] *Mixing[1][5];
double g022 = 3.0/4.0* L[1]* Phi[2]*Mixing[0][2]* pow(Mixing[2][2],2) + 1.0/2.0* L[2]* Phi[2]* Mixing[0][4]* Mixing[2][4]* Mixing[2][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][5]* Mixing[2][5]* Mixing[2][2] + 1.0/4.0* L[2]* Phi[2]* Mixing[0][2]* pow(Mixing[2][4],2) +
1.0/4.0* L[2]* Phi[2]* Mixing[0][2]* pow(Mixing[2][5],2) + 1.0/4.0* L[2]* Phi[5]* Mixing[0][5]* pow(Mixing[2][2],2) +
1.0/2.0* L[2]* Phi[5] *Mixing[0][2]* Mixing[2][5]* Mixing[2][2] + 1.0/4.0* L[4]* Phi[5]* Mixing[0][5]* pow(Mixing[2][4],2) +
3.0/4.0* L[4]* Phi[5]* Mixing[0][5]* pow(Mixing[2][5],2) + 1.0/2.0* L[4]* Phi[5]* Mixing[0][4]* Mixing[2][4]* Mixing[2][5] +
1.0/4.0* L[2]* Phi[4]* Mixing[0][4]* pow(Mixing[2][2],2) + 1.0/2.0* L[2]* Phi[4]* Mixing[0][2]* Mixing[2][4]* Mixing[2][2] +
3.0/4.0* L[4]* Phi[4]* Mixing[0][4]* pow(Mixing[2][4],2) + 1.0/4.0* L[4]* Phi[4]* Mixing[0][4]* pow(Mixing[2][5],2) +
1.0/2.0* L[4]* Phi[4]* Mixing[0][5]* Mixing[2][4]* Mixing[2][5];
double g012 = 3.0/2.0* L[1]* Phi[2]* Mixing[0][2]* Mixing[1][2]* Mixing[2][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][4]* Mixing[1][4]* Mixing[2][2] + 1.0/2.0* L[2]* Phi[2]* Mixing[0][5]* Mixing[1][5]* Mixing[2][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][4]* Mixing[1][2]* Mixing[2][4] + 1.0/2.0* L[2]* Phi[2]* Mixing[0][2]* Mixing[1][4]* Mixing[2][4] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][5]* Mixing[1][2]* Mixing[2][5] + 1.0/2.0* L[2]* Phi[2]* Mixing[0][2]* Mixing[1][5]* Mixing[2][5] +
1.0/2.0* L[2]* Phi[5] *Mixing[0][5]* Mixing[1][2]* Mixing[2][2] + 1.0/2.0* L[2]* Phi[5]* Mixing[0][2]* Mixing[1][5]* Mixing[2][2] +
1.0/2.0* L[4]* Phi[5]* Mixing[0][5]* Mixing[1][4]* Mixing[2][4] + 1.0/2.0* L[4]* Phi[5]* Mixing[0][4]* Mixing[1][5]* Mixing[2][4] +
1.0/2.0* L[2]* Phi[5] *Mixing[0][2] *Mixing[1][2]* Mixing[2][5] + 1.0/2.0* L[4]* Phi[5]* Mixing[0][4]* Mixing[1][4]* Mixing[2][5] +
3.0/2.0* L[4]* Phi[5]* Mixing[0][5]* Mixing[1][5]* Mixing[2][5] + 1.0/2.0* L[2]* Phi[4]* Mixing[0][4]* Mixing[1][2]* Mixing[2][2] +
1.0/2.0* L[2]* Phi[4]* Mixing[0][2]* Mixing[1][4]* Mixing[2][2] + 1.0/2.0* L[2]* Phi[4]* Mixing[0][2]* Mixing[1][2]* Mixing[2][4] +
3.0/2.0* L[4]* Phi[4]* Mixing[0][4]* Mixing[1][4]* Mixing[2][4] + 1.0/2.0* L[4]* Phi[4]* Mixing[0][5]* Mixing[1][5]* Mixing[2][4] +
1.0/2.0* L[4]* Phi[4] *Mixing[0][5]* Mixing[1][4]* Mixing[2][5] + 1.0/2.0* L[4]* Phi[4]* Mixing[0][4]* Mixing[1][5]* Mixing[2][5];
double g100 = 3.0/4.0*L[1]*Phi[2]*Mixing[1][2]*pow( Mixing[0][2],2) + 1.0/2.0* L[2]* Phi[2]* Mixing[0][4]* Mixing[1][4]* Mixing[0][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[0][5]* Mixing[1][5]* Mixing[0][2] + 1.0/4.0* L[2]* Phi[2] *pow(Mixing[0][4],2)* Mixing[1][2] +
1.0/4.0* L[2]* Phi[2]* pow(Mixing[0][5],2)* Mixing[1][2] + 1.0/4.0* L[2]* Phi[5]* Mixing[1][5]* pow(Mixing[0][2],2) +
1.0/2.0* L[2]* Phi[5] *Mixing[0][5]* Mixing[1][2]* Mixing[0][2] + 1.0/2.0* L[4]* Phi[5]* Mixing[0][4]* Mixing[0][5]* Mixing[1][4] +
1.0/4.0* L[4]* Phi[5]* pow(Mixing[0][4],2)* Mixing[1][5] + 3.0/4.0* L[4]* Phi[5]* pow(Mixing[0][5],2)* Mixing[1][5] +
1.0/4.0* L[2]* Phi[4]* Mixing[1][4]* pow(Mixing[0][2],2) + 1.0/2.0* L[2]* Phi[4] *Mixing[0][4]* Mixing[1][2]* Mixing[0][2] +
3.0/4.0* L[4]* Phi[4]* pow(Mixing[0][4],2)* Mixing[1][4] + 1.0/4.0* L[4]* Phi[4]* pow(Mixing[0][5],2) *Mixing[1][4] +
1.0/2.0* L[4]* Phi[4] *Mixing[0][4] *Mixing[0][5]* Mixing[1][5];
double g122 = 3.0/4.0* L[1]* Phi[2]* Mixing[1][2]*pow(Mixing[2][2],2)+1.0/2.0* L[2]* Phi[2] *Mixing[1][4]* Mixing[2][4]*Mixing[2][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[1][5]* Mixing[2][5]* Mixing[2][2] + 1.0/4.0* L[2]* Phi[2] *Mixing[1][2]* pow(Mixing[2][4],2) +
1.0/4.0* L[2]* Phi[2]* Mixing[1][2]* pow(Mixing[2][5],2) + 1.0/4.0* L[2]* Phi[5]* Mixing[1][5]*pow( Mixing[2][2],2) +
1.0/2.0* L[2]* Phi[5]* Mixing[1][2]* Mixing[2][5]* Mixing[2][2] + 1.0/4.0* L[4]* Phi[5]* Mixing[1][5]* pow(Mixing[2][4],2) +
3.0/4.0* L[4]* Phi[5] *Mixing[1][5]* pow(Mixing[2][5],2) + 1.0/2.0* L[4]* Phi[5] *Mixing[1][4]* Mixing[2][4]* Mixing[2][5] +
1.0/4.0* L[2]* Phi[4] *Mixing[1][4]*pow( Mixing[2][2],2) + 1.0/2.0* L[2]* Phi[4]* Mixing[1][2]* Mixing[2][4]* Mixing[2][2] +
3.0/4.0* L[4]* Phi[4]* Mixing[1][4]*pow( Mixing[2][4],2) + 1.0/4.0* L[4]* Phi[4]* Mixing[1][4]* pow(Mixing[2][5],2) +
1.0/2.0* L[4]* Phi[4]* Mixing[1][5]* Mixing[2][4]* Mixing[2][5];
double g200 = 3.0/4.0* L[1]*Phi[2]* Mixing[2][2]*pow(Mixing[0][2],2) + 1.0/2.0* L[2]* Phi[2] *Mixing[0][4]* Mixing[2][4]*Mixing[0][2] +
1.0/2.0* L[2]* Phi[2] *Mixing[0][5]* Mixing[2][5]* Mixing[0][2] + 1.0/4.0* L[2]* Phi[2] *pow(Mixing[0][4],2)* Mixing[2][2] +
1.0/4.0* L[2]* Phi[2] *pow(Mixing[0][5],2)* Mixing[2][2] + 1.0/4.0* L[2]* Phi[5]* Mixing[2][5]* pow(Mixing[0][2],2) +
1.0/2.0* L[2]* Phi[5] *Mixing[0][5]* Mixing[2][2] *Mixing[0][2] + 1.0/2.0* L[4] *Phi[5] *Mixing[0][4]* Mixing[0][5]* Mixing[2][4] +
1.0/4.0* L[4]* Phi[5] *pow(Mixing[0][4],2)* Mixing[2][5] + 3.0/4.0* L[4]* Phi[5]* pow(Mixing[0][5],2)* Mixing[2][5] +
1.0/4.0* L[2]* Phi[4]* Mixing[2][4]* pow(Mixing[0][2],2) + 1.0/2.0* L[2]* Phi[4]* Mixing[0][4]* Mixing[2][2]* Mixing[0][2] +
3.0/4.0* L[4]* Phi[4]*pow( Mixing[0][4],2)* Mixing[2][4] + 1.0/4.0* L[4]* Phi[4]* pow(Mixing[0][5],2)* Mixing[2][4] +
1.0/2.0* L[4]* Phi[4] *Mixing[0][4]* Mixing[0][5] *Mixing[2][5];
double g211 =3.0/4.0* L[1]* Phi[2]* Mixing[2][2]*pow( Mixing[1][2],2) + 1.0/2.0* L[2]* Phi[2]* Mixing[1][4]*Mixing[2][4]* Mixing[1][2] +
1.0/2.0* L[2]* Phi[2]* Mixing[1][5]* Mixing[2][5]* Mixing[1][2] + 1.0/4.0* L[2]* Phi[2]* pow(Mixing[1][4],2)* Mixing[2][2] +
1.0/4.0* L[2]* Phi[2] *pow(Mixing[1][5],2)* Mixing[2][2] + 1.0/4.0* L[2]* Phi[5] *Mixing[2][5]* pow(Mixing[1][2],2) +
1.0/2.0* L[2]* Phi[5] *Mixing[1][5]* Mixing[2][2]* Mixing[1][2] + 1.0/2.0* L[4]* Phi[5]* Mixing[1][4]* Mixing[1][5]* Mixing[2][4] +
1.0/4.0* L[4]* Phi[5] *pow(Mixing[1][4],2)* Mixing[2][5] + 3.0/4.0* L[4]* Phi[5]* pow(Mixing[1][5],2) *Mixing[2][5] +
1.0/4.0* L[2]* Phi[4]* Mixing[2][4]* pow(Mixing[1][2],2) + 1.0/2.0* L[2]* Phi[4] *Mixing[1][4]* Mixing[2][2]* Mixing[1][2] +
3.0/4.0* L[4]* Phi[4] *pow(Mixing[1][4],2) *Mixing[2][4] + 1.0/4.0* L[4]* Phi[4]* pow(Mixing[1][5],2)* Mixing[2][4] +
1.0/2.0* L[4]* Phi[4] *Mixing[1][4]* Mixing[1][5]* Mixing[2][5];
g011= 2.0*g011; g022=2.0*g022; g100=2.0*g100; g122=2.0*g122; g200=2.0*g200; g211=2.0*g211;
double xi2bb=-1, xi2tau=-1;
double wSM,BrhbbSM,BrhtauSM;
////LEP BOUNDS CHECK
//Note that Mass[2] is fixed at the SM higgs mass 125, and LEP bounds have to be checked for the Mass[0] and Mass[1]
if(Mass[0]<116.0 && Mass[0]>12.0){
wSM=Interp(Mass[0],WidthSM);
BrhbbSM=Interp(Mass[0],Brbb);
BrhtauSM=Interp(Mass[0],Brtau);
xi2bb=pow(Mixing[0][2],2)*BrhbbSM;
xi2tau=pow(Mixing[0][2],2)*BrhtauSM;
if (Mass[0]>2*Mass[2] && Mass[0]<2*Mass[1]){
double fact = g022*g022/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[2]/Mass[0],2));
fact/=wSM*pow(Mixing[0][2],2);
xi2bb*=1e0/(1e0+fact);
xi2tau*=1e0/(1e0+fact);
}
else if(Mass[0]>2*Mass[2] && Mass[0]>2*Mass[1]){
double fact = g022*g022/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[2]/Mass[0],2))+g011*g011/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[1]/ Mass[0],2));
fact/=wSM*pow(Mixing[0][2],2);
xi2bb*=1e0/(1e0+fact);
xi2tau*=1e0/(1e0+fact);
}
else if(Mass[0]<2*Mass[2] && Mass[0]>2*Mass[1]){
double fact = g011*g011/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[1]/Mass[0],2));
fact/=wSM*pow(Mixing[0][2],2);
xi2bb*=1e0/(1e0+fact);
xi2tau*=1e0/(1e0+fact);
}
else if(Mass[0]> (Mass[2] + Mass[1]) ){
double mp=Mass[1]+Mass[2];
double mm=Mass[1]-Mass[2];
double fact = g012*g012/16e0/acos(-1)/pow(Mass[0],3)*sqrt( (Mass[0]*Mass[0] - mp*mp)*(Mass[0]*Mass[0]-mm*mm) );
fact/=wSM*pow(Mixing[0][2],2);
xi2bb*=1e0/(1e0+fact);
xi2tau*=1e0/(1e0+fact);
}
if(xi2bb>Interp(Mass[0],LEPbb))
return false;
if(xi2tau>Interp(Mass[0],LEPtau))
return false;
}
// the same for Mass[1]
double xi2bb1=-1, xi2tau1=-1;
if(Mass[1]<116.0 && Mass[1]>12.0){
wSM=Interp(Mass[1],WidthSM);
BrhbbSM=Interp(Mass[1],Brbb);
BrhtauSM=Interp(Mass[1],Brtau);
xi2bb1=pow(Mixing[1][2],2)*BrhbbSM;
xi2tau1=pow(Mixing[1][2],2)*BrhtauSM;
if (Mass[1]>2*Mass[2] && Mass[1]<2*Mass[0]){
double fact = g122*g122/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[2]/Mass[1],2));
fact/=wSM*pow(Mixing[1][2],2);
xi2bb1*=1e0/(1e0+fact);
xi2tau1*=1e0/(1e0+fact);
}
else if(Mass[1]>2*Mass[2] && Mass[1]>2*Mass[0]){
double fact = g122*g122/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[2]/Mass[1],2))+g100*g100/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[0 ]/Mass[1],2));
fact/=wSM*pow(Mixing[1][2],2);
xi2bb1*=1e0/(1e0+fact);
xi2tau1*=1e0/(1e0+fact);
}
else if(Mass[1]<2*Mass[2] && Mass[1]>2*Mass[0]){
double fact = g100*g100/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[0]/Mass[1],2));
fact/=wSM*pow(Mixing[1][2],2);
xi2bb1*=1e0/(1e0+fact);
xi2tau1*=1e0/(1e0+fact);
}
else if(Mass[1]<(Mass[0]+Mass[2])){
double mp=Mass[0]+Mass[2];
double mm=Mass[0]-Mass[2];
double fact = g012*g012/16e0/acos(-1)/pow(Mass[1],3)*sqrt( ( Mass[1]*Mass[1] - mp*mp )*( Mass[1]*Mass[1]-mm*mm ) );
fact/=wSM*pow(Mixing[1][2],2);
xi2bb1*=1e0/(1e0+fact);
xi2tau1*=1e0/(1e0+fact);
}
if(xi2bb1>Interp(Mass[1],LEPbb))
return false;
if(xi2tau1>Interp(Mass[1],LEPtau))
return false;
}
double xi2higgs, mu2, xi2mu=-1;
double wSM125=0.0040126;
//Check LHC signal strength for the Higgs & check the LHC signal strength limits for the others mixing scalars
xi2higgs=Mixing[2][2]*Mixing[2][2];
if (Mass[2]>2*Mass[0] && Mass[2]<2*Mass[1]){
double fact = g200*g200/32e0/acos(-1)/Mass[2]*sqrt(1-pow(2*Mass[0]/Mass[2],2));
fact/=wSM125*Mixing[2][2]*Mixing[2][2];
xi2higgs*=1e0/(1e0+fact);
}
else if (Mass[2]>2*Mass[0]&& Mass[2]>2*Mass[1]){
double fact = g200*g200/32e0/acos(-1)/Mass[2]*sqrt(1-pow(2*Mass[0]/Mass[2],2))+ g211*g211/32e0/acos(-1)/Mass[2]*sqrt(1-pow(2*Mass[1]/Mass[2],2));
fact/=wSM125*Mixing[2][2]*Mixing[2][2];
xi2higgs*=1e0/(1e0+fact);
}
else if (Mass[2]<2*Mass[0]&& Mass[2]>2*Mass[1]){
double fact = g211*g211/32e0/acos(-1)/Mass[2]*sqrt(1-pow(2*Mass[1]/Mass[2],2));
fact/=wSM125*Mixing[2][2]*Mixing[2][2];
xi2higgs*=1e0/(1e0+fact);
}
else if(Mass[2]>(Mass[0]+Mass[1])){
double mp=Mass[0]+Mass[1];
double mm=Mass[0]-Mass[1];
double fact = g012*g012/16e0/acos(-1)/pow(Mass[2],3)*sqrt( (Mass[2]*Mass[2] - mp*mp)*(Mass[2]*Mass[2]-mm*mm) );
fact/=wSM*pow(Mixing[2][2],2);
xi2higgs*=1e0/(1e0+fact);
}
if(xi2higgs<0.7 || xi2higgs>1.5) ///CHECK VALUES
return false;
////CHECK LHC signal strength limits for the others mixing scalars
if(Mass[0]>=110 && Mass[0]<=600){
mu2=Interp(Mass[0],muATLAS);
wSM=Interp(Mass[0],WidthSM);
xi2mu=Mixing[0][2]*Mixing[0][2];
if(Mass[0]<2*Mass[1] && Mass[0]>2*Mass[2]){
double fact = g022*g022/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[2]/Mass[0],2));
fact/=wSM*Mixing[0][2]*Mixing[0][2];
xi2mu*=1e0/(1e0+fact);
}
else if(Mass[0]>2*Mass[1] && Mass[0]<2*Mass[2]){
double fact = g011*g011/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[1]/Mass[0],2));
fact/=wSM*Mixing[0][2]*Mixing[0][2];
xi2mu*=1e0/(1e0+fact);
}
else if (Mass[0]>2*Mass[1]&& Mass[0]>2*Mass[2]){
double fact = g011*g011/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[1]/Mass[0],2))+ g022*g022/32e0/acos(-1)/Mass[0]*sqrt(1-pow(2*Mass[2]/Mass[0],2));
fact/=wSM*Mixing[0][2]*Mixing[0][2];
xi2mu*=1e0/(1e0+fact);
}
else if(Mass[0]>(Mass[1]+Mass[2])){
double mp=Mass[1]+Mass[2];
double mm=Mass[1]-Mass[2];
double fact = g012*g012/16e0/acos(-1)/pow(Mass[0],3)*sqrt( (Mass[0]*Mass[0] - mp*mp)*(Mass[0]*Mass[0]-mm*mm) );
fact/=wSM*pow(Mixing[0][2],2);
xi2mu*=1e0/(1e0+fact);
}
if(xi2mu>mu2) return false;
}
double xi2mu1=-1;
if(Mass[1]>=110 && Mass[1]<=600){
////the same for Mass[1]
mu2=Interp(Mass[1],muATLAS);
wSM=Interp(Mass[1],WidthSM);
xi2mu1=Mixing[1][2]*Mixing[1][2];
if(Mass[1]<2*Mass[0] && Mass[1]>2*Mass[2]){
double fact = g122*g122/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[2]/Mass[1],2));
fact/=wSM*Mixing[1][2]*Mixing[1][2];
xi2mu1*=1e0/(1e0+fact);
}
else if(Mass[1]>2*Mass[0] && Mass[1]<2*Mass[2]){
double fact = g100*g100/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[0]/Mass[1],2));
fact/=wSM*Mixing[1][2]*Mixing[1][2];
xi2mu1*=1e0/(1e0+fact);
}
else if (Mass[1]>2*Mass[0]&& Mass[1]>2*Mass[2]){
double fact = g100*g100/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[0]/Mass[1],2))+ g122*g122/32e0/acos(-1)/Mass[1]*sqrt(1-pow(2*Mass[2]/ Mass[1],2));
fact/=wSM*Mixing[1][2]*Mixing[1][2];
xi2mu1*=1e0/(1e0+fact);
}
else if(Mass[1]>(Mass[0]+Mass[2])){
double mp=Mass[0]+Mass[2];
double mm=Mass[0]-Mass[2];
double fact = g012*g012/16e0/acos(-1)/pow(Mass[1],3)*sqrt( (Mass[1]*Mass[1] - mp*mp)*(Mass[1]*Mass[1]-mm*mm) );
fact/=wSM*pow(Mixing[1][2],2);
xi2mu1*=1e0/(1e0+fact);
}
if(xi2mu1>mu2) return false;
}
////// EWPO CHECK
/////Checking TSU Electroweak precision parameters
double Mz2=91.2*91.2;
double Mw2=80.3*80.3;
double cw2=Mw2/Mz2;
double sw2=1-cw2;
double DeltaS=DS(Mass,Mixing,2)-DSsm(120);
double DeltaT=DT(Mass,Mixing,2)-DTsm(120);
double DeltaU=DU1(Mass,Mixing,2)-DU1sm(120)-DeltaS;
double dXi2=0e0;
double Vec[3]={DeltaS-DeltaSTU[0],DeltaT-DeltaSTU[1],DeltaU-DeltaSTU[2]};
for(size_t i=0;i!=3;++i){
double temp=0e0;
for(size_t j=0;j!=3;++j)
temp+=InvCovSTU[i][j]*Vec[j];
dXi2+=Vec[i]*temp;
}
//clog << "dXi2!!!!!!!!!! = "<<dXi2 <<"\t DeltaU= "<<DeltaU<< endl;
if(dXi2>7.815){
// clog<< "baaaah = "<<dXi2 << endl;
return false;
}*/
for(size_t i=0; i!=Phi.size();++i){
cout <<Mass[i]<< "\t";
}
for(size_t i=0; i!=L.size();++i){
cout << L[i]<< "\t";
}
//clog<<"b2= " <<xi2bb1<<endl;
cout<<endl<<"Print VEVS"<< endl;
for(size_t i=0; i!=Phi.size();++i){
cout << Phi[i]<< "\t";
}
cout<<endl;
//cout<<endl<<endl << Phi[0]<< "\t" << Phi[1]<< "\t"<< Phi[2]<<"\t"<< Phi[3]<< "\t" << Phi[4]<< "\t"<< Phi[5]<< "\t" << xi2bb <<"\t"<< xi2tau << "\t"<<xi2bb1 <<"\t"<< xi2tau1 <<"\t" << xi2higgs << "\t"<< xi2mu <<"\t"<< xi2mu1<<"\t"<< Mixing[0][2] << "\t"<< Mixing[1][2]<<"\t"<<Mixing[2][2] <<endl;
return true;
}

File Metadata

Mime Type
text/x-c
Expires
Sat, Dec 21, 4:08 PM (1 d, 21 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4014202
Default Alt Text
ScannerSUser.cpp (23 KB)

Event Timeline