CMS 3D CMS Logo

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

#include <Functions.h>

Inheritance diagram for scaleFunctionType52< 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
 
 scaleFunctionType52 ()
 
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 scaleFunctionType52< T >

Definition at line 2685 of file Functions.h.

Constructor & Destructor Documentation

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

Definition at line 2687 of file Functions.h.

References scaleFunctionBase< T >::parNum_.

2687 { this->parNum_ = 31; }

Member Function Documentation

template<class T >
virtual void scaleFunctionType52< 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 2727 of file Functions.h.

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

2727  {
2728  // scaleVec->push_back(1);
2729  for( int i=0; i<this->parNum_; ++i ) {
2730  scaleVec->push_back(0);
2731  }
2732  }
int i
Definition: DBlmapReader.cc:9
template<class T >
virtual double scaleFunctionType52< 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 2688 of file Functions.h.

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

2688  {
2689  double ampl(0), phase(0), ampl2(0), phase2(0), twist(0);
2690 
2691 // very bwd bin
2692  if ( eta < parScale[4] ) {
2693  ampl = parScale[1]; phase = parScale[2];
2694  ampl2 = parScale[21]; phase2 = parScale[22];
2695  twist = parScale[3]*(eta-parScale[4])+parScale[7]*(parScale[4]-parScale[8])+parScale[11]*parScale[8];
2696 // bwd bin
2697  } else if ( parScale[4] <= eta && eta < parScale[8] ) {
2698  ampl = parScale[5]; phase = parScale[6];
2699  ampl2 = parScale[23]; phase2 = parScale[24];
2700  twist = parScale[7]*(eta-parScale[8])+parScale[11]*parScale[8] ;
2701 // barrel bin
2702  } else if ( parScale[8] <= eta && eta < parScale[12] ) {
2703  ampl = parScale[9]; phase = parScale[10];
2704  ampl2 = parScale[25]; phase2 = parScale[26];
2705  twist = parScale[11]*eta;
2706 // fwd bin
2707  } else if ( parScale[12] <= eta && eta < parScale[16] ) {
2708  ampl = parScale[13]; phase = parScale[14];
2709  ampl2 = parScale[27]; phase2 = parScale[28];
2710  twist = parScale[15]*(eta-parScale[12])+parScale[11]*parScale[12];
2711 // very fwd bin
2712  } else if ( parScale[16] < eta ) {
2713  ampl = parScale[17]; phase = parScale[18];
2714  ampl2 = parScale[29]; phase2 = parScale[30];
2715  twist = parScale[19]*(eta-parScale[16])+parScale[15]*(parScale[16]-parScale[12])+parScale[11]*parScale[12];
2716  }
2717 
2718 // apply the correction
2719  double curv = (1.+parScale[0])*((double)chg/pt
2720  -twist
2721  -ampl*sin(phi+phase)
2722  -ampl2*sin(2*phi+phase2)
2723  -0.5*parScale[20]);
2724  return 1./((double)chg*curv);
2725  }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T eta() const
Definition: DDAxes.h:10
template<class T >
virtual void scaleFunctionType52< 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 2733 of file Functions.h.

References scaleFunctionBase< T >::setPar().

2734  {
2735 
2736  double thisStep[] = {0.000001,
2737  0.000001, 0.01, 0.000001, 0.01,
2738  0.000001, 0.01, 0.000001, 0.01,
2739  0.000001, 0.01, 0.000001, 0.01,
2740  0.000001, 0.01, 0.000001, 0.01,
2741  0.000001, 0.01, 0.000001,
2742  0.000001,
2743  0.000001, 0.01, 0.000001, 0.01, 0.000001, 0.01, 0.000001, 0.01, 0.000001, 0.01
2744  };
2745 
2746  TString thisParName[] = { "Curv global scale"
2747  , "Phi ampl eta vbwd" , "Phi phase eta vbwd" , "Twist eta vbwd", "vbwd/bwd bndry"
2748  , "Phi ampl eta bwd" , "Phi phase eta bwd" , "Twist eta bwd", "bwd/bar bndry"
2749  , "Phi ampl eta bar" , "Phi phase eta bar" , "Twist eta bar", "bar/fwd bndry"
2750  , "Phi ampl eta fwd" , "Phi phase eta fwd" , "Twist eta fwd", "fwd/vfwd bndry"
2751  , "Phi ampl eta vfwd" , "Phi phase eta vfwd" , "Twist eta vfwd"
2752  , "Charge depend bias"
2753  , "Phi ampl2 eta vbwd" , "Phi phase2 eta vbwd"
2754  , "Phi ampl2 eta bwd" , "Phi phase2 eta bwd"
2755  , "Phi ampl2 eta bar" , "Phi phase2 eta bar"
2756  , "Phi ampl2 eta fwd" , "Phi phase2 eta fwd"
2757  , "Phi ampl2 eta vfwd" , "Phi phase2 eta vfwd"
2758  };
2759 
2760  if( muonType == 1 ) {
2761  double thisMini[] = {-0.1, -0.3, -3.1416, -0.3, -2.6, -0.3, -3.1416, -0.3, -2.6, -0.3, -3.1416, -0.3, 0., -0.3, -3.1416, -0.3, 0. , -0.3, -3.1416, -0.3, -0.1,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416};
2762  double thisMaxi[] = { 0.1, 0.3, 3.1416, 0.3, 0. , 0.3, 3.1416, 0.3, 0. , 0.3, 3.1416, 0.3, 2.6 , 0.3, 3.1416, 0.3, 2.6 , 0.3, 3.1416, 0.3, 0.1, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416};
2763  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, thisStep, thisMini, thisMaxi, thisParName );
2764  } else {
2765  double thisMini[] = {-0.1, -0.3, -3.1416, -0.3, -2.6, -0.3, -3.1416, -0.3, -2.6, -0.3, -3.1416, -0.3, 0., -0.3, -3.1416, -0.3, 0. , -0.3, -3.1416, -0.3, -0.1,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416,-0.3, -3.1416};
2766  double thisMaxi[] = { 0.1, 0.3, 3.1416, 0.3, 0. , 0.3, 3.1416, 0.3, 0. , 0.3, 3.1416, 0.3, 2.6 , 0.3, 3.1416, 0.3, 2.6 , 0.3, 3.1416, 0.3, 0.1, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416, 0.3, 3.1416};
2767  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, thisStep, thisMini, thisMaxi, thisParName );
2768  }
2769  }
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 scaleFunctionType52< 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 2770 of file Functions.h.

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

