// <a target="_top" href="http://webdb.gsi.de/pls/hades_webdbs/hanal.hal_posting_query.show_posting_text?p_id=436">
// this analysis logbook entry<a>. END_HTML
#include "TObjString.h"
#include "hades.h"
#include "hrich700taskset.h"
#include "hrich700digitizer.h"
#include "hrich700calibrater.h"
#include "hrich700ringfinderhough.h"
using namespace std;
ClassImp(HRich700TaskSet)
HRich700TaskSet::HRich700TaskSet(void)
: HTaskSet()
{
fNoRingFinder = kFALSE;
fNoCalibrater = kFALSE;
}
HRich700TaskSet::HRich700TaskSet(const Text_t name[], const Text_t title[])
: HTaskSet(name, title)
{
fNoRingFinder = kFALSE;
fNoCalibrater = kFALSE;
}
HRich700TaskSet::~HRich700TaskSet(void)
{
}
HTask*
HRich700TaskSet::make(const Char_t *select, const Option_t *option)
{
HTaskSet* tasks = new HTaskSet("Rich", "List of Rich tasks");
TString sel = select;
TString opt = option;
parseArguments(opt);
sel.ToLower();
if (0 == sel.CompareTo("simulation") &&
0 != gHades->getEmbeddingMode()) {
Error("make", "embeddingMode > 0 in simulation NOT ALLOWED!");
return NULL;
}
if (0 == sel.CompareTo("real"))
{
if(!fNoCalibrater){
tasks->add(new HRich700Calibrater("rich.calibrater", "Rich Calibrater"));
}
if( 0 != gHades->getEmbeddingMode()){
tasks->add(new HRich700Digitizer("rich.digi", "Rich digitizer"));
}
}
if (0 == sel.CompareTo("simulation"))
{
tasks->add(new HRich700Digitizer("rich.digi", "Rich digitizer"));
}
if(!fNoRingFinder)
{
tasks->add(new HRich700RingFinderHough("rich.ringfinder", "Rich ring finder"));
}
return tasks;
}
void HRich700TaskSet::parseArguments(TString s1)
{
s1.ToLower();
s1.ReplaceAll(" ", "");
if (0 != s1.Length()) {
TObjArray* myarguments = s1.Tokenize(",");
TIterator* myiter = NULL;
TObjString* stemp = NULL;
TString argument;
myiter = myarguments->MakeIterator();
myiter->Reset();
while (0 != (stemp = static_cast<TObjString*>(myiter->Next()))) {
argument = stemp->GetString();
Info("parseArguments()","option: %s", argument.Data() );
if (0 == argument.CompareTo("noringfinder")) {
fNoRingFinder = kTRUE;
}
else if (0 == argument.CompareTo("nocalibrater")) {
fNoCalibrater = kTRUE;
} else {
Error("parseArguments","Unknown Option %s found!",argument.Data());
}
}
delete myiter;
myiter = NULL;
myarguments->Delete();
delete myarguments;
}
}