00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "RooFit.h"
00028
00029 #include "RooLinTransBinning.h"
00030 #include "RooLinTransBinning.h"
00031
00032 ClassImp(RooLinTransBinning)
00033 ;
00034
00035
00036
00037
00038 RooLinTransBinning::RooLinTransBinning(const RooAbsBinning& input, Double_t slope, Double_t offset, const char* name) :
00039 RooAbsBinning(name),
00040 _array(0)
00041 {
00042
00043
00044
00045 updateInput(input,slope,offset) ;
00046 }
00047
00048
00049
00050
00051 RooLinTransBinning::RooLinTransBinning(const RooLinTransBinning& other, const char* name) :
00052 RooAbsBinning(name),
00053 _array(0)
00054 {
00055
00056
00057 _input = other._input ;
00058 _slope = other._slope ;
00059 _offset = other._offset ;
00060 }
00061
00062
00063
00064
00065 RooLinTransBinning::~RooLinTransBinning()
00066 {
00067
00068
00069 if (_array) delete[] _array ;
00070 }
00071
00072
00073
00074
00075 void RooLinTransBinning::setRange(Double_t , Double_t )
00076 {
00077
00078
00079 }
00080
00081
00082
00083 Double_t* RooLinTransBinning::array() const
00084 {
00085
00086
00087 Int_t n = numBoundaries() ;
00088
00089 if (_array) delete[] _array ;
00090 _array = new Double_t[n] ;
00091
00092 Double_t* inputArray = _input->array() ;
00093
00094 Int_t i ;
00095 if (_slope>0) {
00096 for (i=0 ; i<n ; i++) {
00097 _array[i] = trans(inputArray[i]) ;
00098 }
00099 } else {
00100 for (i=0 ; i<n ; i++) {
00101 _array[i] = trans(inputArray[n-i-1]) ;
00102 }
00103 }
00104 return _array ;
00105
00106 }
00107
00108
00109
00110
00111 void RooLinTransBinning::updateInput(const RooAbsBinning& input, Double_t slope, Double_t offset)
00112 {
00113
00114
00115 _input = (RooAbsBinning*) &input ;
00116 _slope = slope ;
00117 _offset = offset ;
00118 }
00119