RooCruijff.cc

Go to the documentation of this file.
00001 /*****************************************************************************
00002 * Package: RooRarFit
00003  *    File: $Id: RooCruijff.cc,v 1.5 2011/06/16 13:18:48 fwilson Exp $   *
00004  * Authors:                                                                  *
00005  *    Karsten Koeneke, Massachusetts Institute of Technology, Cambridge, USA *
00006  *    Vouter Hulbergen                                                       *
00007  *                                                                           *
00008  * Copyright (C) 2005-2012, Massachsetts Institute of Technology, Cambridge, USA  *
00009  *****************************************************************************/
00010 
00011 // This is an implementation for the Cruijff function for RooFit
00012 
00013 #include "RooRarFit/rarVersion.hh"
00014 
00015 #include "Riostream.h"
00016 
00017 #include "RooRarFit/RooCruijff.hh"
00018 #include "RooFitCore/RooRealVar.hh"
00019 #include "RooFitCore/RooRealConstant.hh"
00020 
00021 ClassImp(RooCruijff)
00022 
00023 RooCruijff::RooCruijff(const char *name, const char *title,
00024                        RooAbsReal& _x, RooAbsReal& _m0, 
00025                        RooAbsReal& _sigmaL, RooAbsReal& _sigmaR,
00026                        RooAbsReal& _alphaL, RooAbsReal& _alphaR)
00027   :
00028   RooAbsPdf(name, title),
00029   x("x", "x", this, _x),
00030   m0("m0", "m0", this, _m0),
00031   sigmaL("sigmaL", "sigmaL", this, _sigmaL),
00032   sigmaR("sigmaR", "sigmaR", this, _sigmaR),
00033   alphaL("alphaL", "alphaL", this, _alphaL),
00034   alphaR("alphaR", "alphaR", this, _alphaR)
00035 {
00036 }
00037 
00038 RooCruijff::RooCruijff(const RooCruijff& other, const char* name) :
00039   RooAbsPdf(other, name), 
00040   x("x", this, other.x), 
00041   m0("m0", this, other.m0),
00042   sigmaL("sigmaL", this, other.sigmaL), 
00043   sigmaR("sigmaR", this, other.sigmaR), 
00044   alphaL("alphaL", this, other.alphaL), 
00045   alphaR("alphaR", this, other.alphaR)
00046 {
00047 }
00048 
00049 Double_t RooCruijff::evaluate() const 
00050 {
00051   // build the functional form
00052   double sigma = 0.0;
00053   double alpha = 0.0;
00054   double dx = (x - m0);
00055   if(dx<0){
00056     sigma = sigmaL;
00057     alpha = alphaL;
00058   } else {
00059     sigma = sigmaR;
00060     alpha = alphaR;
00061   }
00062   double f = 2*sigma*sigma + alpha*dx*dx ;
00063   return exp(-dx*dx/f) ;
00064 }

Generated on 30 Oct 2013 for RooRarFit by  doxygen 1.4.7