using namespace std;
#include "hrpctaskset.h"
#include "hdebug.h"
#include "haddef.h"
#include "hades.h"
#include "hrpcdigitizer.h"
#include "hrpccalibrater.h"
#include "hrpchitf.h"
#include "hrpcclusterf.h"
#include <iostream> 
#include <iomanip>
#include "TObjString.h"
HRpcTaskSet::HRpcTaskSet(const Text_t name[],const Text_t title[]) : HTaskSet(name,title) {
    
}
HRpcTaskSet::HRpcTaskSet(void) : HTaskSet() {
    
}
HRpcTaskSet::~HRpcTaskSet(void) {
    
}
void HRpcTaskSet::parseArguments(TString s, Int_t &doCluster) {
    
    
    
    
    doCluster = 1;  
    s.ToLower();
    s.ReplaceAll(" ","");
    Ssiz_t len=s.Length();
    if(len!=0) {
	TObjArray* myarguments = s.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("noclust")   == 0)  doCluster = kFALSE;
	    else
	    {
		Error("parseArguments()","Unknown option = %s",argument.Data());
	    }
	}
	delete myiter;
	myarguments->Delete();
	delete myarguments ;
    }
}
HTask* HRpcTaskSet::make(const Char_t *select,const Option_t *option) {
    
    
    HTaskSet *tasks = new HTaskSet("Rpc","List of Rpc tasks");
    TString simulation="simulation";
    TString real ="real";
    TString sel = select;
    TString opt = option;
    sel.ToLower();
    opt.ToLower();
    Int_t doCluster = 1;
    parseArguments(opt,doCluster);
    if(sel.CompareTo(simulation)==0 || gHades->getEmbeddingMode()>0)
    {
	tasks->add( new HRpcDigitizer("rpc.digi","rpc.digi") );
    }
    if(sel.CompareTo(real)==0 || gHades->getEmbeddingMode()>0)
    {
	tasks->add( new HRpcCalibrater("rpc.cal","rpc.cal") );
    }
    
    
    tasks->add( new HRpcHitF("rpc.hitf","rpc.hitf") );
    HRpcClusterF* clusterf = new HRpcClusterF("rpc.clusterf","rpc.clusterf") ;
    if(doCluster == 0) {
        clusterf ->setDoSingleClusters(kTRUE);
    }
    tasks->add( clusterf );
    return tasks;
}
ClassImp(HRpcTaskSet)