X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.cxx;h=a17fb688c685e30114ed4a27f78e1e0a384e760f;hb=2b6cdc430927d98a84bf44e40b34b5b10e974706;hp=4076b24e28c6ec81f5836dbffc08e371fbcd8851;hpb=4302c900b30932b679c3e3be40d017d1da149fa1;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.cxx b/TRD/AliTRDReconstructor.cxx index 4076b24e28c..a17fb688c68 100644 --- a/TRD/AliTRDReconstructor.cxx +++ b/TRD/AliTRDReconstructor.cxx @@ -1,17 +1,17 @@ /************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ +* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * +* * +* Author: The ALICE Off-line Project. * +* Contributors are mentioned in the code where appropriate. * +* * +* Permission to use, copy, modify and distribute this software and its * +* documentation strictly for non-commercial purposes is hereby granted * +* without fee, provided that the above copyright notice appears in all * +* copies and that both the copyright notice and this permission notice * +* appear in the supporting documentation. The authors make no claims * +* about the suitability of this software for any purpose. It is * +* provided "as is" without express or implied warranty. * +**************************************************************************/ /* $Id$ */ @@ -42,14 +42,25 @@ #include "AliTRDtrackerV1.h" #include "AliTRDrecoParam.h" +#define SETFLG(n,f) ((n) |= f) +#define CLRFLG(n,f) ((n) &= ~f) + ClassImp(AliTRDReconstructor) TClonesArray *AliTRDReconstructor::fgClusters = 0x0; //_____________________________________________________________________________ AliTRDReconstructor::AliTRDReconstructor() :AliReconstructor() - ,fSteerParam(0x00000007) + ,fSteerParam(0) { + // setting default "ON" steering parameters + // write clusters [cw] + SETFLG(fSteerParam, kWriteClusters); + // track seeding (stand alone tracking) [sa] + SETFLG(fSteerParam, kSeeding); + // PID method in reconstruction (NN) [nn] + SETFLG(fSteerParam, kSteerPID); + memset(fStreamLevel, 0, 5*sizeof(UChar_t)); // Xe tail cancellation parameters fTCParams[0] = 1.156; // r1 @@ -72,26 +83,37 @@ AliTRDReconstructor::AliTRDReconstructor(const AliTRDReconstructor &r) memcpy(fTCParams, r.fTCParams, 8*sizeof(Double_t)); } +//_____________________________________________________________________________ +AliTRDReconstructor::~AliTRDReconstructor() +{ + if(fgClusters) { + fgClusters->Delete(); delete fgClusters; + } +} + + //_____________________________________________________________________________ void AliTRDReconstructor::Init(){ - // - // Init Options - // - SetOption(GetOption()); - - AliInfo("TRD reconstruction will use the following settings:"); - printf("\tWrite Clusters [cw] : %s\n", fSteerParam&kWriteClusters?"yes":"no"); - printf("\tWrite Online Tracklets [tw] : %s\n", fSteerParam&kWriteTracklets?"yes":"no"); - printf("\tDrift Gas Argon [ar] : %s\n", fSteerParam&kDriftGas?"yes":"no"); - printf("\tStand Alone Tracking [sa] : %s\n", fSteerParam&kSeeding?"yes":"no"); - printf("\tHLT Tracking [hlt] : %s\n", fSteerParam&kHLT?"yes":"no"); - printf("\tNN PID [nn] : %s\n", fSteerParam&kSteerPID?"yes":"no"); - printf("\tStreaming Levels : Clusterizer[%d] Tracker[%d] PID[%d]\n", fStreamLevel[kClusterizer], fStreamLevel[kTracker], fStreamLevel[kPID]); + // + // Init Options + // + SetOption(GetOption()); + + AliInfo(Form("\tDigitsConversion [dc] : %s", fSteerParam&kDigitsConversion?"yes":"no")); + AliInfo(Form("\tWrite Clusters [cw] : %s", fSteerParam&kWriteClusters?"yes":"no")); + AliInfo(Form("\tWrite Online Tracklets [tw] : %s", fSteerParam&kWriteTracklets?"yes":"no")); + AliInfo(Form("\tDrift Gas Argon [ar] : %s", fSteerParam&kDriftGas?"yes":"no")); + AliInfo(Form("\tStand Alone Tracking [sa] : %s", fSteerParam&kSeeding?"yes":"no")); + AliInfo(Form("\tHLT Tracking [hlt] : %s", fSteerParam&kHLT?"yes":"no")); + AliInfo(Form("\tCosmic Reconstruction [cos] : %s", fSteerParam&kCosmic?"yes":"no")); + AliInfo(Form("\tNN PID [nn] : %s", fSteerParam&kSteerPID?"yes":"no")); + AliInfo(Form("\t8 dEdx slices in ESD [8s] : %s", fSteerParam&kEightSlices?"yes":"no")); + AliInfo(Form("\tStreaming Levels : Clusterizer[%d] Tracker[%d] PID[%d]", fStreamLevel[kClusterizer], fStreamLevel[kTracker], fStreamLevel[kPID])); } //_____________________________________________________________________________ void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader - , TTree *digitsTree) const + , TTree *digitsTree) const { // // Convert raw data digits into digit objects in a root tree @@ -176,8 +198,8 @@ AliTracker *AliTRDReconstructor::CreateTracker() const //_____________________________________________________________________________ void AliTRDReconstructor::FillESD(TTree* /*digitsTree*/ - , TTree* /*clusterTree*/ - , AliESDEvent* /*esd*/) const + , TTree* /*clusterTree*/ + , AliESDEvent* /*esd*/) const { // // Fill ESD @@ -193,68 +215,92 @@ void AliTRDReconstructor::SetOption(Option_t *opt) // // Default steer param values // +// digits conversion [dc] = false +// drift gas [ar] = false - do not update the number of exponentials in the TC ! // write clusters [cw] = true +// write online tracklets [tw] = false // track seeding (stand alone tracking) [sa] = true // PID method in reconstruction (NN) [nn] = true -// write online tracklets [tw] = false -// drift gas [ar] = false +// 8 dEdx slices in ESD [8s] = false // HLT tracking [hlt] = false +// Cosmic Reconstruction [cos] = false // - fSteerParam = 0x00000007; + + AliReconstructor::SetOption(opt); TString s(opt); TObjArray *opar = s.Tokenize(","); for(Int_t ipar=0; iparGetEntriesFast(); ipar++){ TString sopt(((TObjString*)(*opar)[ipar])->String()); - if(sopt.Contains("!cw")){ - fSteerParam &= ~kWriteClusters; + if(sopt.Contains("dc")){ + SETFLG(fSteerParam, kDigitsConversion); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kDigitsConversion); + continue; + } else if(sopt.Contains("cw")){ + SETFLG(fSteerParam, kWriteClusters); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kWriteClusters); + continue; + } else if(sopt.Contains("sa")){ + SETFLG(fSteerParam, kSeeding); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kSeeding); continue; - } else if(sopt.Contains("!sa")){ - fSteerParam &= ~kSeeding; + } else if(sopt.Contains("nn")){ + SETFLG(fSteerParam, kSteerPID); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kSteerPID); continue; - } else if(sopt.Contains("!nn")){ - fSteerParam &= ~kSteerPID; + } else if(sopt.Contains("8s")){ + SETFLG(fSteerParam, kEightSlices); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kEightSlices); continue; } else if(sopt.Contains("tw")){ - if(!sopt.Contains("!")) fSteerParam |= kWriteTracklets; + SETFLG(fSteerParam, kWriteTracklets); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kWriteTracklets); continue; } else if(sopt.Contains("ar")){ - if(!sopt.Contains("!")) fSteerParam |= kDriftGas; + SETFLG(fSteerParam, kDriftGas); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kDriftGas); continue; } else if(sopt.Contains("hlt")){ - if(!sopt.Contains("!")) fSteerParam |= kHLT; + SETFLG(fSteerParam, kHLT); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kHLT); continue; + } else if(sopt.Contains("cos")){ + SETFLG(fSteerParam, kCosmic); + if(sopt.Contains("!")) CLRFLG(fSteerParam, kCosmic); } 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; - } + 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; + } } } //_____________________________________________________________________________ void AliTRDReconstructor::SetStreamLevel(Int_t level, AliTRDReconstructorTask task){ - // - // Set the Stream Level for one of the tasks Clusterizer, Tracker or PID - // - TString taskname; - switch(task){ - case kClusterizer: taskname = "Clusterizer"; - break; - case kTracker: taskname = "Tracker"; - break; - case kPID: taskname = "PID"; - break; - } - //AliInfo(Form("Setting Stream Level for Task %s to %d", taskname.Data(),level)); - fStreamLevel[(Int_t)task] = level; + // + // Set the Stream Level for one of the tasks Clusterizer, Tracker or PID + // + TString taskname; + switch(task){ + case kClusterizer: + taskname = "Clusterizer"; + break; + case kTracker: + taskname = "Tracker"; + break; + case kPID: + taskname = "PID"; + break; + } + //AliInfo(Form("Setting Stream Level for Task %s to %d", taskname.Data(),level)); + fStreamLevel[(Int_t)task] = level; }