#include "hpidalghardcutspar.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hparamlist.h"
ClassImp(HPidAlgHardCutsPar)
HPidAlgHardCutsPar::HPidAlgHardCutsPar(const Char_t *name, const Char_t *title, const Char_t *context)
:HParCond(name, title, context)
{
clear();
}
HPidAlgHardCutsPar::~HPidAlgHardCutsPar(void)
{
for (Int_t i = 0; i < numofparams; i++) {
delete HardCutID[i];
delete HardCutValue[i];
}
numofparams=0;
}
Bool_t HPidAlgHardCutsPar::init(HParIo * inp, Int_t * set)
{
HDetParIo *input = inp->getDetParIo("HCondParIo");
if (input)
return (input->init(this, set));
return kFALSE;
}
Int_t HPidAlgHardCutsPar::write(HParIo * output)
{
HDetParIo *out = output->getDetParIo("HCondParIo");
if (out)
return out->write(this);
return kFALSE;
}
void HPidAlgHardCutsPar::clear(void)
{
numofparams = 0;
for (Int_t i = 0; i < HARDCUTSPAR_MAX; i++) {
HardCutValue[i]=NULL;
HardCutID[i]=NULL;
x[i]=new TArrayF();
y[i]=new TArrayF();
}
}
void HPidAlgHardCutsPar::registerCut(const Char_t * cutID) {
TCutG * dummy = NULL;
setCut(cutID,dummy);
}
TCutG * HPidAlgHardCutsPar::getCut(const Char_t * cutID)
{
for (Int_t i = 0; i < numofparams; i++)
if (strcmp(HardCutID[i]->Data(),cutID) == 0) {
return HardCutValue[i];
}
return NULL;
}
void HPidAlgHardCutsPar::setCut(const Char_t * cutID, TCutG * cutValue)
{
for (Int_t i = 0; i < numofparams; i++)
if (HardCutID[i]->CompareTo(cutID)==0) {
delete HardCutValue[i];
if (cutValue) {
HardCutValue[i] = new TCutG(HardCutID[i]->Data(),cutValue->GetN(),cutValue->GetX(),cutValue->GetY());
}
else {
HardCutValue[i] = NULL;
}
return;
}
numofparams++;
if (numofparams == HARDCUTSPAR_MAX) {
std::cout << "HPidAlgHardCutsPar::setCut: HARDCUTSPAR_MAX reached" << std::endl;
return;
}
HardCutID[numofparams-1] = new TString(cutID);
if (cutValue) {
gROOT->GetListOfSpecials()->Remove(cutValue);
HardCutValue[numofparams-1] = new TCutG(HardCutID[numofparams-1]->Data(),cutValue->GetN(),cutValue->GetX(),cutValue->GetY());
}
else {
HardCutValue[numofparams-1] = NULL;
}
}
void HPidAlgHardCutsPar::putParams(HParamList * l)
{
if (!l)
return;
for (Int_t i = 0; i < numofparams; i++) {
TString xname(*HardCutID[i] + TString("_x"));
TString yname(*HardCutID[i] + TString("_y"));
TArrayD xd(HardCutValue[i]->GetN(), HardCutValue[i]->GetX());
TArrayD yd(HardCutValue[i]->GetN(), HardCutValue[i]->GetY());
TArrayF xf;
TArrayF yf;
xf.Set(HardCutValue[i]->GetN());
yf.Set(HardCutValue[i]->GetN());
for (Int_t j=0;j<HardCutValue[i]->GetN();j++) {
xf[j]=(Float_t) xd[j];
yf[j]=(Float_t) yd[j];
}
if (x[i]) delete x[i];
if (y[i]) delete y[i];
x[i] = new TArrayF(xf);
y[i] = new TArrayF(yf);
l->add(xname, * x[i]);
l->add(yname, * y[i]);
}
}
void HPidAlgHardCutsPar::print(void)
{
HParSet::print();
for (Int_t i = 0; i < numofparams; i++) {
cout << HardCutID[i]->Data() << " is:" << endl;
HardCutValue[i]->Print();
}
}
Bool_t HPidAlgHardCutsPar::getParams(HParamList * l)
{
if (!l)
return kFALSE;
for (Int_t i = 0; i < numofparams; i++) {
TString xname(*HardCutID[i] + TString("_x"));
TString yname(*HardCutID[i] + TString("_y"));
if (!(l->fill(xname, x[i])))
Error("getParams", "parameter %s (x) registered but not found in param source",HardCutID[i]->Data());
if (!(l->fill(yname, y[i])))
Error("getParams", "parameter %s (y) registered but not found in param source",HardCutID[i]->Data());
if (x[i]->GetSize() != y[i]->GetSize())
Error("getParams", "parameter %s: N does not match ",HardCutID[i]->Data());
cout << "Array with " << y[i]->GetSize()<< " elements for " << HardCutID[i]->Data() << " found." << endl;
TCutG dummy(HardCutID[i]->Data(),y[i]->GetSize(),x[i]->GetArray(),y[i]->GetArray());
gROOT->GetListOfSpecials()->Remove(&dummy);
setCut((Char_t *)HardCutID[i]->Data(),&dummy);
}
return kTRUE;
}
#if 1
void HPidAlgHardCutsPar::Streamer(TBuffer & R__b)
{
if (R__b.IsReading())
{
Version_t R__v = R__b.ReadVersion();
if (R__v != 1) {
cout << "Version >1 not supported" << endl;
return;
}
TObject::Streamer(R__b);
HParCond::Streamer(R__b);
Int_t tmp_numofparams;
R__b >> tmp_numofparams;
for (Int_t i=0; i<tmp_numofparams; i++) {
TString tmp_HardCutID;
TCutG tmp_HardCutValue;
tmp_HardCutValue.Streamer(R__b);
R__b >> tmp_HardCutID;
setCut((Char_t*)tmp_HardCutID.Data(),&tmp_HardCutValue);
}
} else {
R__b.WriteVersion(HPidAlgHardCutsPar::IsA());
TObject::Streamer(R__b);
HParCond::Streamer(R__b);
R__b << numofparams;
for (Int_t i=0; i<numofparams; i++) {
HardCutValue[i]->Streamer(R__b);
R__b << *HardCutID[i];
}
}
}
#endif
Last change: Sat May 22 13:06:47 2010
Last generated: 2010-05-22 13:06
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.