#include "AliAlignObj.h"
#include "AliTrackPointArray.h"
+//#include "AliTPCTransform.h"
+
//
ClassImp(AliTPCtrackerMI)
}
void AliTPCtrackerMI::Transform(AliTPCclusterMI * cluster){
+ //
+ //
+ //
+// AliTPCTransform trafo;
+
+// Double_t x[3]={cluster->GetX(),cluster->GetY(),cluster->GetZ()};
+// Int_t i[1]={cluster->GetDetector()};
+
+// trafo.Transform(x,i,0,1);
+
+// cluster->SetX(x[0]);
+// cluster->SetY(x[1]);
+// cluster->SetZ(x[2]);
+
+// return;
+
+ // The old stuff:
+
//
//
//
// if ( (s1->GetClusterIndex2(i)&0xFFFF8FFF)==(s2->GetClusterIndex2(i)&0xFFFF8FFF) && s1->GetClusterIndex2(i)>0) {
if ( (s1->GetClusterIndex2(i))==(s2->GetClusterIndex2(i)) && s1->GetClusterIndex2(i)>0) {
sumshared++;
+ s1->SetSharedMapBit(i, kTRUE);
+ s2->SetSharedMapBit(i, kTRUE);
}
+ if (s1->GetClusterIndex2(i)>0)
+ s1->SetClusterMapBit(i, kTRUE);
}
if (sumshared>cutN0){
// sign clusters
}
}
}
-
}
void AliTPCtrackerMI::SignShared(TObjArray * arr)
meanchi = sumchi/sum;
//
sdensity = sumdens2/sum-mdensity*mdensity;
- sdensity = TMath::Sqrt(sdensity);
+ if (sdensity >= 0)
+ sdensity = TMath::Sqrt(sdensity);
+ else
+ sdensity = 0.1;
//
smeann = sumn2/sum-meann*meann;
- smeann = TMath::Sqrt(smeann);
+ if (smeann >= 0)
+ smeann = TMath::Sqrt(smeann);
+ else
+ smeann = 10;
//
smeanchi = sumchi2/sum - meanchi*meanchi;
- smeanchi = TMath::Sqrt(smeanchi);
+ if (smeanchi >= 0)
+ smeanchi = TMath::Sqrt(smeanchi);
+ else
+ smeanchi = 0.4;
}
seed->PropagateTo(fParam->GetInnerRadiusLow());
seed->UpdatePoints();
+ MakeBitmaps(seed);
AliESDtrack *esd=event->GetTrack(i);
seed->CookdEdx(0.02,0.6);
CookLabel(seed,0.1); //For comparison only
+ esd->SetTPCClusterMap(seed->GetClusterMap());
+ esd->SetTPCSharedMap(seed->GetSharedMap());
//
if (AliTPCReconstructor::StreamLevel()>0 && seed!=0&&esd!=0) {
TTreeSRedirector &cstream = *fDebugStreamer;
for (Int_t i =0;i<nentries;i++){
if (sign[i]==0) continue;
AliTPCseed * track0 = (AliTPCseed*)array->At(i);
+ if (track0==0) {
+ AliInfo("seed==0");
+ continue;
+ }
ntracks++;
//
Double_t cradius0 = 40*40;
fdensity = 2.;
cuts[0]=0.0080;
+ Int_t fLastSeedRowSec=AliTPCReconstructor::GetRecoParam()->GetLastSeedRowSec();
+
// find secondaries
- for (Int_t delta = 30; delta<90; delta+=10){
+ for (Int_t delta = 30; delta<fLastSeedRowSec; delta+=10){
//
cuts[0] = 0.3;
cuts[1] = 3.5;
}
-void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *arr2) const
+void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *&arr2) const
{
//
//sum tracks to common container
}
}
}
- delete arr2;
+ delete arr2; arr2 = 0;
}
AliTPCtrackerMI::AliTPCRow::~AliTPCRow(){
//
-
+ for (Int_t i = 0; i < fN1; i++)
+ fClusters1[i].~AliTPCclusterMI();
+ delete [] fClusters1;
+ for (Int_t i = 0; i < fN2; i++)
+ fClusters2[i].~AliTPCclusterMI();
+ delete [] fClusters2;
}
void AliTPCtrackerMI::AliTPCRow::ResetClusters() {
//
// reset clusters
+ // MvL: Need to call destructors for AliTPCclusterMI, to delete fInfo
+ for (Int_t i = 0; i < fN1; i++)
+ fClusters1[i].~AliTPCclusterMI();
+ delete [] fClusters1; fClusters1=0;
+ for (Int_t i = 0; i < fN2; i++)
+ fClusters2[i].~AliTPCclusterMI();
+ delete [] fClusters2; fClusters2=0;
+
fN = 0;
fN1 = 0;
fN2 = 0;
//delete[] fClusterArray;
- if (fClusters1) delete []fClusters1;
- if (fClusters2) delete []fClusters2;
+
//fClusterArray=0;
- fClusters1 = 0;
- fClusters2 = 0;
}
// }
+void AliTPCtrackerMI::MakeBitmaps(AliTPCseed *t)
+{
+ //-----------------------------------------------------------------------
+ // Fill the cluster and sharing bitmaps of the track
+ //-----------------------------------------------------------------------
+
+ Int_t firstpoint = 0;
+ Int_t lastpoint = 159;
+ AliTPCTrackerPoint *point;
+
+ for (int iter=firstpoint; iter<lastpoint; iter++) {
+ point = t->GetTrackPoint(iter);
+ if (point) {
+ t->SetClusterMapBit(iter, kTRUE);
+ if (point->IsShared())
+ t->SetSharedMapBit(iter,kTRUE);
+ else
+ t->SetSharedMapBit(iter, kFALSE);
+ }
+ else {
+ t->SetClusterMapBit(iter, kFALSE);
+ t->SetSharedMapBit(iter, kFALSE);
+ }
+ }
+}