CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions
smearFunctionType6 Class Reference

#include <Functions.h>

Inheritance diagram for smearFunctionType6:
smearFunctionBase

Public Member Functions

void smear (double &pt, double &eta, double &phi, const double *y, const std::vector< double > &parSmear) override
 
- Public Member Functions inherited from smearFunctionBase
 smearFunctionBase ()
 
virtual ~smearFunctionBase ()=0
 

Protected Member Functions

double etaByPoints (const double &inEta, const double &border)
 
- Protected Member Functions inherited from smearFunctionBase
void smearEta (double &eta)
 

Additional Inherited Members

- Protected Attributes inherited from smearFunctionBase
double cotgth_
 
TRandom * gRandom_
 

Detailed Description

Definition at line 589 of file Functions.h.

Member Function Documentation

double smearFunctionType6::etaByPoints ( const double &  inEta,
const double &  border 
)
inlineprotected

This is the pt vs eta resolution by points. It uses std::fabs(eta) assuming symmetry. The values are derived from 100k events of MuonGun with 5<pt<100 and |eta|<3.

Definition at line 623 of file Functions.h.

References PVValHelper::eta.

623  {
624  Double_t eta = std::fabs(inEta);
625  if( 0. <= eta && eta <= 0.2 ) return 0.00942984;
626  else if( 0.2 < eta && eta <= 0.4 ) return 0.0104489;
627  else if( 0.4 < eta && eta <= 0.6 ) return 0.0110521;
628  else if( 0.6 < eta && eta <= 0.8 ) return 0.0117338;
629  else if( 0.8 < eta && eta <= 1.0 ) return 0.0138142;
630  else if( 1.0 < eta && eta <= 1.2 ) return 0.0165826;
631  else if( 1.2 < eta && eta <= 1.4 ) return 0.0183663;
632  else if( 1.4 < eta && eta <= 1.6 ) return 0.0169904;
633  else if( 1.6 < eta && eta <= 1.8 ) return 0.0173289;
634  else if( 1.8 < eta && eta <= 2.0 ) return 0.0205821;
635  else if( 2.0 < eta && eta <= 2.2 ) return 0.0250032;
636  else if( 2.2 < eta && eta <= 2.4 ) return 0.0339477;
637  // ATTENTION: This point has a big error and it is very displaced from the rest of the distribution.
638  else if( 2.4 < eta && eta <= 2.6 ) return border;
639  return ( 0. );
640  }
void smearFunctionType6::smear ( double &  pt,
double &  eta,
double &  phi,
const double *  y,
const std::vector< double > &  parSmear 
)
inlineoverridevirtual

Implements smearFunctionBase.

Definition at line 591 of file Functions.h.

References PVValHelper::eta, funct::pow(), and mathSSE::sqrt().

591  {
592  double sigmaSmear = 0;
593  double sigmaPtAl = 0;
594  double sigmaPtMisal = 0;
595  double ptPart = parSmear[0] + parSmear[1]*1/pt + pt*parSmear[2];
596  double fabsEta = std::fabs(eta);
597 
598  sigmaPtAl = parSmear[14]*etaByPoints(eta, parSmear[15]);
599 
600  if (std::fabs(eta)<=1.4){
601  sigmaPtMisal = ptPart + parSmear[3] + parSmear[4]*std::fabs(eta) + parSmear[5]*eta*eta;
602  sigmaSmear = sqrt(std::fabs(pow(sigmaPtMisal,2)-pow(sigmaPtAl,2)));
603  pt = pt*gRandom_->Gaus(1,sigmaSmear);
604  }
605  else if (eta>1.4){//eta in right endcap
606  double par = parSmear[3] + parSmear[4]*1.4 + parSmear[5]*1.4*1.4 - (parSmear[6] + parSmear[7]*(1.4-parSmear[8]) + parSmear[9]*(1.4-parSmear[8])*(1.4-parSmear[8]));
607  sigmaPtMisal = par + ptPart + parSmear[6] + parSmear[7]*std::fabs((fabsEta-parSmear[8])) + parSmear[9]*(fabsEta-parSmear[8])*(fabsEta-parSmear[8]);
608  sigmaSmear = sqrt(std::fabs(pow(sigmaPtMisal,2)-pow(sigmaPtAl,2)));
609  pt = pt*gRandom_->Gaus(1,sigmaSmear);
610  }
611  else{//eta in left endcap
612  double par = parSmear[3] + parSmear[4]*1.4 + parSmear[5]*1.4*1.4 - (parSmear[10] + parSmear[11]*(1.4-parSmear[12]) + parSmear[13]*(1.4-parSmear[12])*(1.4-parSmear[12]));
613  sigmaPtMisal = par + ptPart + parSmear[10] + parSmear[11]*std::fabs((fabsEta-parSmear[12])) + parSmear[13]*(fabsEta-parSmear[12])*(fabsEta-parSmear[12]);
614  sigmaSmear = sqrt(std::fabs(pow(sigmaPtMisal,2)-pow(sigmaPtAl,2)));
615  pt = pt*gRandom_->Gaus(1,sigmaSmear);
616  }
617  }
double etaByPoints(const double &inEta, const double &border)
Definition: Functions.h:623
TRandom * gRandom_
Definition: Functions.h:519
T sqrt(T t)
Definition: SSEVec.h:18
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40