ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : Dan Magestro
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRich700TaskSet
//
//  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, HRich700TaskSet 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 "hrich700taskset.h"
#include "hrich700digitizer.h"
#include "hrich700calibrater.h"
#include "hrich700ringfinderhough.h"

using namespace std;

ClassImp(HRich700TaskSet)


HRich700TaskSet::HRich700TaskSet(void)
   : HTaskSet()
{
   // Default constructor
    fNoRingFinder = kFALSE;
    fNoCalibrater = kFALSE;

}

HRich700TaskSet::HRich700TaskSet(const Text_t name[], const Text_t title[])
   : HTaskSet(name, title)
{
    // Constructor
    fNoRingFinder = kFALSE;
    fNoCalibrater = kFALSE;
}

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


HTask*
HRich700TaskSet::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 HRich700TaskSet to control the
// behavior of the RICH analysis and simulation:
//  NORINGFINDER   - HRich700RingFinderHough will be disabled
//  NOCALIBRATER   - HRich700calibrater will be disabled
//

   HTaskSet* tasks      = new HTaskSet("Rich", "List of Rich tasks");
   TString   sel        = select;
   TString   opt        = option;

   parseArguments(opt);

   sel.ToLower();
   if (0 == sel.CompareTo("simulation") &&
       0 != gHades->getEmbeddingMode()) {
      Error("make", "embeddingMode > 0 in simulation NOT ALLOWED!");
      return NULL;
   }

   if (0 == sel.CompareTo("real"))    // real + embedding
   {
       if(!fNoCalibrater){
	   tasks->add(new HRich700Calibrater("rich.calibrater",  "Rich Calibrater"));
       }
       if( 0 != gHades->getEmbeddingMode()){ //  embedding
	   tasks->add(new HRich700Digitizer("rich.digi",  "Rich digitizer"));
       }
   }

   if (0 == sel.CompareTo("simulation"))
   {
       tasks->add(new HRich700Digitizer("rich.digi",  "Rich digitizer"));
   }

   if(!fNoRingFinder)// hit finder is the same in all cases
   {
       tasks->add(new HRich700RingFinderHough("rich.ringfinder",  "Rich ring finder"));
   }

   return tasks;
}

void HRich700TaskSet::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("noringfinder")) {
	       fNoRingFinder = kTRUE;
	   }
	   else if (0 == argument.CompareTo("nocalibrater")) {
	       fNoCalibrater = kTRUE;
	   } else {
	       Error("parseArguments","Unknown Option %s found!",argument.Data());
	   }
       }
       delete myiter;
       myiter = NULL;

       myarguments->Delete();
       delete myarguments;

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