CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
resolutionFunctionType30< T > Class Template Reference

#include <Functions.h>

Inheritance diagram for resolutionFunctionType30< T >:
resolutionFunctionBase< T >

Public Member Functions

virtual double covPt1Pt2 (const double &pt1, const double &eta1, const double &pt2, const double &eta2, const T &parval)
 
 resolutionFunctionType30 ()
 
virtual void setParameters (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, const int muonType)
 This method is used to differentiate parameters among the different functions. More...
 
virtual void setParameters (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, const std::vector< double > &parStep, const std::vector< double > &parMin, const std::vector< double > &parMax, const int muonType)
 
virtual double sigmaCotgTh (const double &pt, const double &eta, const T &parval)
 
virtual double sigmaPhi (const double &pt, const double &eta, const T &parval)
 
virtual double sigmaPt (const double &pt, const double &eta, const T &parval)
 
virtual double sigmaPtError (const double &pt, const double &eta, const T &parval, const T &parError)
 
- Public Member Functions inherited from resolutionFunctionBase< T >
virtual int parNum () const
 
 resolutionFunctionBase ()
 
virtual ~resolutionFunctionBase ()=0
 

Additional Inherited Members

- Protected Member Functions inherited from resolutionFunctionBase< T >
virtual void setPar (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, double *thisStep, double *thisMini, double *thisMaxi, TString *thisParName)
 This method sets the parameters. More...
 
virtual void setPar (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, const std::vector< ParameterSet > &parSet)
 
- Protected Attributes inherited from resolutionFunctionBase< T >
int parNum_
 

Detailed Description

template<class T>
class resolutionFunctionType30< T >

Same as type12, but improves sigmaCotgTh parameterization.

Definition at line 4099 of file Functions.h.

Constructor & Destructor Documentation

template<class T >
resolutionFunctionType30< T >::resolutionFunctionType30 ( )
inline

Definition at line 4101 of file Functions.h.

References resolutionFunctionBase< T >::parNum_.

4101 { this->parNum_ = 27; }

Member Function Documentation

template<class T >
virtual double resolutionFunctionType30< T >::covPt1Pt2 ( const double &  pt1,
const double &  eta1,
const double &  pt2,
const double &  eta2,
const T parval 
)
inlinevirtual

Reimplemented from resolutionFunctionBase< T >.

Definition at line 4190 of file Functions.h.

4191  {
4192  return parval[24] + std::fabs(pt1 - pt2)*parval[25] + std::fabs(eta1 - eta2)*parval[26];
4193  }
template<class T >
virtual void resolutionFunctionType30< T >::setParameters ( double *  Start,
double *  Step,
double *  Mini,
double *  Maxi,
int *  ind,
TString *  parname,
const T parResol,
const std::vector< int > &  parResolOrder,
const int  muonType 
)
inlinevirtual

This method is used to differentiate parameters among the different functions.

Reimplemented from resolutionFunctionBase< T >.

Definition at line 4195 of file Functions.h.

References gather_cfg::cout, resolutionFunctionBase< T >::parNum_, and resolutionFunctionBase< T >::setPar().

