CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
Roo4lMasses2D_Bkg Class Reference

#include <HZZ4LRooPdfs.h>

Inheritance diagram for Roo4lMasses2D_Bkg:

Public Member Functions

virtual TObject * clone (const char *newname) const
 
 Roo4lMasses2D_Bkg ()
 
 Roo4lMasses2D_Bkg (const char *name, const char *title, RooAbsReal &_mZstar, RooAbsReal &_mZZ, RooAbsReal &_channelVal)
 
 Roo4lMasses2D_Bkg (const Roo4lMasses2D_Bkg &other, const char *name=0)
 
virtual ~Roo4lMasses2D_Bkg ()
 

Protected Member Functions

Double_t evaluate () const
 
Double_t UnitStep (double arg) const
 

Protected Attributes

RooRealProxy channelVal
 
RooRealProxy mZstar
 
RooRealProxy mZZ
 

Detailed Description

Definition at line 250 of file HZZ4LRooPdfs.h.

Constructor & Destructor Documentation

Roo4lMasses2D_Bkg::Roo4lMasses2D_Bkg ( )

Definition at line 2268 of file HZZ4LRooPdfs.cc.

Referenced by clone().

2268 {}
Roo4lMasses2D_Bkg::Roo4lMasses2D_Bkg ( const char *  name,
const char *  title,
RooAbsReal &  _mZstar,
RooAbsReal &  _mZZ,
RooAbsReal &  _channelVal 
)

Definition at line 2270 of file HZZ4LRooPdfs.cc.

2274  :
2275 RooAbsPdf(name,title),
2276 mZstar("mZstar","mZstar",this,_mZstar),
2277 mZZ("mZZ","mZZ",this,_mZZ),
2278 channelVal("channelVal","channelVal",this,_channelVal)
2279 {
2280 }
RooRealProxy mZstar
Definition: HZZ4LRooPdfs.h:264
RooRealProxy channelVal
Definition: HZZ4LRooPdfs.h:266
RooRealProxy mZZ
Definition: HZZ4LRooPdfs.h:265
Roo4lMasses2D_Bkg::Roo4lMasses2D_Bkg ( const Roo4lMasses2D_Bkg other,
const char *  name = 0 
)

Definition at line 2283 of file HZZ4LRooPdfs.cc.

2283  :
2284 RooAbsPdf(other,name),
2285 mZstar("mZstar",this,other.mZstar),
2286 mZZ("mZZ",this,other.mZZ),
2287 channelVal("channelVal",this,other.channelVal)
2288 {
2289 }
RooRealProxy mZstar
Definition: HZZ4LRooPdfs.h:264
RooRealProxy channelVal
Definition: HZZ4LRooPdfs.h:266
RooRealProxy mZZ
Definition: HZZ4LRooPdfs.h:265
virtual Roo4lMasses2D_Bkg::~Roo4lMasses2D_Bkg ( )
inlinevirtual

Definition at line 260 of file HZZ4LRooPdfs.h.

260 { }

Member Function Documentation

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

Definition at line 259 of file HZZ4LRooPdfs.h.

References Roo4lMasses2D_Bkg().

259 { return new Roo4lMasses2D_Bkg(*this,newname); }
double Roo4lMasses2D_Bkg::evaluate ( ) const
protected

Definition at line 2303 of file HZZ4LRooPdfs.cc.

References beta, channelVal, gather_cfg::cout, alignCSCRings::e, create_public_lumi_plots::exp, f, Gamma, funct::integral(), mZstar, mZZ, Pi, and mathSSE::sqrt().

