- if(sopt.Contains("!cw")){
- fSteerParam &= ~kWriteClusters;
- continue;
- } else if(sopt.Contains("!sa")){
- fSteerParam &= ~kSeeding;
- continue;
- } else if(sopt.Contains("!nn")){
- fSteerParam &= ~kSteerPID;
- continue;
- } else if(sopt.Contains("tw")){
- if(!sopt.Contains("!")) fSteerParam |= kWriteTracklets;
- continue;
- } else if(sopt.Contains("ar")){
- if(!sopt.Contains("!")) fSteerParam |= kDriftGas;
- continue;
- } else if(sopt.Contains("sl")){
- TObjArray *stl = sopt.Tokenize("_");
- if(stl->GetEntriesFast() < 3) continue;
- TString taskstr(((TObjString*)(*stl)[1])->String());
- TString levelstring(((TObjString*)(*stl)[2])->String());
- // Set the stream Level
- Int_t level = levelstring.Atoi();
- AliTRDReconstructorTask task = kTracker;
- if(taskstr.CompareTo("cl") == 0) task = kClusterizer;
- else if(taskstr.CompareTo("tr") == 0) task = kTracker;
- else if(taskstr.CompareTo("pi") == 0) task = kPID;
- SetStreamLevel(level, task);
- continue;
- }
+ for(Int_t iopt=0; iopt<kNsteer; iopt++){
+ if(!sopt.Contains(fgSteerFlags[iopt])) continue;
+ SETFLG(fSteerParam, BIT(iopt));
+ if(sopt.Contains("!")) CLRFLG(fSteerParam, BIT(iopt));
+ PROCESSED = kTRUE;
+ break;
+ }
+ // extra rules
+ if(sopt.Contains("gs") && !sopt.Contains("!")){
+ CLRFLG(fSteerParam, kLUT); PROCESSED = kTRUE;
+ }
+
+ if(PROCESSED) continue;
+
+ if(sopt.Contains("sl")){
+ TObjArray *stl = sopt.Tokenize("_");
+ if(stl->GetEntriesFast() < 3) continue;
+ TString taskstr(((TObjString*)(*stl)[1])->String());
+ TString levelstring(((TObjString*)(*stl)[2])->String());
+ Int_t level = levelstring.Atoi();
+
+ // Set the stream Level
+ PROCESSED = kFALSE;
+ for(Int_t it=0; it<kNtasks; it++){
+ if(taskstr.CompareTo(fgTaskFlags[it]) != 0) continue;
+ SetStreamLevel(level, ETRDReconstructorTask(it));
+ PROCESSED = kTRUE;
+ }
+ }
+ if(PROCESSED) continue;
+
+ AliWarning(Form("Unknown option flag %s.", sopt.Data()));
+ }
+}
+
+//_____________________________________________________________________________
+void AliTRDReconstructor::SetStreamLevel(Int_t level, ETRDReconstructorTask task){
+ //
+ // Set the Stream Level for one of the tasks Clusterizer, Tracker or PID
+ //
+ const Int_t minLevel[4] = {1, 1, 2, 1}; // the minimum debug level upon which a debug stream is created for different tasks
+ //AliInfo(Form("Setting Stream Level for Task %s to %d", taskname.Data(),level));
+ fStreamLevel[(Int_t)task] = level;
+ // Initialize DebugStreamer if not yet done
+ if(level >= minLevel[task] && !fDebugStream[task]){
+ TDirectory *savedir = gDirectory;
+ fDebugStream[task] = new TTreeSRedirector(Form("TRD.Debug%s.root", fgTaskNames[task]));
+ savedir->cd();
+ SETFLG(fSteerParam, kOwner);