ROOT logo
//_HADES_CLASS_DESCRIPTION
///////////////////////////////////////////////////////////////////////////////
//  HPionTrackerTaskSet
//
//  This HTaskSet contains the tasks for the PionTracker detector
//
//  Options:
//  - nopiontrackerhit: runs the task list only up to cal level (default: kTRUE)
//  - skipevents:       options for HPionTrackerHitF task (default: kFALSE)
//                      controls skipping of all events without successful
//                      time reconstruction.
//
///////////////////////////////////////////////////////////////////////////////

#include "hpiontrackertaskset.h"
#include "hpiontrackercalibrater.h"
#include "hpiontrackerhitf.h"
#include "hpiontrackertrackf.h"
#include "TObjString.h"
#include "TObjArray.h"

using namespace std;

ClassImp(HPionTrackerTaskSet)

HPionTrackerTaskSet::HPionTrackerTaskSet(void) : HTaskSet() {
  // default constructor sets the default options
  fSkipEvent = kFALSE;
  fUsePionTrackerHit = kTRUE;
  fUsePionTrackerTrack = kTRUE;
}

HPionTrackerTaskSet::HPionTrackerTaskSet(const Text_t name[], const Text_t title[])
                    : HTaskSet(name, title) {
  // constructor sets the default options
  fSkipEvent = kFALSE;
  fUsePionTrackerHit = kTRUE;
  fUsePionTrackerTrack = kTRUE;
}

HTask* HPionTrackerTaskSet::make(const Char_t *select, const Option_t *option) {
  // creates the task list
  // the parameter "select" accepts NULL or "real"
  // possible options: nopiontrackerhit, skipevents (see class docu)
  // Returns a pointer to the PionTracker task or taskset specified by 'select'
  HTaskSet *tasks = new HTaskSet("PionTracker", "List of PionTracker tasks");
  TString sel = select;
  TString opt = option;
  sel.ToLower();
  opt.ToLower();
  parseArguments(opt);

  if (sel.IsNull() || sel.CompareTo("real")==0) {
    tasks->add(new HPionTrackerCalibrater("piontracker.cal", "PionTracker cal"));
    if (kTRUE == fUsePionTrackerHit) {
      tasks->add(new HPionTrackerHitF("piontracker.hitF", "PionTracker hit finder", fSkipEvent));
    }
    if (kTRUE == fUsePionTrackerTrack) {
      tasks->add(new HPionTrackerTrackF("piontracker.trackF", "PionTracker track finder", fSkipEvent));
    }
  }
  return tasks;
}

