ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : Dan Magestro
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichTaskSet
//
//  This HTaskSet contains the task sets for the Rich detector.
//  It can be distinguished between "real" and "simulation" task set by
//  passing the corresponding string to the first argument of the make()
//  function. Embedding is automatically recognized by return value of
//  gHades->getEmbeddingMode(). For embedding ONLY the "real" task set
//  has to be selected, otherwise the program will finish with an error.
//
//  To control the operation of the RICH tasks, HRichTaskSet has following
//  switches with preset default values:
//    - inoiseOn   = kTRUE;
//    - iSkipEvent = kFALSE;
//
//  The simulation of noise in HRichDigitizer behaves in pure
//  simulation differently as compared to the embedding modus.
//     * pure simulation: simulation of both correlated and random noise is ON
//     * embedding:       only simulation of correlated noise is ON
//
//  Default values can be changed by passing corresponding strings
//  to the second argument of make() function. For more details,
//  please read the documentation for this function below.
//
//  BEGIN_HTML For more information, see
//  <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()
{
   // Default constructor
   fNoiseOn   = kTRUE;
   fSkipEvent = kFALSE;

}

HRichTaskSet::HRichTaskSet(const Text_t name[], const Text_t title[])
   : HTaskSet(name, title)
{
   // Constructor
   fNoiseOn   = kTRUE;
   fSkipEvent = kFALSE;
}

HRichTaskSet::~HRichTaskSet(void)
{
   // Destructor.
}


