CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_7_hltpatch1/src/MuonAnalysis/MomentumScaleCalibration/src/Functions.cc

Go to the documentation of this file.
00001 #include "MuonAnalysis/MomentumScaleCalibration/interface/Functions.h"
00002 
00003 scaleFunctionBase<double * > * scaleFunctionService( const int identifier )
00004 {
00005   switch ( identifier ) {
00006   case ( 0 ): return ( new scaleFunctionType0<double * > ); break;
00007   case ( 1 ): return ( new scaleFunctionType1<double * > ); break;
00008   case ( 2 ): return ( new scaleFunctionType2<double * > ); break;
00009   case ( 3 ): return ( new scaleFunctionType3<double * > ); break;
00010   case ( 4 ): return ( new scaleFunctionType4<double * > ); break;
00011   case ( 5 ): return ( new scaleFunctionType5<double * > ); break;
00012   case ( 6 ): return ( new scaleFunctionType6<double * > ); break;
00013   case ( 7 ): return ( new scaleFunctionType7<double * > ); break;
00014   case ( 8 ): return ( new scaleFunctionType8<double * > ); break;
00015   case ( 9 ): return ( new scaleFunctionType9<double * > ); break;
00016   case ( 10 ): return ( new scaleFunctionType10<double * > ); break;
00017   case ( 11 ): return ( new scaleFunctionType11<double * > ); break;
00018   case ( 12 ): return ( new scaleFunctionType12<double * > ); break;
00019   case ( 13 ): return ( new scaleFunctionType13<double * > ); break;
00020   case ( 14 ): return ( new scaleFunctionType14<double * > ); break;
00021   case ( 15 ): return ( new scaleFunctionType15<double * > ); break;
00022   case ( 16 ): return ( new scaleFunctionType16<double * > ); break;
00023   case ( 17 ): return ( new scaleFunctionType17<double * > ); break;
00024   case ( 18 ): return ( new scaleFunctionType18<double * > ); break;
00025   case ( 19 ): return ( new scaleFunctionType19<double * > ); break;
00026   case ( 20 ): return ( new scaleFunctionType20<double * > ); break;
00027   case ( 21 ): return ( new scaleFunctionType21<double * > ); break;
00028   case ( 22 ): return ( new scaleFunctionType22<double * > ); break;
00029   case ( 23 ): return ( new scaleFunctionType23<double * > ); break;
00030   case ( 24 ): return ( new scaleFunctionType24<double * > ); break;
00031   case ( 25 ): return ( new scaleFunctionType25<double * > ); break;
00032   case ( 26 ): return ( new scaleFunctionType26<double * > ); break;
00033   case ( 27 ): return ( new scaleFunctionType27<double * > ); break;
00034   default: std::cout << "Error: wrong identifier = " << identifier << std::endl; exit(1);
00035   }
00036 }
00037 
00038 scaleFunctionBase<std::vector<double> > * scaleFunctionVecService( const int identifier )
00039 {
00040   switch ( identifier ) {
00041   case ( 0 ): return ( new scaleFunctionType0<std::vector<double> > ); break;
00042   case ( 1 ): return ( new scaleFunctionType1<std::vector<double> > ); break;
00043   case ( 2 ): return ( new scaleFunctionType2<std::vector<double> > ); break;
00044   case ( 3 ): return ( new scaleFunctionType3<std::vector<double> > ); break;
00045   case ( 4 ): return ( new scaleFunctionType4<std::vector<double> > ); break;
00046   case ( 5 ): return ( new scaleFunctionType5<std::vector<double> > ); break;
00047   case ( 6 ): return ( new scaleFunctionType6<std::vector<double> > ); break;
00048   case ( 7 ): return ( new scaleFunctionType7<std::vector<double> > ); break;
00049   case ( 8 ): return ( new scaleFunctionType8<std::vector<double> > ); break;
00050   case ( 9 ): return ( new scaleFunctionType9<std::vector<double> > ); break;
00051   case ( 10 ): return ( new scaleFunctionType10<std::vector<double> > ); break;
00052   case ( 11 ): return ( new scaleFunctionType11<std::vector<double> > ); break;
00053   case ( 12 ): return ( new scaleFunctionType12<std::vector<double> > ); break;
00054   case ( 13 ): return ( new scaleFunctionType13<std::vector<double> > ); break;
00055   case ( 14 ): return ( new scaleFunctionType14<std::vector<double> > ); break;
00056   case ( 15 ): return ( new scaleFunctionType15<std::vector<double> > ); break;
00057   case ( 16 ): return ( new scaleFunctionType16<std::vector<double> > ); break;
00058   case ( 17 ): return ( new scaleFunctionType17<std::vector<double> > ); break;
00059   case ( 18 ): return ( new scaleFunctionType18<std::vector<double> > ); break;
00060   case ( 19 ): return ( new scaleFunctionType19<std::vector<double> > ); break;
00061   case ( 20 ): return ( new scaleFunctionType20<std::vector<double> > ); break;
00062   case ( 21 ): return ( new scaleFunctionType21<std::vector<double> > ); break;
00063   case ( 22 ): return ( new scaleFunctionType22<std::vector<double> > ); break;
00064   case ( 23 ): return ( new scaleFunctionType23<std::vector<double> > ); break;
00065   case ( 24 ): return ( new scaleFunctionType24<std::vector<double> > ); break;
00066   case ( 25 ): return ( new scaleFunctionType25<std::vector<double> > ); break;
00067   case ( 26 ): return ( new scaleFunctionType26<std::vector<double> > ); break;
00068   case ( 27 ): return ( new scaleFunctionType27<std::vector<double> > ); break;
00069   default: std::cout << "Error: wrong identifier = " << identifier << std::endl; exit(1);
00070   }
00071 }
00072 
00073 smearFunctionBase * smearFunctionService( const int identifier )
00074 {
00075   switch ( identifier ) {
00076   case ( 0 ): return ( new smearFunctionType0 ); break;
00077   case ( 1 ): return ( new smearFunctionType1 ); break;
00078   case ( 2 ): return ( new smearFunctionType2 ); break;
00079   case ( 3 ): return ( new smearFunctionType3 ); break;
00080   case ( 4 ): return ( new smearFunctionType4 ); break;
00081   case ( 5 ): return ( new smearFunctionType5 ); break;
00082   case ( 6 ): return ( new smearFunctionType6 ); break;
00083   case ( 7 ): return ( new smearFunctionType7 ); break;
00084   default: std::cout << "Error: undefined smear type = " << identifier << std::endl; exit(1); break;
00085   }
00086 }
00087 
00088 resolutionFunctionBase<double *> * resolutionFunctionService( const int identifier )
00089 {
00090   switch ( identifier ) {
00091   case ( 0 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00092   case ( 1 ): return ( new resolutionFunctionType1<double *> ); break;
00093   case ( 2 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00094   case ( 3 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00095   case ( 4 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00096   case ( 5 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00097   case ( 6 ): return ( new resolutionFunctionType6<double *> ); break;
00098   case ( 7 ): return ( new resolutionFunctionType7<double *> ); break;
00099   case ( 8 ): return ( new resolutionFunctionType8<double *> ); break;
00100   case ( 9 ): return ( new resolutionFunctionType9<double *> ); break;
00101   case ( 10 ): return ( new resolutionFunctionType10<double *> ); break;
00102   case ( 11 ): return ( new resolutionFunctionType11<double *> ); break;
00103   case ( 12 ): return ( new resolutionFunctionType12<double *> ); break;
00104   case ( 13 ): return ( new resolutionFunctionType13<double *> ); break;
00105   case ( 14 ): return ( new resolutionFunctionType14<double *> ); break;
00106   case ( 15 ): return ( new resolutionFunctionType15<double *> ); break;
00107   case ( 17 ): return ( new resolutionFunctionType17<double *> ); break;
00108   case ( 18 ): return ( new resolutionFunctionType18<double *> ); break;
00109   case ( 19 ): return ( new resolutionFunctionType19<double *> ); break;
00110   case ( 20 ): return ( new resolutionFunctionType20<double *> ); break;
00111   case ( 30 ): return ( new resolutionFunctionType30<double *> ); break;
00112   default: std::cout << "Error: undefined resolution type = " << identifier << std::endl; exit(1); break;
00113   }
00114 }
00115 
00116 resolutionFunctionBase<std::vector<double> > * resolutionFunctionVecService( const int identifier )
00117 {
00118   switch ( identifier ) {
00119   case ( 0 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00120   case ( 1 ): return ( new resolutionFunctionType1<std::vector<double> > ); break;
00121   case ( 2 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00122   case ( 3 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00123   case ( 4 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00124   case ( 5 ): std::cout << "Error: resolution function type " << identifier << " not defined" << std::endl; exit(1); break;
00125   case ( 6 ): return ( new resolutionFunctionType6<std::vector<double> > ); break;
00126   case ( 7 ): return ( new resolutionFunctionType7<std::vector<double> > ); break;
00127   case ( 8 ): return ( new resolutionFunctionType8<std::vector<double> > ); break;
00128   case ( 9 ): return ( new resolutionFunctionType9<std::vector<double> > ); break;
00129   case ( 10 ): return ( new resolutionFunctionType10<std::vector<double> > ); break;
00130   case ( 11 ): return ( new resolutionFunctionType11<std::vector<double> > ); break;
00131   case ( 12 ): return ( new resolutionFunctionType12<std::vector<double> > ); break;
00132   case ( 13 ): return ( new resolutionFunctionType13<std::vector<double> > ); break;
00133   case ( 14 ): return ( new resolutionFunctionType14<std::vector<double> > ); break;
00134   case ( 15 ): return ( new resolutionFunctionType15<std::vector<double> > ); break;
00135   case ( 17 ): return ( new resolutionFunctionType17<std::vector<double> > ); break;
00136   case ( 18 ): return ( new resolutionFunctionType18<std::vector<double> > ); break;
00137   case ( 19 ): return ( new resolutionFunctionType19<std::vector<double> > ); break;
00138   case ( 20 ): return ( new resolutionFunctionType20<std::vector<double> > ); break;
00139   case ( 30 ): return ( new resolutionFunctionType30<std::vector<double> > ); break;
00140   default: std::cout << "Error: undefined resolution type = " << identifier << std::endl; exit(1); break;
00141   }
00142 }
00143 
00144 backgroundFunctionBase * backgroundFunctionService( const int identifier, const double & lowerLimit, const double & upperLimit )
00145 {
00146   switch ( identifier ) {
00147   case ( 0 ): std::cout << "Error: background function type " << identifier << " not defined" << std::endl; exit(1); break;
00148   case ( 1 ): return new backgroundFunctionType1(lowerLimit, upperLimit); break;
00149   case ( 2 ): return new backgroundFunctionType2(lowerLimit, upperLimit); break;
00150   // case ( 3 ): return new backgroundFunctionType3(lowerLimit, upperLimit); break;
00151   case ( 4 ): return new backgroundFunctionType4(lowerLimit, upperLimit); break;
00152   case ( 5 ): return new backgroundFunctionType5(lowerLimit, upperLimit); break;
00153   default: std::cout << "Error: undefined background function type = " << identifier << std::endl; exit(1); break;
00154   }
00155 }