X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDReconstructor.cxx;h=6b1e018467bb25f738b8a01e57bf294ca9bd5316;hb=9a838fb778f46ceb900c62c1c1c9480dcdfcae5a;hp=d34bbf90dbecf7404e31bf668ccb33e812667b45;hpb=a0446ff1c2f4584cea4c9824fa316eac9d3475c0;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDReconstructor.cxx b/TRD/AliTRDReconstructor.cxx index d34bbf90dbe..6b1e018467b 100644 --- a/TRD/AliTRDReconstructor.cxx +++ b/TRD/AliTRDReconstructor.cxx @@ -18,6 +18,9 @@ /////////////////////////////////////////////////////////////////////////////// // // // Class for TRD reconstruction // +// // +// For the special options which can be used during reconstruction and their // +// default values pls. see function SetOption(). // // // /////////////////////////////////////////////////////////////////////////////// @@ -47,9 +50,10 @@ Char_t const * AliTRDReconstructor::fgSteerNames[kNsteer] = { ,"Write Clusters " ,"Write Online Tracklets " ,"Stand Alone Tracking " - ,"HLT Mode " - ,"Process Online Tracklets" - ,"Debug Streaming " + ,"HLT Mode " + ,"Process Online Trklts " + ,"Debug Streaming " + ,"Cl. Radial Correction " }; Char_t const * AliTRDReconstructor::fgSteerFlags[kNsteer] = { "dc"// digits conversion [false] @@ -59,6 +63,7 @@ Char_t const * AliTRDReconstructor::fgSteerFlags[kNsteer] = { ,"hlt"// HLT reconstruction [false] ,"tp"// also use online tracklets for reconstruction [false] ,"deb"// Write debug stream [false] + ,"cc" // Cluster radial correction during reconstruction [false] }; Char_t const * AliTRDReconstructor::fgTaskNames[AliTRDrecoParam::kTRDreconstructionTasks] = { "Clusterizer" @@ -71,11 +76,18 @@ Char_t const * AliTRDReconstructor::fgTaskFlags[AliTRDrecoParam::kTRDreconstruct ,"pd" }; Int_t AliTRDReconstructor::fgNTimeBins = -1; +const Float_t AliTRDReconstructor::fgkMinClustersInTrack = 0.5; // +const Float_t AliTRDReconstructor::fgkLabelFraction = 0.8; // +const Double_t AliTRDReconstructor::fgkMaxChi2 = 12.0; // +const Double_t AliTRDReconstructor::fgkMaxSnp = 0.95; // Maximum local sine of the azimuthal angle +const Double_t AliTRDReconstructor::fgkMaxStep = 2.0; // Maximal step size in propagation +const Double_t AliTRDReconstructor::fgkEpsilon = 1.e-5; // Precision of radial coordinate //_____________________________________________________________________________ AliTRDReconstructor::AliTRDReconstructor() :AliReconstructor() ,fSteerParam(0) + ,fClusterizer(NULL) { // setting default "ON" steering parameters // owner of debug streamers @@ -84,7 +96,8 @@ AliTRDReconstructor::AliTRDReconstructor() SETFLG(fSteerParam, kWriteClusters); // track seeding (stand alone tracking) [sa] SETFLG(fSteerParam, kSeeding); - + // Cluster radial correction during reconstruction [cc] + //SETFLG(fSteerParam, kClRadialCorr); memset(fDebugStream, 0, sizeof(TTreeSRedirector *) * AliTRDrecoParam::kTRDreconstructionTasks); } @@ -109,6 +122,10 @@ AliTRDReconstructor::~AliTRDReconstructor() for(Int_t itask = 0; itask < AliTRDrecoParam::kTRDreconstructionTasks; itask++) if(fDebugStream[itask]) delete fDebugStream[itask]; } + if(fClusterizer){ + delete fClusterizer; + fClusterizer = NULL; + } } @@ -120,6 +137,11 @@ void AliTRDReconstructor::Init(){ SetOption(GetOption()); Options(fSteerParam); + if(!fClusterizer){ + fClusterizer = new AliTRDclusterizer(fgTaskNames[AliTRDrecoParam::kClusterizer], fgTaskNames[AliTRDrecoParam::kClusterizer]); + fClusterizer->SetReconstructor(this); + } + // Make Debug Streams when Debug Streaming if(IsDebugStreaming()){ for(Int_t task = 0; task < AliTRDrecoParam::kTRDreconstructionTasks; task++){ @@ -144,7 +166,6 @@ void AliTRDReconstructor::ConvertDigits(AliRawReader *rawReader AliTRDrawData rawData; rawReader->Reset(); rawReader->Select("TRD"); - rawData.OpenOutput(); AliTRDrawStreamBase::SetRawStreamVersion(GetRecoParam()->GetRawStreamVersion()->Data()); AliTRDdigitsManager *manager = rawData.Raw2Digits(rawReader); manager->MakeBranch(digitsTree); @@ -168,25 +189,28 @@ void AliTRDReconstructor::Reconstruct(AliRawReader *rawReader rawReader->Select("TRD"); AliTRDrawStreamBase::SetRawStreamVersion(GetRecoParam()->GetRawStreamVersion()->Data()); - // New (fast) cluster finder - AliTRDclusterizer clusterer(fgTaskNames[AliTRDrecoParam::kClusterizer], fgTaskNames[AliTRDrecoParam::kClusterizer]); - clusterer.SetReconstructor(this); - clusterer.OpenOutput(clusterTree); - clusterer.OpenTrackletOutput(); - clusterer.SetUseLabels(kFALSE); - clusterer.Raw2ClustersChamber(rawReader); + if(!fClusterizer){ + AliFatal("Clusterizer not available!"); + return; + } + + fClusterizer->ResetRecPoints(); + + fClusterizer->OpenOutput(clusterTree); + fClusterizer->SetUseLabels(kFALSE); + fClusterizer->Raw2ClustersChamber(rawReader); + + fgNTimeBins = fClusterizer->GetNTimeBins(); if(IsWritingClusters()) return; // take over ownership of clusters - fgClusters = clusterer.RecPoints(); - clusterer.SetClustersOwner(kFALSE); + fgClusters = fClusterizer->RecPoints(); + fClusterizer->SetClustersOwner(kFALSE); // take over ownership of online tracklets - fgTracklets = clusterer.TrackletsArray(); - clusterer.SetTrackletsOwner(kFALSE); - - fgNTimeBins = clusterer.GetNTimeBins(); + fgTracklets = fClusterizer->TrackletsArray(); + fClusterizer->SetTrackletsOwner(kFALSE); } //_____________________________________________________________________________ @@ -205,6 +229,8 @@ void AliTRDReconstructor::Reconstruct(TTree *digitsTree clusterer.ReadDigits(digitsTree); clusterer.MakeClusters(); + fgNTimeBins = clusterer.GetNTimeBins(); + if(IsWritingClusters()) return; // take over ownership of clusters @@ -215,7 +241,6 @@ void AliTRDReconstructor::Reconstruct(TTree *digitsTree fgTracklets = clusterer.TrackletsArray(); clusterer.SetTrackletsOwner(kFALSE); - fgNTimeBins = clusterer.GetNTimeBins(); } //_____________________________________________________________________________ @@ -249,6 +274,19 @@ void AliTRDReconstructor::SetOption(Option_t *opt) // // Read option string into the steer param. // + // The following string options are available during reconstruction. + // In square brackets the default values are given. + // "dc" : digits conversion [false] + // "cw" : write clusters [true] + // "tw" : write online tracklets [false] + // "sa" : track seeding (stand alone tracking) [true] + // "hlt" : HLT reconstruction [false] + // "tp" : also use online tracklets for reconstruction [false] + // "deb" : Write debug stream [false] + // "cc" : Cluster radial correction during reconstruction [false] + // + // To check the actual options used during reconstruction include the following line in your rec.C script + // AliLog::SetClassDebugLevel("AliTRDReconstructor", 1); AliReconstructor::SetOption(opt);