38 TString spname_core = spname;
39 spname_core.Append(
"_Smooth");
40 spname_core.Prepend(
"sp_tg_");
42 TFile* fin = TFile::Open(path,
"read");
45 if (fin!=0 && !fin->IsZombie() && fin->IsOpen()){
46 TString spname_low = spname_core; spname_low.Prepend(
"lowFcn_");
47 fcnLow = (TF1*)fin->Get(spname_low);
49 TString spname_high = spname_core; spname_high.Prepend(
"highFcn_");
50 fcnHigh = (TF1*)fin->Get(spname_high);
52 TString spname_mid = spname_core;
53 fcnMid = (TSpline3*)fin->Get(spname_mid);
55 else MELAerr <<
"MelaPConstant::GetFcnFromFile: Failed to open file in path " << path << endl;
56 if (fin!=0 && fin->IsOpen()) fin->Close();
66 if (verbosity>=
TVar::DEBUG)
MELAout <<
"MelaPConstant::Eval: Candidate mass is " << candMass << endl;
67 if (candMass<=0.)
return 0.;
68 else if (
fcnLow!=0 && candMass<fcnLow->GetXmax()) result =
fcnLow->Eval(candMass);
71 double var = candMass;
72 if (var<fcnMid->GetXmin()) var =
fcnMid->GetXmin();
74 result =
fcnMid->Eval(candMass);
78 if (verbosity>=
TVar::DEBUG)
MELAout <<
"MelaPConstant::Eval: Spline evaluated to " << result << endl;
80 bool multiplyALR=
false;
81 bool multiplyHprop=
false;
82 bool multiplyAVjjprop=
false;
84 unsigned int powAlphaSatMZ=0;
85 result = pow(10., result);
189 if (verbosity>=
TVar::DEBUG)
MELAout <<
"MelaPConstant::Eval: Multiplying " << result <<
" by nothing." << endl;
193 if (multiplyHprop) result *= this->
GetHPropagator(RcdME, verbosity);
194 if (sigmaZ4lprop!=0) result *= this->
GetZPropagator(RcdME, sigmaZ4lprop, verbosity);
195 if (powAlphaSatMZ!=0) result *= this->
GetAlphaSatMZ(RcdME, powAlphaSatMZ, verbosity);
198 if (verbosity>=
TVar::DEBUG)
MELAout <<
"End MelaPConstant::Eval with " << result << endl;
204 double sh = pow(RcdME->
melaCand->
m(), 2);
207 propagator = 1./(pow(sh-pow(mh, 2), 2) + pow(mh*gah, 2));
209 <<
"MelaPConstant::GetHPropagator: "
217 double sh = pow(candMass, 2);
220 double prop_sh = 1./(pow(sh-pow(
mz, 2), 2) + pow(
mz*gaz, 2));
221 if (sigmaZ4lprop>0.){
222 const double dsigmaZ4lprop=sigmaZ4lprop;
223 if (fabs(candMass-
mz)<=dsigmaZ4lprop*gaz){
224 double shdn = pow(
mz-dsigmaZ4lprop*gaz, 2);
225 double shup = pow(
mz+dsigmaZ4lprop*gaz, 2);
226 double prop_shdn = 1./(pow(shdn-pow(
mz, 2), 2) + pow(
mz*gaz, 2));
227 double prop_shup = 1./(pow(shup-pow(
mz, 2), 2) + pow(
mz*gaz, 2));
228 double fsh = (sh-shdn)/(shup-shdn);
229 propagator = prop_sh / (prop_shdn*(1.-fsh) + prop_shup*fsh);
232 else if (sigmaZ4lprop<0.)
propagator = prop_sh;
234 <<
"MelaPConstant::GetZPropagator: "
247 int nRequested_AssociatedJets=2;
248 int AssociationVCompatibility=0;
252 AssociationVCompatibility=24;
257 AssociationVCompatibility=23;
272 vector<TLorentzVector> pJets;
274 for (
auto& part : pAssociated){
276 if (pJets.size()==2)
break;
278 if (pJets.size()==2) mJJval = (pJets[0] + pJets[1]).M();
279 if (mJJval>=0.)
propagator = 1./(pow(pow(mJJval, 2)-pow(mv, 2), 2) + pow(mv*gav, 2));
282 <<
"MelaPConstant::GetAssociatedVjjPropagator: "
289 double aL1, aR1, aL2, aR2;
293 <<
"MelaPConstant::GetVDaughterCouplings: "
294 <<
"L**2+R**2 couplings=" << pow(aL1, 2)+pow(aR1, 2) <<
" " << pow(aL2, 2)+pow(aR2, 2) <<
" "
296 if (fabs(aL1)>0. || fabs(aR1)>0.) result *= pow(aL1, 2)+pow(aR1, 2);
297 if (fabs(aL2)>0. || fabs(aR2)>0.) result *= pow(aL2, 2)+pow(aR2, 2);
303 result = pow(alphasVal, powAlphaSatMZ);
305 <<
"MelaPConstant::GetAlphaSatMZ: "
306 <<
"alphas(MZ)=" << alphasVal <<
" (**" << powAlphaSatMZ <<
") "