2304 {
2305 
2306  double Gamma=0, mZ=0, a0=0, a1=0, a2=0, a3=0, Gamma0=0, m0=0, f=0, f0=0;
2307  double a0_bkgd=0, a1_bkgd=0, a2_bkgd=0, a3_bkgd=0, a4_bkgd=0, a5_bkgd=0, a6_bkgd=0, a7_bkgd=0;
2308  double a8_bkgd=0, a9_bkgd=0, a10_bkgd=0, a11_bkgd=0, a12_bkgd=0, a13_bkgd=0;
2309 
2310  a2 = 0.; a3 = 0.;
2311  if (channelVal == 1.){
2312  mZ = 91.2;
2313  Gamma0 = 24.3063 + -0.169814*mZZ + 0.00274393*(mZZ - 108.86)*(mZZ - 108.86);
2314  m0 = -273.264 + 6.81815*mZZ + -0.0520652*TMath::Power(mZZ,2) + 0.000129716*TMath::Power(mZZ,3);
2315  a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
2316  a1 = -34.7502 + 1.15173*mZZ +-0.0152287*TMath::Power(mZZ,2) + 0.000100538*TMath::Power(mZZ,3)+ -3.317e-07*TMath::Power(mZZ,4)+ 4.37829e-10*TMath::Power(mZZ,5);
2317  a2 = 0.0710702 + -0.00232026*mZZ + 3.00042e-05*TMath::Power(mZZ,2) + -1.92831e-07*TMath::Power(mZZ,3)+ 6.18009e-10*TMath::Power(mZZ,4)+ -7.92751e-13*TMath::Power(mZZ,5);
2318  f = 4.81681e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
2319  Gamma = 252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
2320  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2321  /*
2322  Gamma = 1.50320e+01;
2323  Gamma0 = 83.4831 + -0.711931*mZZ + 0.0367013*(mZZ - 104.704)*(mZZ - 104.704);
2324  m0 = 146.261 + -1.12857*mZZ + 0.0401877*(mZZ - 106.72)*(mZZ - 106.72);
2325  a0 = -0.0348702 + 0.000251279*mZZ + 5.63152e-07*(mZZ - 106.548)*(mZZ - 106.548);
2326  a1 = 0.0013887 + -9.69053e-06*mZZ + 1.62389e-11*(mZZ - 105.303)*(mZZ - 105.303)*(mZZ - 105.303)*(mZZ - 105.303);
2327  f = 4.02164e-01*(TMath::Erf( (mZZ-1.55799e+02)/1.36356e+01 ) + 1.);
2328  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2329  */
2330 
2331  a0_bkgd = 116.19;
2332  a1_bkgd = 4.52219;
2333  a2_bkgd = 105.493;
2334  a3_bkgd = 0.0823749;
2335  a4_bkgd = 180.89;
2336  a5_bkgd = 9.58208;
2337  a6_bkgd = 30.445;
2338  a7_bkgd = 0.182481;
2339  a8_bkgd = 56.1627;
2340  a9_bkgd = 0.0957905;
2341  a10_bkgd = 119.406;
2342  a11_bkgd = -99.674;
2343  a12_bkgd = 9995.69;
2344  a13_bkgd = 0.110563;
2345  }
2346  else if (channelVal == 2.){
2347  mZ = 91.2;
2348  Gamma0 = 64.5791 + -0.465027*mZZ + 0.00680112*(mZZ - 109.083)*(mZZ - 109.083);
2349  m0 = -4528.09 + 98.4925*mZZ + -0.70193*TMath::Power(mZZ,2) + 0.00164952*TMath::Power(mZZ,3);
2350  a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
2351  a1 = 0.0549555 + -0.000367875*mZZ + 6.16188e-10*(mZZ - 106.028)*(mZZ - 106.028)*(mZZ - 106.028)*(mZZ - 106.028);
2352  a2 = -0.000222052 + 1.51606e-06*mZZ + -9.57278e-08*(mZZ - 144.667)*(mZZ - 144.667);
2353  f = 4.82988e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
2354  Gamma = 252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
2355  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2356 
2357  /*
2358  Gamma = 1.50320e+01;
2359  Gamma0 = -56.1597 + 0.542356*mZZ + -0.00250288*(mZZ - 107.336)*(mZZ - 107.336);
2360  m0 = -2.14585 + 0.188968*mZZ + 0.0210833*(mZZ - 108.32)*(mZZ - 108.32);
2361  a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
2362  a1 = -0.000170976 + 1.83011e-06*mZZ + -1.05582e-11*(mZZ - 105.893)*(mZZ - 105.893)*(mZZ - 105.893)*(mZZ - 105.893);
2363  f = 3.53555e-01*(TMath::Erf( (mZZ-1.53281e+02)/1.75311e+00 ) + 1.);
2364  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2365  */
2366  a0_bkgd = 120.096;
2367  a1_bkgd = 15.6766;
2368  a2_bkgd = 149.141;
2369  a3_bkgd = 0.0361427;
2370  a4_bkgd = 181.587;
2371  a5_bkgd = 10.4505;
2372  a6_bkgd = 9.17084;
2373  a7_bkgd = 0.0345372;
2374  a8_bkgd = 38.655;
2375  a9_bkgd = 0.114464;
2376  a10_bkgd = 87.2772;
2377  a11_bkgd = -6.94956;
2378  a12_bkgd = 3.35268;
2379  a13_bkgd = 0.0320278;
2380  /*
2381  a0_bkgd = 114.507;
2382  a1_bkgd = 16.8809;
2383  a2_bkgd = 116.481;
2384  a3_bkgd = 0.0386084;
2385  a4_bkgd = 182.841;
2386  a5_bkgd = 15.2248;
2387  a6_bkgd = 27.79;
2388  a7_bkgd = 0.133664;
2389  a8_bkgd = 59.2288;
2390  a9_bkgd = 0.0400656;
2391  a10_bkgd = 93.8226;
2392  a11_bkgd = -2.64585;
2393  a12_bkgd = 5066.99;
2394  a13_bkgd = 0.125328;
2395  */
2396  }
2397  else if (channelVal == 3.){
2398  mZ = 91.2;
2399  Gamma0 = 36.9986 + -0.250136*mZZ + 0.00474031*(mZZ - 108.732)*(mZZ - 108.732);
2400  m0 = -3266.9 + 73.5969*mZZ + -0.544448*TMath::Power(mZZ,2) + 0.00133127*TMath::Power(mZZ,3);
2401  a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
2402  a1 = 0.0206819 + -0.000168968*mZZ + 4.26934e-11*(mZZ - 40.4456)*(mZZ - 40.4456)*(mZZ - 40.4456)*(mZZ - 40.4456);
2403  a2 = -1.271e-05 + 8.742e-08*mZZ + -6.34276e-08*(mZZ - 144.032)*(mZZ - 144.032);
2404  f = 4.82988e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
2405  Gamma = 252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
2406  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2407  /*
2408  Gamma = 1.50320e+01;
2409  mZ = 91.2;
2410  Gamma0 = -78.9298 + 0.744417*mZZ + -0.0105399*(mZZ - 109.541)*(mZZ - 109.541);
2411  m0 = -76.0686 + 0.840304*mZZ + -0.00797722*(mZZ - 105.677)*(mZZ - 105.677);
2412  a0 = 0.378445 + -0.00310967*mZZ + 5.78471e-05*(mZZ - 107.739)*(mZZ - 107.739);
2413  a1 = 0.00109279 + -8.90024e-06*mZZ + 5.21042e-12*(mZZ - 103.517)*(mZZ - 103.517)*(mZZ - 103.517)*(mZZ - 103.517);
2414  f = 4.81681e-01*(TMath::Erf( (mZZ-1.30465e+02)/8.69644e-01 ) + 1.);
2415  f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
2416  */
2417  a0_bkgd = 114.504;
2418  a1_bkgd = 14.3013;
2419  a2_bkgd = 101.43;
2420  a3_bkgd = 0.0455842;
2421  a4_bkgd = 179.976;
2422  a5_bkgd = 9.89769;
2423  a6_bkgd = 28.5377;
2424  a7_bkgd = 0.0692236;
2425  a8_bkgd = 51.5593;
2426  a9_bkgd = 0.0561965;
2427  a10_bkgd = 101.547;
2428  a11_bkgd = -1.71367;
2429  a12_bkgd = 7513.75;
2430  a13_bkgd = 0.543254;
2431  }
2432  else{
2433  std::cout << "Invalid paramters for this PDF!" << std::endl;
2434  }
2435 
2436 
2437  // ZZ shape
2438  double ZZshape = (.5+.5*TMath::Erf((mZZ-a0_bkgd)/a1_bkgd))*(a3_bkgd/(1+exp((mZZ-a0_bkgd)/a2_bkgd)))+(.5+.5*TMath::Erf((mZZ-a4_bkgd)/a5_bkgd))*(a7_bkgd/(1+exp((mZZ-a4_bkgd)/a6_bkgd))+a9_bkgd/(1+exp((mZZ-a4_bkgd)/a8_bkgd)))+(.5+.5*TMath::Erf((mZZ-a10_bkgd)/a11_bkgd))*(a13_bkgd/(1+exp((mZZ-a10_bkgd)/a12_bkgd)) );
2439 
2440 
2441  double mZDistribution, acceptance;
2442 
2443  //================= mZ Distribution =================
2444  double beta= (1-(mZstar-mZ)*(mZstar-mZ)/(mZZ*mZZ))*(1-(mZstar+mZ)*(mZstar+mZ)/(mZZ*mZZ));
2445  if(beta<0) return 0.0000001;
2446  else mZDistribution = beta;
2447 
2448  //================= acceptance (chebychev polynomials)
2449  acceptance = a0+a1*mZstar+a2*(2*mZstar*mZstar-1)+a3*(4*mZstar*mZstar*mZstar-3*mZstar);
2450 
2451  //================= on-shell Z contamination ========
2452 
2453  double onShellZ = exp(-(mZstar-mZ)*(mZstar-mZ)/(2*Gamma*Gamma))/sqrt(2*3.1415*Gamma*Gamma);
2454  //double errorFunc = TMath::Erf((mZstar - m0)/Gamma);
2455  double errorFunc = exp(-(mZstar-m0)*(mZstar-m0)/(2*Gamma0*Gamma0))/sqrt(2*3.1415*Gamma0*Gamma0);
2456 
2457  //std::cout << mZZDistribution << " : " << mZDistribution << " : " << acceptance << std::endl;
2458  double final = mZDistribution*((1-f)*(f0*acceptance+(1-f0)*errorFunc)+f*onShellZ);
2459  if (final <= 0) final = 1e-12;
2460 
2462  double integral;
2463  double E = 2.71828183;
2464 
2465  // ========================================================
2466  // integral
2468  double mZstarFix=12.;
2469  double integralT1Lo=((1 - f)*f0*((a1*Power(mZstarFix,6))/6. + (2*a2*Power(mZstarFix,7))/7. + (a0 - a2)*mZstarFix*Power(Power(mZ,2) - Power(mZZ,2),2) + (a1*Power(mZstarFix,2)*Power(Power(mZ,2) - Power(mZZ,2),2))/2. - (a1*Power(mZstarFix,4)*(Power(mZ,2) + Power(mZZ,2)))/2. + (Power(mZstarFix,5)*(a0 - a2*(1 + 4*Power(mZ,2) + 4*Power(mZZ,2))))/5. + (2*Power(mZstarFix,3)*(-(a0*(Power(mZ,2) + Power(mZZ,2))) + a2*(Power(mZ,4) + Power(mZZ,2) + Power(mZZ,4) + Power(mZ,2)*(1 - 2*Power(mZZ,2)))))/3.))/Power(mZZ,4);
2470  mZstarFix=mZZ-mZ;
2471  double integralT1Hi=((1 - f)*f0*((a1*Power(mZstarFix,6))/6. + (2*a2*Power(mZstarFix,7))/7. + (a0 - a2)*mZstarFix*Power(Power(mZ,2) - Power(mZZ,2),2) + (a1*Power(mZstarFix,2)*Power(Power(mZ,2) - Power(mZZ,2),2))/2. - (a1*Power(mZstarFix,4)*(Power(mZ,2) + Power(mZZ,2)))/2. + (Power(mZstarFix,5)*(a0 - a2*(1 + 4*Power(mZ,2) + 4*Power(mZZ,2))))/5. + (2*Power(mZstarFix,3)*(-(a0*(Power(mZ,2) + Power(mZZ,2))) + a2*(Power(mZ,4) + Power(mZZ,2) + Power(mZZ,4) + Power(mZ,2)*(1 - 2*Power(mZZ,2)))))/3.))/Power(mZZ,4);
2472 
2473  //std::cout << "IntegralHI: " << integralT1Hi << ", IntegralLO: " << integralT1Lo << std::endl;
2474 
2475  mZstarFix=12.;
2476  double t2loA = (3*Power(Gamma0,4) + Power(m0,4) + Power(mZ,4) - 2*Power(Gamma0,2)*Power(mZZ,2) + Power(mZZ,4) + Power(m0,2)*(6*Power(Gamma0,2) - 2*Power(mZ,2) - 2*Power(mZZ,2)) - 2*Power(mZ,2)*(Power(Gamma0,2) + Power(mZZ,2)));
2477  double integralT2Lo=((-1 + f)*(-1 + f0)*(-1.*((Power(Gamma0,2)*(Power(m0,3) + Power(m0,2)*mZstarFix + mZstarFix*(3*Power(Gamma0,2) - 2*Power(mZ,2) + Power(mZstarFix,2) - 2*Power(mZZ,2)) + m0*(5*Power(Gamma0,2) - 2*Power(mZ,2) + Power(mZstarFix,2) - 2*Power(mZZ,2))))/Power(E,Power(m0 - mZstarFix,2)/(2.*Power(Gamma0,2)))) - Gamma0*t2loA*sqrt(TMath::Pi()/2.)*TMath::Erf((m0 - mZstarFix)/(sqrt(2)*Gamma0))))/Power(mZZ,4);
2478  integralT2Lo/=sqrt(2*TMath::Pi()*Gamma0*Gamma0);
2479  mZstarFix=mZZ-mZ;
2480  double t2hiA = (3*Power(Gamma0,4) + Power(m0,4) + Power(mZ,4) - 2*Power(Gamma0,2)*Power(mZZ,2) + Power(mZZ,4) + Power(m0,2)*(6*Power(Gamma0,2) - 2*Power(mZ,2) - 2*Power(mZZ,2)) - 2*Power(mZ,2)*(Power(Gamma0,2) + Power(mZZ,2)));
2481  double integralT2Hi=((-1 + f)*(-1 + f0)*(-1.*((Power(Gamma0,2)*(Power(m0,3) + Power(m0,2)*mZstarFix + mZstarFix*(3*Power(Gamma0,2) - 2*Power(mZ,2) + Power(mZstarFix,2) - 2*Power(mZZ,2)) + m0*(5*Power(Gamma0,2) - 2*Power(mZ,2) + Power(mZstarFix,2) - 2*Power(mZZ,2))))/Power(E,Power(m0 - mZstarFix,2)/(2.*Power(Gamma0,2)))) - Gamma0*t2hiA*sqrt(TMath::Pi()/2.)*TMath::Erf((m0 - mZstarFix)/(sqrt(2)*Gamma0))))/Power(mZZ,4);
2482  integralT2Hi/=sqrt(2*TMath::Pi()*Gamma0*Gamma0);
2483 
2484  mZstarFix=12.;
2485  double t3loA = (3*Power(Gamma,4) + 4*Power(Gamma,2)*Power(mZ,2) - 2*(Power(Gamma,2) + 2*Power(mZ,2))*Power(mZZ,2) + Power(mZZ,4));
2486  double integralT3Lo=(f*((Power(Gamma,2)*(Power(mZ,3) + Power(mZ,2)*mZstarFix - mZstarFix*(3*Power(Gamma,2) + Power(mZstarFix,2) - 2*Power(mZZ,2)) - mZ*(5*Power(Gamma,2) + Power(mZstarFix,2) - 2*Power(mZZ,2))))/Power(E,Power(mZ - mZstarFix,2)/(2.*Power(Gamma,2))) - Gamma*t3loA*sqrt(TMath::Pi()/2.)*TMath::Erf((mZ - mZstarFix)/(sqrt(2)*Gamma))))/Power(mZZ,4);
2487  integralT3Lo/=sqrt(2*TMath::Pi()*Gamma*Gamma);
2488  mZstarFix=mZZ-mZ;
2489  double t3hiA = (3*Power(Gamma,4) + 4*Power(Gamma,2)*Power(mZ,2) - 2*(Power(Gamma,2) + 2*Power(mZ,2))*Power(mZZ,2) + Power(mZZ,4));
2490  double integralT3Hi=(f*((Power(Gamma,2)*(Power(mZ,3) + Power(mZ,2)*mZstarFix - mZstarFix*(3*Power(Gamma,2) + Power(mZstarFix,2) - 2*Power(mZZ,2)) - mZ*(5*Power(Gamma,2) + Power(mZstarFix,2) - 2*Power(mZZ,2))))/Power(E,Power(mZ - mZstarFix,2)/(2.*Power(Gamma,2))) - Gamma*t3hiA*sqrt(TMath::Pi()/2.)*TMath::Erf((mZ - mZstarFix)/(sqrt(2)*Gamma))))/Power(mZZ,4);
2491  integralT3Hi/=sqrt(2*TMath::Pi()*Gamma*Gamma);
2492 
2493  integral = integralT1Hi + integralT2Hi + integralT3Hi - integralT1Lo - integralT2Lo - integralT3Lo;
2494 
2495  if (integral <= 0.) {
2496  std::cout << "integral is less than zero...." << std::endl;
2497  //integral = 100000000.;
2498  }
2499 
2500  return (final/integral)*ZZshape;
2501  //*/
2502  //return final;
2503 }
const double beta
const double Pi
RooRealProxy mZstar
Definition: HZZ4LRooPdfs.h:264
RooRealProxy channelVal
Definition: HZZ4LRooPdfs.h:266
RooRealProxy mZZ
Definition: HZZ4LRooPdfs.h:265
T sqrt(T t)
Definition: SSEVec.h:46
double f[11][100]
Integral< F, X >::type integral(const F &f)
Definition: Integral.h:69
dbl * Gamma
Definition: mlp_gen.cc:38
tuple cout
Definition: gather_cfg.py:121
double Roo4lMasses2D_Bkg::UnitStep ( double  arg) const
protected

Definition at line 2292 of file HZZ4LRooPdfs.cc.

2293 {
2294  if(arg<0.0){
2295  return 0.0;
2296  }
2297  else{
2298  return 1.0;
2299  }
2300 }
A arg
Definition: Factorize.h:36

Member Data Documentation

RooRealProxy Roo4lMasses2D_Bkg::channelVal
protected

Definition at line 266 of file HZZ4LRooPdfs.h.

Referenced by evaluate().

RooRealProxy Roo4lMasses2D_Bkg::mZstar
protected

Definition at line 264 of file HZZ4LRooPdfs.h.

Referenced by evaluate().

RooRealProxy Roo4lMasses2D_Bkg::mZZ
protected

Definition at line 265 of file HZZ4LRooPdfs.h.

Referenced by evaluate().