CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Protected Attributes

Roo4lMasses2D_Bkg Class Reference

#include <HZZ4LRooPdfs.h>

List of all members.

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 ( )

Referenced by clone().

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

Definition at line 2270 of file HZZ4LRooPdfs.cc.

                                                                           :
RooAbsPdf(name,title), 
mZstar("mZstar","mZstar",this,_mZstar),
mZZ("mZZ","mZZ",this,_mZZ),
channelVal("channelVal","channelVal",this,_channelVal)
{ 
} 
Roo4lMasses2D_Bkg::Roo4lMasses2D_Bkg ( const Roo4lMasses2D_Bkg other,
const char *  name = 0 
)

Definition at line 2283 of file HZZ4LRooPdfs.cc.

                                                                                     :  
RooAbsPdf(other,name), 
mZstar("mZstar",this,other.mZstar),
mZZ("mZZ",this,other.mZZ),
channelVal("channelVal",this,other.channelVal)
{ 
} 
virtual Roo4lMasses2D_Bkg::~Roo4lMasses2D_Bkg ( ) [inline, virtual]

Definition at line 260 of file HZZ4LRooPdfs.h.

{ }

Member Function Documentation

virtual TObject* Roo4lMasses2D_Bkg::clone ( const char *  newname) const [inline, virtual]

Definition at line 259 of file HZZ4LRooPdfs.h.

References Roo4lMasses2D_Bkg().

