CMS 3D CMS Logo

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

#include <Functions.h>

Inheritance diagram for scaleFunctionType35< T >:
scaleFunctionBase< T >

Public Member Functions

virtual void resetParameters (std::vector< double > *scaleVec) const
 This method is used to reset the scale parameters to neutral values (useful for iterations > 0) More...
 
virtual double scale (const double &pt, const double &eta, const double &phi, const int chg, const T &parScale) const
 
 scaleFunctionType35 ()
 
virtual void setParameters (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parScale, const std::vector< int > &parScaleOrder, 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 &parScale, const std::vector< int > &parScaleOrder, const std::vector< double > &parStep, const std::vector< double > &parMin, const std::vector< double > &parMax, const int muonType)
 
- Public Member Functions inherited from scaleFunctionBase< T >
virtual int parNum () const
 
virtual ~scaleFunctionBase ()=0
 

Additional Inherited Members

- Protected Member Functions inherited from scaleFunctionBase< T >
virtual void setPar (double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parScale, const std::vector< int > &parScaleOrder, 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 scaleFunctionBase< T >
int parNum_
 

Detailed Description

template<class T>
class scaleFunctionType35< T >

Definition at line 2007 of file Functions.h.

Constructor & Destructor Documentation

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

Definition at line 2009 of file Functions.h.

References scaleFunctionBase< T >::parNum_.

2009 { this->parNum_ = 18; }

Member Function Documentation

template<class T >
virtual void scaleFunctionType35< T >::resetParameters ( std::vector< double > *  scaleVec) const
inlinevirtual

This method is used to reset the scale parameters to neutral values (useful for iterations > 0)

Reimplemented from scaleFunctionBase< T >.

Definition at line 2035 of file Functions.h.

References i, and scaleFunctionBase< T >::parNum_.

2035  {
2036  // scaleVec->push_back(1);
2037  for( int i=0; i<this->parNum_; ++i ) {
2038  scaleVec->push_back(0);
2039  }
2040  }
int i
Definition: DBlmapReader.cc:9
template<class T >
virtual double scaleFunctionType35< T >::scale ( const double &  pt,
const double &  eta,
const double &  phi,
const int  chg,
const T parScale 
) const
inlinevirtual

Implements scaleFunctionBase< T >.

Definition at line 2010 of file Functions.h.

References eta(), and funct::sin().

2010  {
2011  double ampl(0), phase(0);
2012  if ( eta < -2.1 ) {
2013  ampl = parScale[3]; phase = parScale[4];
2014  } else if ( -2.1 <= eta && eta < -1.7 ) {
2015  ampl = parScale[5]; phase = parScale[6];
2016  } else if ( -1.7 <= eta && eta < -0.9 ) {
2017  ampl = parScale[7]; phase = parScale[8];
2018  } else if ( -0.9 <= eta && eta <= +0.9 ) {
2019  ampl = parScale[9]; phase = parScale[10];
2020  } else if ( +0.9 < eta && eta <= +1.7 ) {
2021  ampl = parScale[11]; phase = parScale[12];
2022  } else if ( +1.7 < eta && eta <= 2.1 ) {
2023  ampl = parScale[13]; phase = parScale[14];
2024  } else if ( +2.1 < eta ) {
2025  ampl = parScale[15]; phase = parScale[16];
2026  }
2027 
2028  double curv = (1.+parScale[0])*((double)chg/pt
2029  -(parScale[1]*eta+parScale[2]*eta*eta*eta)
2030  -ampl*sin(phi+phase)
2031  -0.5*(double)chg*parScale[17]);
2032  return 1./((double)chg*curv);
2033  }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T eta() const
Definition: DDAxes.h:10
template<class T >
virtual void scaleFunctionType35< T >::setParameters ( double *  Start,
double *  Step,
double *  Mini,
double *  Maxi,
int *  ind,
TString *  parname,
const T parScale,
const std::vector< int > &  parScaleOrder,
const int  muonType 
)
inlinevirtual

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

Implements scaleFunctionBase< T >.

Definition at line 2041 of file Functions.h.

References scaleFunctionBase< T >::setPar().

2042  {
2043  double thisStep[] = {0.000001, 0.000001, 0.000001, 0.000001, 0.01, 0.000001, 0.01, 0.000001, 0.01,0.000001, 0.01, 0.000001, 0.01, 0.000001};
2044  TString thisParName[] = {"Curv global scale" , "Eta slope", "Eta parabolic",
2045  "Phi ampl eta<-2.1" , "Phi phase eta<-2.1",
2046  "Phi ampl -2.1<eta<-1.7", "Phi phase -2.1<eta<-1.7",
2047  "Phi ampl -1.7<eta<-0.9", "Phi phase -1.7<eta<-0.9",
2048  "Phi ampl |eta|<0.9" , "Phi phase |eta|<0.9",
2049  "Phi ampl 0.9<eta<1.7" , "Phi phase 0.9<eta<1.7",
2050  "Phi ampl 1.7<eta<2.1" , "Phi phase 1.7<eta<2.1",
2051  "Phi ampl eta>+2.1" , "Phi phase eta>+2.1",
2052  "Charge depend bias" };
2053 
2054  if( muonType == 1 ) {
2055  double thisMini[] = {0.9, -0.1, -0.3, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.1};
2056  double thisMaxi[] = {1.1, 0.1, 0.3, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.1};
2057  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, thisStep, thisMini, thisMaxi, thisParName );
2058  } else {
2059  double thisMini[] = {0.97, -0.02, -0.3, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.3, -3.1416, -0.1};
2060  double thisMaxi[] = {1.03, 0.02, 0.3, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.1};
2061  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, thisStep, thisMini, thisMaxi, thisParName );
2062  }
2063  }
virtual void setPar(double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parScale, const std::vector< int > &parScaleOrder, double *thisStep, double *thisMini, double *thisMaxi, TString *thisParName)
This method sets the parameters.
Definition: Functions.h:70
template<class T >
virtual void scaleFunctionType35< T >::setParameters ( double *  Start,
double *  Step,
double *  Mini,
double *  Maxi,
int *  ind,
TString *  parname,
const T parScale,
const std::vector< int > &  parScaleOrder,
const std::vector< double > &  parStep,
const std::vector< double > &  parMin,
const std::vector< double > &  parMax,
const int  muonType 
)
inlinevirtual

