Integrating the Cooked Matrix tracker into the commom reconstruction framework
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSeed.cxx
index 200d3a7..bcec888 100644 (file)
@@ -15,10 +15,23 @@ AliITSUSeed::AliITSUSeed()
   ,fChi2Glo(0)
   ,fChi2Cl(0)
   ,fChi2Penalty(0)
+  ,fChi2Match(0)
+  ,fChi2ITSSA(0)
   ,fParent(0)
+#ifdef _ITSU_TUNING_MODE_ // this is used only for tuning histo filling
+  ,fOrdBranch(0) 
+  ,fOrdCand(0)
+#endif
 {
   // def c-tor
   ResetFMatrix();
+  for (int i=kNKElem;i--;) fKMatrix[i] = 0.;
+  for (int i=kNRElem;i--;) fRMatrix[i] = 0.;
+  fResid[0]=0.;
+  fResid[1]=0.;  
+  fCovIYZ[0]=0.;
+  fCovIYZ[1]=0.;
+  fCovIYZ[2]=0.;
 }
 
 //_________________________________________________________________________
@@ -36,7 +49,13 @@ AliITSUSeed::AliITSUSeed(const AliITSUSeed& src)
   ,fChi2Glo(src.fChi2Glo)
   ,fChi2Cl(src.fChi2Cl)
   ,fChi2Penalty(src.fChi2Penalty)
+  ,fChi2Match(src.fChi2Match)
+  ,fChi2ITSSA(src.fChi2ITSSA)
   ,fParent(src.fParent) 
+#ifdef _ITSU_TUNING_MODE_ // this is used only for tuning histo filling
+  ,fOrdBranch(src.fOrdBranch) 
+  ,fOrdCand(src.fOrdCand)
+#endif
 {
   // def c-tor
   for (int i=kNFElem;i--;) fFMatrix[i] = src.fFMatrix[i];
@@ -65,8 +84,8 @@ void AliITSUSeed::Print(Option_t* opt) const
 {
   // print seed info
   int lr,cl = GetLrCluster(lr);
-  printf("%cLr%d Nchild: %3d Cl:%4d Chi2Glo:%7.2f(%7.2f) Chi2Cl:%7.2f Penalty: %7.2f",IsKilled() ? '-':' ',
-        lr,GetNChildren(),cl,GetChi2Glo(),GetChi2GloNrm(),GetChi2Cl(), GetChi2Penalty());
+  printf("%cLr%d Nchild: %3d Cl:%4d Chi2Glo:%7.2f(%7.2f) Chi2Cl:%7.2f Penalty: %7.2f Mtc:%6.3f Bwd:%6.3f",IsKilled() ? '-':' ',
+        lr,GetNChildren(),cl,GetChi2Glo(),GetChi2GloNrm(),GetChi2Cl(), GetChi2Penalty(), GetChi2ITSTPC(), GetChi2ITSSA());
   printf(" |"); 
   int lrc=0;
   const AliITSUSeed *sdc = this;
@@ -86,11 +105,11 @@ void AliITSUSeed::Print(Option_t* opt) const
 }
 
 //______________________________________________________________________________
-void AliITSUSeed::InitFromESDTrack(const AliESDtrack* esdTr)
+void AliITSUSeed::InitFromSeed(const AliExternalTrackParam* seed)
 {
   // init seed from ESD track
   TObject::Clear();
-  AliExternalTrackParam::operator=(*esdTr);
+  AliExternalTrackParam::operator=(*seed);
   ResetFMatrix();
   fHitsPattern = 0;
   fClID = 0;
@@ -630,6 +649,36 @@ Double_t* AliITSUSeed::ProdABA(const double a[15],const double b[15]) const
   return &aba[0];
 }
 
+//____________________________________________________________________
+Bool_t AliITSUSeed::ContainsFake() const
+{
+  // check if the full branch containes a fake cluster
+  const AliITSUSeed* seed = this;
+  while(seed) {
+    if ( seed->IsFake() ) return kTRUE;
+    seed = (AliITSUSeed*)seed->GetParent();
+  }  
+  return kFALSE;
+}
+
+//__________________________________________________________________
+Int_t AliITSUSeed::FetchClusterInfo(Int_t *clIDarr) const
+{
+  // fill cl.id's in the array. The clusters of layer L will be set at slots
+  // clID[2L] (and clID[2L+1] if there is an extra cluster).
+  Int_t lr,ncl=0;
+  const AliITSUSeed* seed = this;
+  do {
+    int clID = seed->GetLrCluster(lr);
+    if (clID>=0) {
+      lr<<=1;
+      clIDarr[ clIDarr[lr]<0 ? lr : lr+1 ] = clID;
+      ncl++;
+    }
+  } while ((seed=(AliITSUSeed*)seed->GetParent()));
+  return ncl;
+}
+
 /*
 //____________________________________________________________________
 Bool_t AliITSUSeed::Smooth(Double_t vecL[5],Double_t matL[15])