//*-- Author : Dan Magestro //*-- Modified: 19/11/2001 by D. Magestro //_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////////////////////// // HStartTaskSet // // This HTaskSet contains the tasks for the Start detector // // Active options for HStart2HitF task: // - skipevents: controls skipping of all events without successful // start time reconstruction. // // BEGIN_HTMLFor more information, see this analysis logbook entry. END_HTML // /////////////////////////////////////////////////////////////////////////////// #include "TObjString.h" #include "hstart2calibrater.h" #include "hstart2hitf.h" #include "hstarttaskset.h" #include "htaskset.h" using namespace std; ClassImp(HStartTaskSet) HTask* HStartTaskSet::make(const Char_t *select, const Option_t *option) { // Returns a pointer to the Start task or taskset specified by 'select' // // Active options for HStart2HitF task: // - skipevents: controls skipping of all events without successful // start time reconstruction. HTaskSet *tasks = new HTaskSet("Start", "List of Start tasks"); TString sel = select; TString opt = option; opt.ToLower(); parseArguments(opt); if (sel.IsNull()) { tasks->add(new HStart2Calibrater("start.cal", "Start cal")); if (kTRUE == fUseStartHit) { tasks->add(new HStart2HitF("start.hitF", "Start hit finder", fSkipEvent)); } } return tasks; } void HStartTaskSet::parseArguments(TString s1) { TIterator* myiter = NULL; TObjString* stemp = NULL; Char_t* mystring = NULL; Char_t* buffer = NULL; Int_t count = 0; TString argument; TList myarguments; s1.ToLower(); s1.ReplaceAll(" ", ""); if (0 != s1.Length()) { mystring = const_cast(s1.Data()); while (1) { // find all token in option string and put them to a list if (0 == count) { buffer = strtok(mystring, ","); stemp = new TObjString(buffer); myarguments.Add(stemp); } if (!(buffer = strtok(NULL, ","))) break; stemp = new TObjString(buffer); myarguments.Add(stemp); count++; } // iterate over the list of arguments and compare it // to the known key words. myiter = myarguments.MakeIterator(); myiter->Reset(); while (0 != (stemp = static_cast(myiter->Next()))) { argument = stemp->GetString(); if (0 == argument.CompareTo("skipevents")) { fSkipEvent = kTRUE; } if (0 == argument.CompareTo("nostarthit")) { fUseStartHit = kFALSE; } } delete myiter; myiter = NULL; } }