2776  {
2777  if( (int(parStep.size()) != this->parNum_) || (int(parMin.size()) != this->parNum_) || (int(parMax.size()) != this->parNum_) ) {
2778  std::cout << "Error: par step or min or max do not match with number of parameters" << std::endl;
2779  std::cout << "parNum = " << this->parNum_ << std::endl;
2780  std::cout << "parStep.size() = " << parStep.size() << std::endl;
2781  std::cout << "parMin.size() = " << parMin.size() << std::endl;
2782  std::cout << "parMax.size() = " << parMax.size() << std::endl;
2783  exit(1);
2784  }
2785  std::vector<ParameterSet> parSet(this->parNum_);
2786  // name, step, mini, maxi
2787  parSet[0] = ParameterSet( "Curv global scale", parStep[0], parMin[0], parMax[0] );
2788  parSet[1] = ParameterSet( "Phi ampl vbwd", parStep[1], parMin[1], parMax[1] );
2789  parSet[2] = ParameterSet( "Phi phase vbwd", parStep[2], parMin[2], parMax[2] );
2790  parSet[3] = ParameterSet( "Twist vbwd", parStep[3], parMin[3], parMax[3] );
2791  parSet[4] = ParameterSet( "vbwd/bwd bndry", parStep[4], parMin[4], parMax[4] );
2792  parSet[5] = ParameterSet( "Phi ampl bwd", parStep[5], parMin[5], parMax[5] );
2793  parSet[6] = ParameterSet( "Phi phase bwd", parStep[6], parMin[6], parMax[6] );
2794  parSet[7] = ParameterSet( "Twist bwd", parStep[7], parMin[7], parMax[7] );
2795  parSet[8] = ParameterSet( "bwd/bar bndry", parStep[8], parMin[8], parMax[8] );
2796  parSet[9] = ParameterSet( "Phi ampl bar", parStep[9], parMin[9], parMax[9] );
2797  parSet[10] = ParameterSet( "Phi phase bar", parStep[10],parMin[10],parMax[10] );
2798  parSet[11] = ParameterSet( "Twist bar", parStep[11],parMin[11],parMax[11] );
2799  parSet[12] = ParameterSet( "bar/fwd bndry", parStep[12],parMin[12],parMax[12] );
2800  parSet[13] = ParameterSet( "Phi ampl fwd", parStep[13],parMin[13],parMax[13] );
2801  parSet[14] = ParameterSet( "Phi phase fwd", parStep[14],parMin[14],parMax[14] );
2802  parSet[15] = ParameterSet( "Twist fwd", parStep[15],parMin[15],parMax[15] );
2803  parSet[16] = ParameterSet( "fwd/vfwd bndry", parStep[16],parMin[16],parMax[16] );
2804  parSet[17] = ParameterSet( "Phi ampl vfwd", parStep[17],parMin[17],parMax[17] );
2805  parSet[18] = ParameterSet( "Phi phase vfwd", parStep[18],parMin[18],parMax[18] );
2806  parSet[19] = ParameterSet( "Twist vfwd", parStep[19],parMin[19],parMax[19] );
2807  parSet[20] = ParameterSet( "Charge depend bias", parStep[20],parMin[20],parMax[20] );
2808  parSet[21] = ParameterSet( "Phi ampl2 vbwd", parStep[21],parMin[21],parMax[21] );
2809  parSet[22] = ParameterSet( "Phi phase2 vbwd", parStep[22],parMin[22],parMax[22] );
2810  parSet[23] = ParameterSet( "Phi ampl2 bwd", parStep[23],parMin[23],parMax[23] );
2811  parSet[24] = ParameterSet( "Phi phase2 bwd", parStep[24],parMin[24],parMax[24] );
2812  parSet[25] = ParameterSet( "Phi ampl2 bar", parStep[25],parMin[25],parMax[25] );
2813  parSet[26] = ParameterSet( "Phi phase2 bar", parStep[26],parMin[26],parMax[26] );
2814  parSet[27] = ParameterSet( "Phi ampl2 fwd", parStep[27],parMin[27],parMax[27] );
2815  parSet[28] = ParameterSet( "Phi phase2 fwd", parStep[28],parMin[28],parMax[28] );
2816  parSet[29] = ParameterSet( "Phi ampl2 vfwd", parStep[29],parMin[29],parMax[29] );
2817  parSet[30] = ParameterSet( "Phi phase2 vfwd", parStep[30],parMin[30],parMax[30] );
2818 
2819 
2820 
2821  std::cout << "setting parameters" << std::endl;
2822  for( int i=0; i<this->parNum_; ++i ) {
2823  std::cout << "parStep["<<i<<"] = " << parStep[i]
2824  << ", parMin["<<i<<"] = " << parMin[i]
2825  << ", parMax["<<i<<"] = " << parMin[i] << std::endl;
2826  }
2827  this->setPar( Start, Step, Mini, Maxi, ind, parname, parScale, parScaleOrder, parSet );
2828  }
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