4196  {
4197  std::vector<ParameterSet> parSet(this->parNum_);
4198  // name, step, mini, maxi
4199  parSet[0] = ParameterSet( "etaTransition", 0.0001, 0., 2. );
4200  parSet[1] = ParameterSet( "constantCentral", 0.00001, 0., 1. );
4201  parSet[2] = ParameterSet( "linearEtaCentral", 0.00001, 0., 1. );
4202  parSet[3] = ParameterSet( "quadraticEtaCentral", 0.000001, 0., 1. );
4203  parSet[4] = ParameterSet( "constantForward", 0.00001, 0., 1. );
4204  parSet[5] = ParameterSet( "linearEtaForward", 0.00001, 0., 1. );
4205  parSet[6] = ParameterSet( "quadraticEtaForward", 0.000001, 0., 1. );
4206  parSet[7] = ParameterSet( "vertexForward", 0.0001, 0., 3. );
4207  parSet[8] = ParameterSet( "cotgThetaConstant", 0.00001, -1., 1. );
4208  parSet[9] = ParameterSet( "cotgThetaFactor", 0.00001, -1., 1. );
4209  parSet[10] = ParameterSet( "cotgThetaDenominatorTerm", 0.000001, -1., 1. );
4210  parSet[11] = ParameterSet( "cotgThetaLinearPt", 0.000001, -1., 1. );
4211  parSet[12] = ParameterSet( "sigmaPhi", 0.0001, 0., 1. );
4212  parSet[13] = ParameterSet( "barrelLinearPt", 0.00001, 0., 1. );
4213  parSet[14] = ParameterSet( "split", 0.0001, 0., 3. );
4214  parSet[15] = ParameterSet( "veryForwardSplit", 0.0001, 0., 3. );
4215  parSet[16] = ParameterSet( "constantVeryForward", 0.00001, 0., 1. );
4216  parSet[17] = ParameterSet( "linearEtaVeryForward", 0.00001, 0., 1. );
4217  parSet[18] = ParameterSet( "quadraticEtaVeryForward", 0.000001, 0., 1. );
4218  parSet[19] = ParameterSet( "vertexVeryForward", 0.0001, 0., 3. );
4219  parSet[20] = ParameterSet( "endcapsLinearPt", 0.00001, -1., 1. );
4220  parSet[21] = ParameterSet( "endcapsQuadraticPt", 0.000001, -1., 1. );
4221  parSet[22] = ParameterSet( "veryForwardLinearPt", 0.00001, -1., 1. );
4222  parSet[23] = ParameterSet( "veryForwardQuadraticPt", 0.000001, -1., 1. );
4223  parSet[24] = ParameterSet( "covPt1Pt2Constant", 0.000001, -1., 1. );
4224  parSet[25] = ParameterSet( "covPt1Pt2DeltaPt", 0.000001, -1., 1. );
4225  parSet[26] = ParameterSet( "covPt1Pt2DeltaEta", 0.000001, -1., 1. );
4226 
4227  std::cout << "setting parameters" << std::endl;
4228  this->setPar( Start, Step, Mini, Maxi, ind, parname, parResol, parResolOrder, parSet );
4229  }
virtual void setPar(double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, double *thisStep, double *thisMini, double *thisMaxi, TString *thisParName)
This method sets the parameters.
Definition: Functions.h:3054
tuple cout
Definition: gather_cfg.py:121
template<class T >
virtual void resolutionFunctionType30< T >::setParameters ( double *  Start,
double *  Step,
double *  Mini,
double *  Maxi,
int *  ind,
TString *  parname,
const T parResol,
const std::vector< int > &  parResolOrder,
const std::vector< double > &  parStep,
const std::vector< double > &  parMin,
const std::vector< double > &  parMax,
const int  muonType 
)
inlinevirtual

Reimplemented from resolutionFunctionBase< T >.

Definition at line 4231 of file Functions.h.

References gather_cfg::cout, cmsRelvalreport::exit, i, resolutionFunctionBase< T >::parNum_, and resolutionFunctionBase< T >::setPar().

