ROOT logo
/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitModels                                                     *
 * @(#)root/roofit:$Id: RooNovosibirsk.cxx 24286 2008-06-16 15:47:04Z wouter $
 * Authors:                                                                  *
 *   DB, Dieter Best,     UC Irvine,         best@slac.stanford.edu          *
 *   HT, Hirohisa Tanaka  SLAC               tanaka@slac.stanford.edu        *
 *                                                                           *
 * Copyright (c) 2000-2005, Regents of the University of California          *
 *                          and Stanford University. All rights reserved.    *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
//
// BEGIN_HTML
// RooNovosibirsk implements the Novosibirsk function 
// END_HTML
//


#include "RooFit.h"

#include <math.h>
#include "TMath.h"

#include "RooNovosibirsk.h"
#include "RooRealVar.h"

ClassImp(RooNovosibirsk)



//_____________________________________________________________________________
RooNovosibirsk::RooNovosibirsk(const char *name, const char *title,
			     RooAbsReal& _x,     RooAbsReal& _peak,
			     RooAbsReal& _width, RooAbsReal& _tail) :
  // The two addresses refer to our first dependent variable and
  // parameter, respectively, as declared in the rdl file
  RooAbsPdf(name, title),
  x("x","x",this,_x),
  width("width","width",this,_width),
  peak("peak","peak",this,_peak),
  tail("tail","tail",this,_tail)
{
}


//_____________________________________________________________________________
RooNovosibirsk::RooNovosibirsk(const RooNovosibirsk& other, const char *name):
  RooAbsPdf(other,name),
  x("x",this,other.x),
  width("width",this,other.width),
  peak("peak",this,other.peak),
  tail("tail",this,other.tail)
{
}


//_____________________________________________________________________________
Double_t RooNovosibirsk::evaluate() const {
  // Put the formula for your PDF's value here. Use the pre-computed
  // value of _norm to normalize the result.

  double qa=0,qb=0,qc=0,qx=0,qy=0;

  if(TMath::Abs(tail) < 1.e-7) 
    qc = 0.5*TMath::Power(((x-peak)/width),2);
  else {
    qa = tail*sqrt(log(4.));
    qb = sinh(qa)/qa;
    qx = (x-peak)/width*qb;
    qy = 1.+tail*qx;
  
    //---- Cutting curve from right side

    if( qy > 1.E-7) 
      qc = 0.5*(TMath::Power((log(qy)/tail),2) + tail*tail);
    else
      qc = 15.0;
  }

  //---- Normalize the result

  return exp(-qc);

}
 RooNovosibirsk.cxx:1
 RooNovosibirsk.cxx:2
 RooNovosibirsk.cxx:3
 RooNovosibirsk.cxx:4
 RooNovosibirsk.cxx:5
 RooNovosibirsk.cxx:6
 RooNovosibirsk.cxx:7
 RooNovosibirsk.cxx:8
 RooNovosibirsk.cxx:9
 RooNovosibirsk.cxx:10
 RooNovosibirsk.cxx:11
 RooNovosibirsk.cxx:12
 RooNovosibirsk.cxx:13
 RooNovosibirsk.cxx:14
 RooNovosibirsk.cxx:15
 RooNovosibirsk.cxx:16
 RooNovosibirsk.cxx:17
 RooNovosibirsk.cxx:18
 RooNovosibirsk.cxx:19
 RooNovosibirsk.cxx:20
 RooNovosibirsk.cxx:21
 RooNovosibirsk.cxx:22
 RooNovosibirsk.cxx:23
 RooNovosibirsk.cxx:24
 RooNovosibirsk.cxx:25
 RooNovosibirsk.cxx:26
 RooNovosibirsk.cxx:27
 RooNovosibirsk.cxx:28
 RooNovosibirsk.cxx:29
 RooNovosibirsk.cxx:30
 RooNovosibirsk.cxx:31
 RooNovosibirsk.cxx:32
 RooNovosibirsk.cxx:33
 RooNovosibirsk.cxx:34
 RooNovosibirsk.cxx:35
 RooNovosibirsk.cxx:36
 RooNovosibirsk.cxx:37
 RooNovosibirsk.cxx:38
 RooNovosibirsk.cxx:39
 RooNovosibirsk.cxx:40
 RooNovosibirsk.cxx:41
 RooNovosibirsk.cxx:42
 RooNovosibirsk.cxx:43
 RooNovosibirsk.cxx:44
 RooNovosibirsk.cxx:45
 RooNovosibirsk.cxx:46
 RooNovosibirsk.cxx:47
 RooNovosibirsk.cxx:48
 RooNovosibirsk.cxx:49
 RooNovosibirsk.cxx:50
 RooNovosibirsk.cxx:51
 RooNovosibirsk.cxx:52
 RooNovosibirsk.cxx:53
 RooNovosibirsk.cxx:54
 RooNovosibirsk.cxx:55
 RooNovosibirsk.cxx:56
 RooNovosibirsk.cxx:57
 RooNovosibirsk.cxx:58
 RooNovosibirsk.cxx:59
 RooNovosibirsk.cxx:60
 RooNovosibirsk.cxx:61
 RooNovosibirsk.cxx:62
 RooNovosibirsk.cxx:63
 RooNovosibirsk.cxx:64
 RooNovosibirsk.cxx:65
 RooNovosibirsk.cxx:66
 RooNovosibirsk.cxx:67
 RooNovosibirsk.cxx:68
 RooNovosibirsk.cxx:69
 RooNovosibirsk.cxx:70
 RooNovosibirsk.cxx:71
 RooNovosibirsk.cxx:72
 RooNovosibirsk.cxx:73
 RooNovosibirsk.cxx:74
 RooNovosibirsk.cxx:75
 RooNovosibirsk.cxx:76
 RooNovosibirsk.cxx:77
 RooNovosibirsk.cxx:78
 RooNovosibirsk.cxx:79
 RooNovosibirsk.cxx:80
 RooNovosibirsk.cxx:81
 RooNovosibirsk.cxx:82
 RooNovosibirsk.cxx:83
 RooNovosibirsk.cxx:84
 RooNovosibirsk.cxx:85
 RooNovosibirsk.cxx:86
 RooNovosibirsk.cxx:87
 RooNovosibirsk.cxx:88
 RooNovosibirsk.cxx:89
 RooNovosibirsk.cxx:90