HTask*
HRichTaskSet::make(const Char_t *select, const Option_t *option)
{
// Returns a pointer to the Rich task or taskset specified by 'select'.
// There are two possibilities to be passed:
//   - "real" for real data analysis and embedding
//   - "simulation" for simulation only
//
// Following options can be passed to the HRichTaskSet to control the
// behavior of the RICH analysis and simulation:
//   - "skipevent" HRichAnalysis task will return kSkipEvent for each
//                 event w/o found ring
//   - "noiseoff"  Turns OFF noise simulation in HRichDigitizer.
// For more information see BEGIN_HTML
// <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()) {

      // iterate over the list of arguments and compare it
       // to the known key words.

       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;

   }
}
 hrichtaskset.cc:1
 hrichtaskset.cc:2
 hrichtaskset.cc:3
 hrichtaskset.cc:4
 hrichtaskset.cc:5
 hrichtaskset.cc:6
 hrichtaskset.cc:7
 hrichtaskset.cc:8
 hrichtaskset.cc:9
 hrichtaskset.cc:10
 hrichtaskset.cc:11
 hrichtaskset.cc:12
 hrichtaskset.cc:13
 hrichtaskset.cc:14
 hrichtaskset.cc:15
 hrichtaskset.cc:16
 hrichtaskset.cc:17
 hrichtaskset.cc:18
 hrichtaskset.cc:19
 hrichtaskset.cc:20
 hrichtaskset.cc:21
 hrichtaskset.cc:22
 hrichtaskset.cc:23
 hrichtaskset.cc:24
 hrichtaskset.cc:25
 hrichtaskset.cc:26
 hrichtaskset.cc:27
 hrichtaskset.cc:28
 hrichtaskset.cc:29
 hrichtaskset.cc:30
 hrichtaskset.cc:31
 hrichtaskset.cc:32
 hrichtaskset.cc:33
 hrichtaskset.cc:34
 hrichtaskset.cc:35
 hrichtaskset.cc:36
 hrichtaskset.cc:37
 hrichtaskset.cc:38
 hrichtaskset.cc:39
 hrichtaskset.cc:40
 hrichtaskset.cc:41
 hrichtaskset.cc:42
 hrichtaskset.cc:43
 hrichtaskset.cc:44
 hrichtaskset.cc:45
 hrichtaskset.cc:46
 hrichtaskset.cc:47
 hrichtaskset.cc:48
 hrichtaskset.cc:49
 hrichtaskset.cc:50
 hrichtaskset.cc:51
 hrichtaskset.cc:52
 hrichtaskset.cc:53
 hrichtaskset.cc:54
 hrichtaskset.cc:55
 hrichtaskset.cc:56
 hrichtaskset.cc:57
 hrichtaskset.cc:58
 hrichtaskset.cc:59
 hrichtaskset.cc:60
 hrichtaskset.cc:61
 hrichtaskset.cc:62
 hrichtaskset.cc:63
 hrichtaskset.cc:64
 hrichtaskset.cc:65
 hrichtaskset.cc:66
 hrichtaskset.cc:67
 hrichtaskset.cc:68
 hrichtaskset.cc:69
 hrichtaskset.cc:70
 hrichtaskset.cc:71
 hrichtaskset.cc:72
 hrichtaskset.cc:73
 hrichtaskset.cc:74
 hrichtaskset.cc:75
 hrichtaskset.cc:76
 hrichtaskset.cc:77
 hrichtaskset.cc:78
 hrichtaskset.cc:79
 hrichtaskset.cc:80
 hrichtaskset.cc:81
 hrichtaskset.cc:82
 hrichtaskset.cc:83
 hrichtaskset.cc:84
 hrichtaskset.cc:85
 hrichtaskset.cc:86
 hrichtaskset.cc:87
 hrichtaskset.cc:88
 hrichtaskset.cc:89
 hrichtaskset.cc:90
 hrichtaskset.cc:91
 hrichtaskset.cc:92
 hrichtaskset.cc:93
 hrichtaskset.cc:94
 hrichtaskset.cc:95
 hrichtaskset.cc:96
 hrichtaskset.cc:97
 hrichtaskset.cc:98
 hrichtaskset.cc:99
 hrichtaskset.cc:100
 hrichtaskset.cc:101
 hrichtaskset.cc:102
 hrichtaskset.cc:103
 hrichtaskset.cc:104
 hrichtaskset.cc:105
 hrichtaskset.cc:106
 hrichtaskset.cc:107
 hrichtaskset.cc:108
 hrichtaskset.cc:109
 hrichtaskset.cc:110
 hrichtaskset.cc:111
 hrichtaskset.cc:112
 hrichtaskset.cc:113
 hrichtaskset.cc:114
 hrichtaskset.cc:115
 hrichtaskset.cc:116
 hrichtaskset.cc:117
 hrichtaskset.cc:118
 hrichtaskset.cc:119
 hrichtaskset.cc:120
 hrichtaskset.cc:121
 hrichtaskset.cc:122
 hrichtaskset.cc:123
 hrichtaskset.cc:124
 hrichtaskset.cc:125
 hrichtaskset.cc:126
 hrichtaskset.cc:127
 hrichtaskset.cc:128
 hrichtaskset.cc:129
 hrichtaskset.cc:130
 hrichtaskset.cc:131
 hrichtaskset.cc:132
 hrichtaskset.cc:133
 hrichtaskset.cc:134
 hrichtaskset.cc:135
 hrichtaskset.cc:136
 hrichtaskset.cc:137
 hrichtaskset.cc:138
 hrichtaskset.cc:139
 hrichtaskset.cc:140
 hrichtaskset.cc:141
 hrichtaskset.cc:142
 hrichtaskset.cc:143
 hrichtaskset.cc:144
 hrichtaskset.cc:145
 hrichtaskset.cc:146
 hrichtaskset.cc:147
 hrichtaskset.cc:148
 hrichtaskset.cc:149
 hrichtaskset.cc:150
 hrichtaskset.cc:151
 hrichtaskset.cc:152
 hrichtaskset.cc:153
 hrichtaskset.cc:154
 hrichtaskset.cc:155
 hrichtaskset.cc:156
 hrichtaskset.cc:157
 hrichtaskset.cc:158
 hrichtaskset.cc:159
 hrichtaskset.cc:160
 hrichtaskset.cc:161
 hrichtaskset.cc:162