void HPionTrackerTaskSet::parseArguments(TString s1) {
  // parses the list of options
  s1.ToLower();
  s1.ReplaceAll(" ", "");

  if (0 != s1.Length()) {
    TIterator*  myiter      = NULL;
    TObjString* stemp       = NULL;
    TString     argument;
    TObjArray*  myarguments = s1 .Tokenize(",");

    // iterate over the list of arguments and compare it
    // to the known key words.
    myiter = myarguments->MakeIterator();
    myiter->Reset();
    while (0 != (stemp = static_cast<TObjString*>(myiter->Next()))) {
      argument = stemp->GetString();
      if (0 == argument.CompareTo("skipevents")) {
        fSkipEvent = kTRUE;
      }
      if (0 == argument.CompareTo("nopiontrackerhit")) {
        fUsePionTrackerHit = kFALSE;
      }
      if (0 == argument.CompareTo("nopiontrackertrack")) {
        fUsePionTrackerTrack = kFALSE;
      }
    }

    delete myiter;
    myiter = NULL;
    myarguments->Delete();
    delete myarguments;
  }
}
 hpiontrackertaskset.cc:1
 hpiontrackertaskset.cc:2
 hpiontrackertaskset.cc:3
 hpiontrackertaskset.cc:4
 hpiontrackertaskset.cc:5
 hpiontrackertaskset.cc:6
 hpiontrackertaskset.cc:7
 hpiontrackertaskset.cc:8
 hpiontrackertaskset.cc:9
 hpiontrackertaskset.cc:10
 hpiontrackertaskset.cc:11
 hpiontrackertaskset.cc:12
 hpiontrackertaskset.cc:13
 hpiontrackertaskset.cc:14
 hpiontrackertaskset.cc:15
 hpiontrackertaskset.cc:16
 hpiontrackertaskset.cc:17
 hpiontrackertaskset.cc:18
 hpiontrackertaskset.cc:19
 hpiontrackertaskset.cc:20
 hpiontrackertaskset.cc:21
 hpiontrackertaskset.cc:22
 hpiontrackertaskset.cc:23
 hpiontrackertaskset.cc:24
 hpiontrackertaskset.cc:25
 hpiontrackertaskset.cc:26
 hpiontrackertaskset.cc:27
 hpiontrackertaskset.cc:28
 hpiontrackertaskset.cc:29
 hpiontrackertaskset.cc:30
 hpiontrackertaskset.cc:31
 hpiontrackertaskset.cc:32
 hpiontrackertaskset.cc:33
 hpiontrackertaskset.cc:34
 hpiontrackertaskset.cc:35
 hpiontrackertaskset.cc:36
 hpiontrackertaskset.cc:37
 hpiontrackertaskset.cc:38
 hpiontrackertaskset.cc:39
 hpiontrackertaskset.cc:40
 hpiontrackertaskset.cc:41
 hpiontrackertaskset.cc:42
 hpiontrackertaskset.cc:43
 hpiontrackertaskset.cc:44
 hpiontrackertaskset.cc:45
 hpiontrackertaskset.cc:46
 hpiontrackertaskset.cc:47
 hpiontrackertaskset.cc:48
 hpiontrackertaskset.cc:49
 hpiontrackertaskset.cc:50
 hpiontrackertaskset.cc:51
 hpiontrackertaskset.cc:52
 hpiontrackertaskset.cc:53
 hpiontrackertaskset.cc:54
 hpiontrackertaskset.cc:55
 hpiontrackertaskset.cc:56
 hpiontrackertaskset.cc:57
 hpiontrackertaskset.cc:58
 hpiontrackertaskset.cc:59
 hpiontrackertaskset.cc:60
 hpiontrackertaskset.cc:61
 hpiontrackertaskset.cc:62
 hpiontrackertaskset.cc:63
 hpiontrackertaskset.cc:64
 hpiontrackertaskset.cc:65
 hpiontrackertaskset.cc:66
 hpiontrackertaskset.cc:67
 hpiontrackertaskset.cc:68
 hpiontrackertaskset.cc:69
 hpiontrackertaskset.cc:70
 hpiontrackertaskset.cc:71
 hpiontrackertaskset.cc:72
 hpiontrackertaskset.cc:73
 hpiontrackertaskset.cc:74
 hpiontrackertaskset.cc:75
 hpiontrackertaskset.cc:76
 hpiontrackertaskset.cc:77
 hpiontrackertaskset.cc:78
 hpiontrackertaskset.cc:79
 hpiontrackertaskset.cc:80
 hpiontrackertaskset.cc:81
 hpiontrackertaskset.cc:82
 hpiontrackertaskset.cc:83
 hpiontrackertaskset.cc:84
 hpiontrackertaskset.cc:85
 hpiontrackertaskset.cc:86
 hpiontrackertaskset.cc:87
 hpiontrackertaskset.cc:88
 hpiontrackertaskset.cc:89
 hpiontrackertaskset.cc:90
 hpiontrackertaskset.cc:91
 hpiontrackertaskset.cc:92
 hpiontrackertaskset.cc:93
 hpiontrackertaskset.cc:94
 hpiontrackertaskset.cc:95
 hpiontrackertaskset.cc:96
 hpiontrackertaskset.cc:97
 hpiontrackertaskset.cc:98