4237  {
4238  if( (int(parStep.size()) != this->parNum_) || (int(parMin.size()) != this->parNum_) || (int(parMax.size()) != this->parNum_) ) {
4239  std::cout << "Error: par step or min or max do not match with number of parameters" << std::endl;
4240  exit(1);
4241  }
4242  std::vector<ParameterSet> parSet(this->parNum_);
4243  // name, step, mini, maxi
4244 
4245  parSet[0] = ParameterSet( "etaTransition", parStep[0], parMin[0], parMax[0] );
4246  parSet[1] = ParameterSet( "constantCentral", parStep[1], parMin[1], parMax[1] );
4247  parSet[2] = ParameterSet( "linearEtaCentral", parStep[2], parMin[2], parMax[2] );
4248  parSet[3] = ParameterSet( "quadraticEtaCentral", parStep[3], parMin[3], parMax[3] );
4249  parSet[4] = ParameterSet( "constantForward", parStep[4], parMin[4], parMax[4] );
4250  parSet[5] = ParameterSet( "linearEtaForward", parStep[5], parMin[5], parMax[5] );
4251  parSet[6] = ParameterSet( "quadraticEtaForward", parStep[6], parMin[6], parMax[6] );
4252  parSet[7] = ParameterSet( "vertexForward", parStep[7], parMin[7], parMax[7] );
4253  parSet[8] = ParameterSet( "cotgThetaConstant", parStep[8], parMin[8], parMax[8] );
4254  parSet[9] = ParameterSet( "cotgThetaFactor", parStep[9], parMin[9], parMax[9] );
4255  parSet[10] = ParameterSet( "cotgThetaDenominatorTerm", parStep[10], parMin[10], parMax[10] );
4256  parSet[11] = ParameterSet( "cotgThetaLinearPt", parStep[11], parMin[11], parMax[11] );
4257  parSet[12] = ParameterSet( "sigmaPhi", parStep[12], parMin[12], parMax[12] );
4258  parSet[13] = ParameterSet( "barrelLinearPt", parStep[13], parMin[13], parMax[13] );
4259  parSet[14] = ParameterSet( "split", parStep[14], parMin[14], parMax[14] );
4260  parSet[15] = ParameterSet( "veryForwardSplit", parStep[15], parMin[15], parMax[15] );
4261  parSet[16] = ParameterSet( "constantVeryForward", parStep[16], parMin[16], parMax[16] );
4262  parSet[17] = ParameterSet( "linearEtaVeryForward", parStep[17], parMin[17], parMax[17] );
4263  parSet[18] = ParameterSet( "quadraticEtaVeryForward", parStep[18], parMin[18], parMax[18] );
4264  parSet[19] = ParameterSet( "vertexVeryForward", parStep[19], parMin[19], parMax[19] );
4265  parSet[20] = ParameterSet( "endcapsLinearPt", parStep[20], parMin[20], parMax[20] );
4266  parSet[21] = ParameterSet( "endcapsQuadraticPt", parStep[21], parMin[21], parMax[21] );
4267  parSet[22] = ParameterSet( "veryForwardLinearPt", parStep[22], parMin[22], parMax[22] );
4268  parSet[23] = ParameterSet( "veryForwardQuadraticPt", parStep[23], parMin[23], parMax[23] );
4269  parSet[24] = ParameterSet( "covPt1Pt2Constant", parStep[24], parMin[24], parMax[24] );
4270  parSet[25] = ParameterSet( "covPt1Pt2DeltaPt", parStep[25], parMin[25], parMax[25] );
4271  parSet[26] = ParameterSet( "covPt1Pt2DeltaEta", parStep[26], parMin[26], parMax[26] );
4272 
4273  std::cout << "setting parameters" << std::endl;
4274  for( int i=0; i<this->parNum_; ++i ) {
4275  std::cout << "parStep["<<i<<"] = " << parStep[i]
4276  << ", parMin["<<i<<"] = " << parMin[i]
4277  << ", parMax["<<i<<"] = " << parMin[i] << std::endl;
4278  }
4279  this->setPar( Start, Step, Mini, Maxi, ind, parname, parResol, parResolOrder, parSet );
4280  }
int i
Definition: DBlmapReader.cc:9
virtual void setPar(double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parResol, const std::vector< int > &parResolOrder, double *thisStep, double *thisMini, double *thisMaxi, TString *thisParName)
This method sets the parameters.
Definition: Functions.h:3054
tuple cout
Definition: gather_cfg.py:121
template<class T >
virtual double resolutionFunctionType30< T >::sigmaCotgTh ( const double &  pt,
const double &  eta,
const T parval 
)
inlinevirtual

Implements resolutionFunctionBase< T >.

Definition at line 4172 of file Functions.h.

References relativeConstraints::value.

4172  {
4173  // return( parval[8] + parval[9]/(pt + parval[10]) + parval[11]*pt );
4174  double fabsEta = std::fabs(eta);
4175  double value = parval[8] + parval[9]*fabsEta + parval[10]*eta*eta + parval[11]*fabsEta*fabsEta*fabsEta;
4176  if( value > 0 ) {
4177  return( value );
4178  }
4179  return 0;
4180  }
T eta() const
template<class T >
virtual double resolutionFunctionType30< T >::sigmaPhi ( const double &  pt,
const double &  eta,
const T parval 
)
inlinevirtual

Implements resolutionFunctionBase< T >.

Definition at line 4183 of file Functions.h.

4183  {
4184  //std::cout << "parval[12] = " << parval[12] << std::endl;
4185 
4186  return( parval[12] );
4187 
4188 }
template<class T >
virtual double resolutionFunctionType30< T >::sigmaPt ( const double &  pt,
const double &  eta,
const T parval 
)
inlinevirtual

Implements resolutionFunctionBase< T >.

