///////////////////////////////////////////////////////////////////////////////
// //
// Class for TRD reconstruction //
+// //
+// For the special options which can be used during reconstruction and their //
+// default values pls. see function SetOption(). //
// //
///////////////////////////////////////////////////////////////////////////////
,"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]
,"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"
,"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
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);
}
for(Int_t itask = 0; itask < AliTRDrecoParam::kTRDreconstructionTasks; itask++)
if(fDebugStream[itask]) delete fDebugStream[itask];
}
+ if(fClusterizer){
+ delete fClusterizer;
+ fClusterizer = NULL;
+ }
}
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++){
AliTRDrawData rawData;
rawReader->Reset();
rawReader->Select("TRD");
- rawData.OpenOutput();
AliTRDrawStreamBase::SetRawStreamVersion(GetRecoParam()->GetRawStreamVersion()->Data());
AliTRDdigitsManager *manager = rawData.Raw2Digits(rawReader);
manager->MakeBranch(digitsTree);
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);
}
//_____________________________________________________________________________
clusterer.ReadDigits(digitsTree);
clusterer.MakeClusters();
+ fgNTimeBins = clusterer.GetNTimeBins();
+
if(IsWritingClusters()) return;
// take over ownership of clusters
fgTracklets = clusterer.TrackletsArray();
clusterer.SetTrackletsOwner(kFALSE);
- fgNTimeBins = clusterer.GetNTimeBins();
}
//_____________________________________________________________________________
//
// 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);