Reimplemented from scaleFunctionBase< T >.

Definition at line 2064 of file Functions.h.

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

2070  {
2071  if( (int(parStep.size()) != this->parNum_) || (int(parMin.size()) != this->parNum_) || (int(parMax.size()) != this->parNum_) ) {
2072  std::cout << "Error: par step or min or max do not match with number of parameters" << std::endl;
2073  std::cout << "parNum = " << this->parNum_ << std::endl;
2074  std::cout << "parStep.size() = " << parStep.size() << std::endl;
2075  std::cout << "parMin.size() = " << parMin.size() << std::endl;
2076  std::cout << "parMax.size() = " << parMax.size() << std::endl;
2077  exit(1);
2078  }
2079  std::vector<ParameterSet> parSet(this->parNum_);
2080  // name, step, mini, maxi
2081  parSet[0] = ParameterSet( "Curv global scale", parStep[0], parMin[0], parMax[0] );
2082  parSet[1] = ParameterSet( "Eta slope", parStep[1], parMin[1], parMax[1] );
2083  parSet[2] = ParameterSet( "Eta parabolic", parStep[2], parMin[2], parMax[2] );
2084  parSet[3] = ParameterSet( "Phi ampl eta<-2.1", parStep[3], parMin[3], parMax[3] );
2085  parSet[4] = ParameterSet( "Phi phase eta<-2.1", parStep[4], parMin[4], parMax[4] );
2086  parSet[5] = ParameterSet( "Phi ampl -2.1<eta<-1.7",parStep[5], parMin[5], parMax[5] );
2087  parSet[6] = ParameterSet( "Phi phase -2.1<eta<-1.7",parStep[6], parMin[6], parMax[6] );
2088  parSet[7] = ParameterSet( "Phi ampl -1.7<eta<-0.9",parStep[7], parMin[7], parMax[7] );
2089  parSet[8] = ParameterSet( "Phi phase -1.7<eta<-0.9",parStep[8], parMin[8], parMax[8] );
2090  parSet[9] = ParameterSet( "Phi ampl |eta|<0.9", parStep[9], parMin[9], parMax[9] );
2091  parSet[10] = ParameterSet( "Phi phase |eta|<0.9", parStep[10], parMin[10], parMax[10] );
2092  parSet[11] = ParameterSet( "Phi ampl 0.9<eta<1.7", parStep[11], parMin[11], parMax[11] );
2093  parSet[12] = ParameterSet( "Phi phase 0.9<eta<1.7", parStep[12], parMin[12], parMax[12] );
2094  parSet[13] = ParameterSet( "Phi ampl 1.7<eta<2.1", parStep[13], parMin[13], parMax[13] );
2095  parSet[14] = ParameterSet( "Phi phase 1.7<eta<2.1", parStep[14], parMin[14], parMax[14] );
2096  parSet[15] = ParameterSet( "Phi ampl eta>2.1", parStep[15], parMin[15], parMax[15] );
2097  parSet[16] = ParameterSet( "Phi phase eta>2.1", parStep[16], parMin[16], parMax[16] );
2098  parSet[17] = ParameterSet( "Charge depend bias", parStep[17], parMin[17], parMax[17] );
2099 
2100  std::cout << "setting parameters" << std::endl;
2101  for( int i=0; i<this->parNum_; ++i ) {
2102  std::cout << "parStep["<<i<<"] = " << parStep[i]
2103  << ", parMin["<<i<<"] = " << parMin[i]
2104  << ", parMax["<<i<<"] = " << parMin[i] << std::endl;
2105  }
2106  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, parSet );
2107  }
int i
Definition: DBlmapReader.cc:9
virtual void setPar(double *Start, double *Step, double *Mini, double *Maxi, int *ind, TString *parname, const T &parScale, const std::vector< int > &parScaleOrder, double *thisStep, double *thisMini, double *thisMaxi, TString *thisParName)
This method sets the parameters.
Definition: Functions.h:70
tuple cout
Definition: gather_cfg.py:121