#include "hsplinetaskset.h"
#include "hmessagemgr.h"
#include "hsplinetrackF2.h"
#include "hmetamatchF2.h"
#include "hsplinetofclF2.h"
#include "hrktrackBF2.h"
#include <cstdlib>
using namespace std;
ClassImp(HSplineTaskSet)
Bool_t HSplineTaskSet::isSpline = kFALSE;
Bool_t HSplineTaskSet::isClustering = kFALSE;
Bool_t HSplineTaskSet::isRunge = kFALSE;
Bool_t HSplineTaskSet::isRejectUnMatched = kFALSE;
HSplineTaskSet::HSplineTaskSet() {
isSplinePar = kFALSE;
}
HSplineTaskSet::HSplineTaskSet(const Text_t name[],const Text_t title[]):HTaskSet(name,title){
isSplinePar = kFALSE;
}
HSplineTaskSet::~HSplineTaskSet()
{
}
void HSplineTaskSet::setSplinePar()
{
isSplinePar = kTRUE;
}
HTask* HSplineTaskSet::make(const Char_t* select,const Option_t *options)
{
HTaskSet *tasks = new HTaskSet("Spline","Spline Task Sets");
TString opt = options;
parseArguments(opt);
HMetaMatchF2* metaF = new HMetaMatchF2("MetaMAtching","MetaMAtching");
tasks->add(metaF);
if(isRejectUnMatched) metaF->storeNotMatchedTracks(kFALSE);
else metaF->storeNotMatchedTracks(kTRUE);
if(isSpline)
{
HSplineTrackF2* pSplineTrackF2 = new HSplineTrackF2("SplineTrack","SplineTrack");
if(isSplinePar) pSplineTrackF2->makeSplinePar();
tasks->add(pSplineTrackF2);
}
if(isRunge)
{
tasks->add(new HRKTrackBF2("RK-tracking2", 2));
}
if(isClustering)
{
tasks->add(new HSplineTofClF2("tofClustering","tofClustering",1));
}
else
{
}
return tasks;
}
void HSplineTaskSet::parseArguments(TString a)
{
a.ReplaceAll(" ","");
if(a.CompareTo("") == 0) return;
a.ToLower();
TObjArray* myarguments = a.Tokenize(",");
TObjString *stemp;
TString argument;
TIterator* myiter = myarguments->MakeIterator();
while ((stemp = (TObjString*)myiter->Next()) != 0) {
argument = stemp->GetString();
Info("parseArguments()","option: %s", argument.Data() );
if(argument.CompareTo ("spline") == 0){ isSpline = kTRUE; }
else if(argument.CompareTo("runge") == 0){ isRunge = kTRUE; }
else if(argument.CompareTo("doclustering") == 0){ isClustering = kTRUE; }
else if(argument.CompareTo("rejectunmatched") == 0){ isRejectUnMatched = kTRUE; }
else {
Error("parseArguments()","unknown option = %s detected! fix your macro!",argument.Data());
exit(1);
}
}
delete myiter;
myarguments->Delete();
delete myarguments;
}