using namespace std;
#include <iostream>
#include <list>
#include "TObjString.h"
#include "hhypbasealgorithm.h"
ClassImp(HHypBaseAlgorithm)
HHypBaseAlgorithm::HHypBaseAlgorithm(const Char_t *name_i,const Option_t par[])
{
algoName = name_i;
mylist = NULL;
beam = NULL;
histofile = NULL;
options = par;
skip = kFALSE;
skip = (GetOpt("SKIPEVENIFEXIST") != NULL);
}
HHypBaseAlgorithm::~HHypBaseAlgorithm()
{
}
TString *HHypBaseAlgorithm::GetOpt(TString st)
{
TString *retval=NULL;
st.ToUpper();
TObjArray * bla = options.Tokenize(",");
for (Int_t i=0; i<bla->GetEntriesFast(); i++) {
TString str = ((TObjString *)bla->At(i))->String();
TObjArray * bla2 = str.Tokenize("=");
TString optionstr = ((TObjString *)bla2->At(0))->String();
optionstr.ToUpper();
if (strstr(st.Data(), optionstr.Data()) != NULL) {
if (bla2->GetEntriesFast() == 1) {
static TString empty("");
retval=∅
}else if (bla2->GetEntriesFast() == 2) {
static TString val;
val=((TObjString *)bla2->At(1))->String();
retval=&val;
}else{
Error("GetOpt", "error in option list");
}
delete bla2;
break;
}
delete bla2;
}
delete bla;
return retval;
}
HHypList *HHypBaseAlgorithm::GetList(void)
{
if (mylist)
return mylist;
if (exitIdx < 0)
return NULL;
HCategory *listCat = gHades->getCurrentEvent()->getCategory(catHypList);
mylist = (HHypList *) listCat->getObject(exitIdx);
return mylist;
}
Bool_t HHypBaseAlgorithm::SetSourceChannelAlgIdx(Int_t i_id)
{
sourceIdx = i_id;
return kTRUE;
}
Bool_t HHypBaseAlgorithm::SetExitChannelAlgIdx(Int_t e_id)
{
exitIdx = e_id;
return kTRUE;
}
Bool_t HHypBaseAlgorithm::SetExitList(Int_t e_list)
{
exitList = e_list;
return kTRUE;
}
Bool_t HHypBaseAlgorithm::SetInitList(Int_t i_list)
{
initList = i_list;
return kTRUE;
}
Int_t HHypBaseAlgorithm::GetSourceChannelAlgIdx()
{
return (sourceIdx);
}
Int_t HHypBaseAlgorithm::GetExitChannelAlgIdx()
{
return (exitIdx);
}
const Char_t *HHypBaseAlgorithm::GetName()
{
return (algoName.Data());
}
Bool_t HHypBaseAlgorithm::base_execute()
{
if ((sourceIdx >= 0) && (exitList >= 0))
{
HLocation locDummy;
HCategory *listCat = gHades->getCurrentEvent()->getCategory(catHypList);
HHypList *sourcelist = (HHypList *) listCat->getObject(sourceIdx);
mylist = (HHypList *) listCat->getNewSlot(locDummy, &exitIdx);
if (mylist != 0)
mylist = new(mylist) HHypList(sourcelist);
else
return kFALSE;
mylist->setListId(exitList);
} else if ((sourceIdx >= 0) && (exitList < 0)) {
mylist = NULL;
HCategory *listCat = gHades->getCurrentEvent()->getCategory(catHypList);
mylist = (HHypList *) listCat->getObject(sourceIdx);
if (!mylist)
return kFALSE;
} else {
mylist = NULL;
}
return kTRUE;
}
Bool_t HHypBaseAlgorithm::base_init()
{
return kTRUE;
}
Bool_t HHypBaseAlgorithm::base_reinit()
{
return kTRUE;
}
Bool_t HHypBaseAlgorithm::base_finalize()
{
return kTRUE;
}
Bool_t HHypBaseAlgorithm::init()
{
cerr << "WARNING: init is abstract" << endl;
return kFALSE;
}
Bool_t HHypBaseAlgorithm::reinit()
{
cerr << "WARNING: reinit is abstract" << endl;
return kFALSE;
}
Bool_t HHypBaseAlgorithm::execute()
{
cerr << "WARNING: execute is abstract" << endl;
return kFALSE;
}
Bool_t HHypBaseAlgorithm::finalize()
{
cerr << "WARNING: finalize is abstract" << endl;
return kFALSE;
}
Last change: Sat May 22 12:57:40 2010
Last generated: 2010-05-22 12:57
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.