Definition at line 4103 of file Functions.h.

4104  {
4105  double fabsEta = std::fabs(eta);
4106 
4107  double ptPart = parval[13]*pt;
4108  if( fabsEta > 2.0 ) {
4109  ptPart = parval[22]*pt + parval[23]*pt*pt;
4110  }
4111  else if( fabsEta > 1.4 ) {
4112  ptPart = parval[20]*pt + parval[21]*pt*pt;
4113  }
4114  if(fabsEta<parval[0]) {
4115  return( ptPart + parval[1] + parval[2]*fabsEta + parval[3]*eta*eta );
4116  }
4117  // Return a line connecting the two parabolas
4118  else if( fabsEta < parval[14] ) {
4119  double x_1 = parval[0];
4120  double y_1 = parval[1] + parval[2]*parval[0] + parval[3]*parval[0]*parval[0];
4121  double x_2 = parval[14];
4122  double y_2 = parval[4] + parval[5]*std::fabs((parval[14]-parval[7])) + parval[6]*(parval[14]-parval[7])*(parval[14]-parval[7]);
4123  return( (fabsEta - x_1)*(y_2 - y_1)/(x_2 - x_1) + y_1 );
4124  }
4125  else if( fabsEta < parval[15] ) {
4126  return( ptPart + parval[4] + parval[5]*std::fabs(fabsEta-parval[7]) + parval[6]*(fabsEta-parval[7])*(fabsEta-parval[7]) );
4127  }
4128  else {
4129  return( ptPart + parval[16] + parval[17]*std::fabs(fabsEta-parval[19]) + parval[18]*(fabsEta-parval[19])*(fabsEta-parval[19]) );
4130  }
4131  }
T eta() const
template<class T >
virtual double resolutionFunctionType30< T >::sigmaPtError ( const double &  pt,
const double &  eta,
const T parval,
const T parError 
)
inlinevirtual

Reimplemented from resolutionFunctionBase< T >.

Definition at line 4133 of file Functions.h.

4134  {
4135  double fabsEta = std::fabs(eta);
4136 
4137  double ptPart = parError[13]*pt;
4138  if( fabsEta > 2.0 ) {
4139  ptPart = parError[22]*pt + parError[23]*pt*pt;
4140  }
4141  else if( fabsEta > 1.4 ) {
4142  ptPart = parError[20]*pt + parError[21]*pt*pt;
4143  }
4144  if(fabsEta<parval[0]) {
4145  return( ptPart + parError[1] + parError[2]*fabsEta + parError[3]*eta*eta );
4146  }
4147  // Note: this is a rough approximation, it should be fixed
4148  else if( fabsEta < parval[14] ) {
4149  double x_1 = parval[0];
4150  double y_1 = parval[1] + parval[2]*parval[0] + parval[3]*parval[0]*parval[0];
4151  double x_2 = parval[14];
4152  double y_2 = parval[4] + parval[5]*std::fabs((parval[14]-parval[7])) + parval[6]*(parval[14]-parval[7])*(parval[14]-parval[7]);
4153  double lineValue = (fabsEta - x_1)*(y_2 - y_1)/(x_2 - x_1) + y_1;
4154 
4155  // x_1 = parval[0];
4156  y_1 = parval[1] + parError[1] + (parval[2] + parError[2])*parval[0] + (parval[3] + parError[3])*parval[0]*parval[0];
4157  // x_2 = parval[14];
4158  y_2 = parval[4] + parError[4] + (parval[5] + parError[5])*std::fabs((parval[14]-parval[7])) + (parval[6] + parError[6])*(parval[14]-parval[7])*(parval[14]-parval[7]);
4159  double lineValuePlusError = (fabsEta - x_1)*(y_2 - y_1)/(x_2 - x_1) + y_1;
4160 
4161  return(lineValuePlusError - lineValue );
4162  }
4163  else if( fabsEta < parval[15] ) {
4164  return( ptPart + parError[4] + parError[5]*std::fabs(fabsEta-parval[7]) + parError[6]*(fabsEta-parval[7])*(fabsEta-parval[7]) );
4165  }
4166  else {
4167  return( ptPart + parError[16] + parError[17]*std::fabs(fabsEta-parval[19]) + parError[18]*(fabsEta-parval[19])*(fabsEta-parval[19]) );
4168  }
4169  }
T eta() const