Changeset 3601 in Sophya for trunk/SophyaLib/NTools/tsfunran.cc


Ignore:
Timestamp:
Apr 28, 2009, 5:23:19 PM (16 years ago)
Author:
cmv
Message:

adaptation de TsFunRan a RandomGeneratorInterface , cmv 28/04/2009

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/tsfunran.cc

    r3600 r3601  
    11#include "sopnamsp.h"
    22#include "machdefs.h"
     3#include <iostream>
    34#include "pexceptions.h"
     5#include "randr48.h"
    46#include "tsfunran.h"
    5 #include <iostream>
    67
    78
     
    4344*/
    4445TsFunRan::TsFunRan(TsFunRan::Func f, r_8 xMin, r_8 xMax, int_4 nBin, bool pdf)
    45   : Histo(xMin,xMax,nBin)
     46  : Histo(xMin,xMax,nBin), rg_(NULL), internal_rg_(false)
    4647{
    4748 if(nBin<=1)
    4849   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    4950 for(int_4 i=0;i<nBin;i++) (*this)(i) = f(BinCenter(i));
    50  rg_ = new RandomGenerator(1,false);
     51 rg_ = new DR48RandGen();
    5152 create_DF(pdf);
    5253}
     
    5758*/
    5859TsFunRan::TsFunRan(ClassFunc& f, r_8 xMin, r_8 xMax, int_4 nBin, bool pdf)
    59   : Histo(xMin,xMax,nBin)
     60  : Histo(xMin,xMax,nBin), rg_(NULL), internal_rg_(false)
    6061{
    6162 if(nBin<=1)
    6263   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    6364 for(int_4 i=0;i<nBin;i++) (*this)(i) = f(BinCenter(i));
    64  rg_ = new RandomGenerator(1,false);
     65 rg_ = new DR48RandGen();
    6566 create_DF(pdf);
    6667}
     
    7475*/
    7576TsFunRan::TsFunRan(r_8 *tab, int_4 nBin, bool pdf)
    76 : Histo(-0.5,nBin-0.5,nBin)
     77: Histo(-0.5,nBin-0.5,nBin), rg_(NULL), internal_rg_(false)
    7778{
    7879 if(nBin<=1)
    7980   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    8081 for(int_4 i=0;i<nBin;i++) (*this)(i) = tab[i];
    81  rg_ = new RandomGenerator(1,false);
     82 rg_ = new DR48RandGen();
    8283 create_DF(pdf);
    8384}
     
    9293*/
    9394TsFunRan::TsFunRan(r_8 *tab, int_4 nBin, r_8 xMin, r_8 xMax, bool pdf)
    94 : Histo(xMin,xMax,nBin)
     95: Histo(xMin,xMax,nBin), rg_(NULL), internal_rg_(false)
    9596{
    9697 if(nBin<=1)
    9798   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    9899 for(int_4 i=0;i<nBin;i++) (*this)(i) = tab[i];
    99  rg_ = new RandomGenerator(1,false);
     100 rg_ = new DR48RandGen();
    100101 create_DF(pdf);
    101102}
     
    105106*/
    106107TsFunRan::TsFunRan(TVector<r_8>& tab, int_4 nBin, bool pdf)
    107 : Histo(-0.5,nBin-0.5,nBin)
     108: Histo(-0.5,nBin-0.5,nBin), rg_(NULL), internal_rg_(false)
    108109{
    109110 if(nBin<=1)
    110111   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    111112 for(int_4 i=0;i<nBin;i++) (*this)(i) = tab(i);
    112  rg_ = new RandomGenerator(1,false);
     113 rg_ = new DR48RandGen();
    113114 create_DF(pdf);
    114115}
     
    118119*/
    119120TsFunRan::TsFunRan(TVector<r_8>& tab, int_4 nBin, r_8 xMin, r_8 xMax, bool pdf)
    120 : Histo(xMin,xMax,nBin)
     121: Histo(xMin,xMax,nBin), rg_(NULL), internal_rg_(false)
    121122{
    122123 if(nBin<=1)
    123124   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    124125 for(int_4 i=0;i<nBin;i++) (*this)(i) = tab(i);
    125  rg_ = new RandomGenerator(1,false);
     126 rg_ = new DR48RandGen();
    126127 create_DF(pdf);
    127128}
     
    134135*/
    135136TsFunRan::TsFunRan(Histo &h, bool pdf)
    136   : Histo(h)
     137  : Histo(h), rg_(NULL), internal_rg_(false)
    137138{
    138139 if(mBins<=1)
    139140   throw RangeCheckError("TsFunRan::TsFunRan less than 2 bins requested");
    140  rg_ = new RandomGenerator(1,false);
     141 rg_ = new DR48RandGen();
    141142 create_DF(pdf);
    142143}
     
    145146/*! Creator by copy */
    146147TsFunRan::TsFunRan(const TsFunRan& fh)
    147   : Histo(fh)
    148 {
    149   rg_ = new RandomGenerator(*fh.rg_);
     148  : Histo(fh), rg_(fh.rg_), internal_rg_(false)
     149{
    150150}
    151151
     
    153153/*! Creator by default */
    154154TsFunRan::TsFunRan(void)
    155 {
    156   rg_ = new RandomGenerator(1,false);
     155  : rg_(NULL), internal_rg_(false)
     156{
    157157}
    158158
     
    160160TsFunRan::~TsFunRan(void)
    161161{
    162   if(rg_!=NULL) delete rg_;
     162  if(rg_!=NULL && internal_rg_) delete rg_;
    163163}
    164164
     
    180180
    181181/********* Methode *********/
    182 void TsFunRan::SetRandomGenerator(RandomGenerator& rg)
    183 {
    184   if(rg_!=NULL) delete rg_;
    185   rg_ = new RandomGenerator(rg);
     182void TsFunRan::SetRandomGenerator(RandomGeneratorInterface* rg)
     183{
     184  if(rg_!=NULL && internal_rg_) delete rg_;
     185  rg_ = rg;
    186186}
    187187
Note: See TracChangeset for help on using the changeset viewer.