// @(#)root/hist:$Name: $:$Id: TLimitDataSource.cxx,v 1.3 2003/03/21 14:53:49 brun Exp $
// Author: Christophe.Delaere@cern.ch 21/08/2002
///////////////////////////////////////////////////////////////////////////
//
// TLimitDataSource
//
// This class serves as interface to feed data into the TLimit routines
//
///////////////////////////////////////////////////////////////////////////
#include "TLimitDataSource.h"
#include "TH1.h"
#include "TObjString.h"
#include "TRandom3.h"
ClassImp(TLimitDataSource)
TLimitDataSource::TLimitDataSource()
{
// Default constructor
fDummyTH1D.SetOwner();
fDummyIds.SetOwner();
}
TLimitDataSource::TLimitDataSource(TH1D * s, TH1D * b, TH1D * d)
{
// Another constructor, directly adds one channel
// with signal, background and data given as input.
fDummyTH1D.SetOwner();
fDummyIds.SetOwner();
AddChannel(s, b, d);
}
void TLimitDataSource::AddChannel(TH1D * s, TH1D * b, TH1D * d)
{
// Adds a channel with signal, background and data given as input.
TH1D *empty;
TRandom3 generator;
fSignal.AddLast(s);
fBackground.AddLast(b);
fCandidates.AddLast(d);
char rndname[20];
sprintf(rndname, "rndname%f", generator.Rndm());
empty = new TH1D(rndname, "", s->GetSize(), 0, 1);
empty->SetDirectory(0);
fErrorOnSignal.AddLast(empty);
fDummyTH1D.AddLast(empty);
sprintf(rndname, "rndname%f", generator.Rndm());
empty = new TH1D(rndname, "", s->GetSize(), 0, 1);
empty->SetDirectory(0);
fErrorOnBackground.AddLast(empty);
fDummyTH1D.AddLast(empty);
TObjArray *dummy = new TObjArray(0);
fIds.AddLast(dummy);
fDummyIds.AddLast(dummy);
}
void TLimitDataSource::AddChannel(TH1D * s, TH1D * b, TH1D * d, TH1D * es,
TH1D * eb, TObjArray * names)
{
// Adds a channel with signal, background and data given as input.
// In addition, error sources are defined.
// TH1D are here used for convenience: each bin has to be seen as
// an error source (relative).
// names is an array of strings containing the names of the sources.
// Sources with the same name are correlated.
fSignal.AddLast(s);
fBackground.AddLast(b);
fCandidates.AddLast(d);
fErrorOnSignal.AddLast(es);
fErrorOnBackground.AddLast(eb);
fIds.AddLast(names);
}
void TLimitDataSource::SetOwner(bool swtch)
{
// Gives to the TLimitDataSource the ownership of the various objects
// given as input.
// Objects are then deleted by the TLimitDataSource destructor.
fSignal.SetOwner(swtch);
fBackground.SetOwner(swtch);
fCandidates.SetOwner(swtch);
fErrorOnSignal.SetOwner(swtch);
fErrorOnBackground.SetOwner(swtch);
fIds.SetOwner(swtch);
fDummyTH1D.SetOwner(!swtch);
fDummyIds.SetOwner(!swtch);
}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.