// <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 "hrichanalysis.h"
#include "hrichanalysissim.h"
#include "hrichdigitizer.h"
#include "hrichtaskset.h"
using namespace std;
ClassImp(HRichTaskSet)
HRichTaskSet::HRichTaskSet(void)
: HTaskSet()
{
fNoiseOn = kTRUE;
fSkipEvent = kFALSE;
}
HRichTaskSet::HRichTaskSet(const Text_t name[], const Text_t title[])
: HTaskSet(name, title)
{
fNoiseOn = kTRUE;
fSkipEvent = kFALSE;
}
HRichTaskSet::~HRichTaskSet(void)
{
}
HTask*
HRichTaskSet::make(const Char_t *select, const Option_t *option)
{
// <a target="_top" href="http://forum.gsi.de/index.php?t=rview&th=2193&rid=334">
// this forum entry<a>. END_HTML
HTaskSet* tasks = new HTaskSet("Rich", "List of Rich tasks");
TString sel = select;
TString opt = option;
sel.ToLower();
if (0 == sel.CompareTo("simulation") &&
0 != gHades->getEmbeddingMode()) {
Error("make", "embeddingMode > 0 in simulation NOT ALLOWED!");
return NULL;
}
parseArguments(opt);
if (0 == sel.CompareTo("simulation") &&
0 == gHades->getEmbeddingMode()) {
tasks->add(new HRichDigitizer("rich.digi", "Rich digitizer", fNoiseOn));
tasks->add(new HRichAnalysisSim("rich.ana", "Ring finder", fSkipEvent));
}
if (0 == sel.CompareTo("real") &&
0 == gHades->getEmbeddingMode()) {
tasks->add(new HRichAnalysis("rich.ana", "Ring finder", fSkipEvent));
}
if (0 == sel.CompareTo("real") &&
0 != gHades->getEmbeddingMode()) {
tasks->add(new HRichDigitizer("rich.digi", "Rich digitizer", fNoiseOn));
tasks->add(new HRichAnalysisSim("rich.ana", "Ring finder", fSkipEvent));
}
return tasks;
}
void
HRichTaskSet::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("skipevent")) {
fSkipEvent = kTRUE;
} else if (0 == argument.CompareTo("noiseoff")) {
fNoiseOn = kFALSE;
}
}
delete myiter;
myiter = NULL;
myarguments->Delete();
delete myarguments;
}
}