{ 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().

{ 
        
        double Gamma=0, mZ=0, a0=0, a1=0, a2=0, a3=0, Gamma0=0, m0=0, f=0, f0=0;
        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;
        double a8_bkgd=0, a9_bkgd=0, a10_bkgd=0, a11_bkgd=0, a12_bkgd=0, a13_bkgd=0;
        
        a2 = 0.; a3 = 0.;
        if (channelVal == 1.){
                mZ = 91.2;
                Gamma0 = 24.3063 + -0.169814*mZZ + 0.00274393*(mZZ - 108.86)*(mZZ - 108.86);
                m0 = -273.264 + 6.81815*mZZ + -0.0520652*TMath::Power(mZZ,2) + 0.000129716*TMath::Power(mZZ,3);
                a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
                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);
                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);
                f = 4.81681e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
                Gamma =  252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
                f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
                /*
                 Gamma = 1.50320e+01;
                 Gamma0 = 83.4831 + -0.711931*mZZ + 0.0367013*(mZZ - 104.704)*(mZZ - 104.704);
                 m0 = 146.261 + -1.12857*mZZ + 0.0401877*(mZZ - 106.72)*(mZZ - 106.72);
                 a0 = -0.0348702 + 0.000251279*mZZ + 5.63152e-07*(mZZ - 106.548)*(mZZ - 106.548);
                 a1 = 0.0013887 + -9.69053e-06*mZZ + 1.62389e-11*(mZZ - 105.303)*(mZZ - 105.303)*(mZZ - 105.303)*(mZZ - 105.303);
                 f = 4.02164e-01*(TMath::Erf( (mZZ-1.55799e+02)/1.36356e+01 ) + 1.);
                 f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);   
                 */
                
                a0_bkgd = 116.19;
                a1_bkgd = 4.52219;
                a2_bkgd = 105.493;
                a3_bkgd = 0.0823749;
                a4_bkgd = 180.89;
                a5_bkgd = 9.58208;
                a6_bkgd = 30.445;
                a7_bkgd = 0.182481;
                a8_bkgd = 56.1627;
                a9_bkgd = 0.0957905;
                a10_bkgd = 119.406;
                a11_bkgd = -99.674;
                a12_bkgd = 9995.69;
                a13_bkgd = 0.110563;
        }
        else if (channelVal == 2.){
                mZ = 91.2;
                Gamma0 = 64.5791 + -0.465027*mZZ + 0.00680112*(mZZ - 109.083)*(mZZ - 109.083);
                m0 = -4528.09 + 98.4925*mZZ + -0.70193*TMath::Power(mZZ,2) + 0.00164952*TMath::Power(mZZ,3);
                a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
                a1 = 0.0549555 + -0.000367875*mZZ + 6.16188e-10*(mZZ - 106.028)*(mZZ - 106.028)*(mZZ - 106.028)*(mZZ - 106.028);
                a2 = -0.000222052 + 1.51606e-06*mZZ + -9.57278e-08*(mZZ - 144.667)*(mZZ - 144.667);
                f = 4.82988e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
                Gamma =  252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
                f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);    
                
                /*
                 Gamma = 1.50320e+01;
                 Gamma0 = -56.1597 + 0.542356*mZZ + -0.00250288*(mZZ - 107.336)*(mZZ - 107.336);
                 m0 = -2.14585 + 0.188968*mZZ + 0.0210833*(mZZ - 108.32)*(mZZ - 108.32);
                 a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
                 a1 = -0.000170976 + 1.83011e-06*mZZ + -1.05582e-11*(mZZ - 105.893)*(mZZ - 105.893)*(mZZ - 105.893)*(mZZ - 105.893);
                 f = 3.53555e-01*(TMath::Erf( (mZZ-1.53281e+02)/1.75311e+00 ) + 1.);
                 f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
                 */
                a0_bkgd = 120.096;
                a1_bkgd = 15.6766;
                a2_bkgd = 149.141;
                a3_bkgd = 0.0361427;
                a4_bkgd = 181.587;
                a5_bkgd = 10.4505;
                a6_bkgd = 9.17084;
                a7_bkgd = 0.0345372;
                a8_bkgd = 38.655;
                a9_bkgd = 0.114464;
                a10_bkgd = 87.2772;
                a11_bkgd = -6.94956;
                a12_bkgd = 3.35268;
                a13_bkgd = 0.0320278;
                /*
                 a0_bkgd = 114.507;
                 a1_bkgd = 16.8809;
                 a2_bkgd = 116.481;
                 a3_bkgd = 0.0386084;
                 a4_bkgd = 182.841;
                 a5_bkgd = 15.2248;
                 a6_bkgd = 27.79;
                 a7_bkgd = 0.133664;
                 a8_bkgd = 59.2288;
                 a9_bkgd = 0.0400656;
                 a10_bkgd = 93.8226;
                 a11_bkgd = -2.64585;
                 a12_bkgd = 5066.99;
                 a13_bkgd = 0.125328;   
                 */
        }
        else if (channelVal == 3.){
                mZ = 91.2;
                Gamma0 = 36.9986 + -0.250136*mZZ + 0.00474031*(mZZ - 108.732)*(mZZ - 108.732);
                m0 = -3266.9 + 73.5969*mZZ + -0.544448*TMath::Power(mZZ,2) + 0.00133127*TMath::Power(mZZ,3);
                a0 = 0.00205023 + 1.49685e-05*mZZ + 2.45743e-07*(mZZ - 110.553)*(mZZ - 110.553);
                a1 = 0.0206819 + -0.000168968*mZZ + 4.26934e-11*(mZZ - 40.4456)*(mZZ - 40.4456)*(mZZ - 40.4456)*(mZZ - 40.4456);
                a2 = -1.271e-05 + 8.742e-08*mZZ + -6.34276e-08*(mZZ - 144.032)*(mZZ - 144.032);
                f = 4.82988e-01*(TMath::Erf( (mZZ-1.47620e+02)/8.12397e-01 ) + 1.);
                Gamma =  252.406 + -5.11437*mZZ + 0.0345238*TMath::Power(mZZ,2) + -7.44284e-05*TMath::Power(mZZ,3);
                f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);    
                /*
                 Gamma = 1.50320e+01;
                 mZ = 91.2;
                 Gamma0 = -78.9298 + 0.744417*mZZ + -0.0105399*(mZZ - 109.541)*(mZZ - 109.541);
                 m0 = -76.0686 + 0.840304*mZZ + -0.00797722*(mZZ - 105.677)*(mZZ - 105.677);
                 a0 = 0.378445 + -0.00310967*mZZ + 5.78471e-05*(mZZ - 107.739)*(mZZ - 107.739);
                 a1 = 0.00109279 + -8.90024e-06*mZZ + 5.21042e-12*(mZZ - 103.517)*(mZZ - 103.517)*(mZZ - 103.517)*(mZZ - 103.517);
                 f = 4.81681e-01*(TMath::Erf( (mZZ-1.30465e+02)/8.69644e-01 ) + 1.);
                 f0 = 3.68735e-01*(TMath::Erf( (mZZ-1.17687e+02)/2.61381e-01 ) + 1.);
                 */
                a0_bkgd = 114.504;
                a1_bkgd = 14.3013;
                a2_bkgd = 101.43;
                a3_bkgd = 0.0455842;
                a4_bkgd = 179.976;
                a5_bkgd = 9.89769;
                a6_bkgd = 28.5377;
                a7_bkgd = 0.0692236;
                a8_bkgd = 51.5593;
                a9_bkgd = 0.0561965;
                a10_bkgd = 101.547;
                a11_bkgd = -1.71367;
                a12_bkgd = 7513.75;
                a13_bkgd = 0.543254;
        }
        else{
                std::cout << "Invalid paramters for this PDF!" << std::endl;
        }
        
        
        //  ZZ shape
        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)) );
        
        
        double mZDistribution, acceptance;
        
        //================= mZ Distribution =================
        double beta= (1-(mZstar-mZ)*(mZstar-mZ)/(mZZ*mZZ))*(1-(mZstar+mZ)*(mZstar+mZ)/(mZZ*mZZ));
        if(beta<0) return 0.0000001;
        else mZDistribution = beta;
        
        //================= acceptance (chebychev polynomials) 
        acceptance = a0+a1*mZstar+a2*(2*mZstar*mZstar-1)+a3*(4*mZstar*mZstar*mZstar-3*mZstar);
        
        //================= on-shell Z contamination ========
        
        double onShellZ = exp(-(mZstar-mZ)*(mZstar-mZ)/(2*Gamma*Gamma))/sqrt(2*3.1415*Gamma*Gamma);
        //double errorFunc = TMath::Erf((mZstar - m0)/Gamma);
        double errorFunc = exp(-(mZstar-m0)*(mZstar-m0)/(2*Gamma0*Gamma0))/sqrt(2*3.1415*Gamma0*Gamma0);
        
        //std::cout << mZZDistribution << " : " << mZDistribution << " : " << acceptance << std::endl;
        double final =  mZDistribution*((1-f)*(f0*acceptance+(1-f0)*errorFunc)+f*onShellZ);
        if (final <= 0) final = 1e-12;
        
        double integral;
        double E = 2.71828183;
        
        // ========================================================
        // integral
        double mZstarFix=12.;
        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);
        mZstarFix=mZZ-mZ;
        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);
        
        //std::cout << "IntegralHI: " << integralT1Hi << ", IntegralLO: " << integralT1Lo << std::endl;
        
        mZstarFix=12.;
        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)));
        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);
        integralT2Lo/=sqrt(2*TMath::Pi()*Gamma0*Gamma0);
        mZstarFix=mZZ-mZ;
        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)));
        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);
        integralT2Hi/=sqrt(2*TMath::Pi()*Gamma0*Gamma0);
        
        mZstarFix=12.;
        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));
        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);
        integralT3Lo/=sqrt(2*TMath::Pi()*Gamma*Gamma);
        mZstarFix=mZZ-mZ;
        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));
        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);
        integralT3Hi/=sqrt(2*TMath::Pi()*Gamma*Gamma);
        
        integral = integralT1Hi + integralT2Hi + integralT3Hi - integralT1Lo - integralT2Lo - integralT3Lo;
        
        if (integral <= 0.) {
                std::cout << "integral is less than zero...." << std::endl;
                //integral = 100000000.;
        }
        
        return (final/integral)*ZZshape;
        //*/
        //return final;
}
double Roo4lMasses2D_Bkg::UnitStep ( double  arg) const [protected]

Definition at line 2292 of file HZZ4LRooPdfs.cc.

{
        if(arg<0.0){
                return 0.0;
        }
        else{
                return 1.0;
        }
}

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().