]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding TPC cluster map for clusters used in fit (Marco van Leeuwen)
authorjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 31 Oct 2011 16:27:18 +0000 (16:27 +0000)
committerjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 31 Oct 2011 16:27:18 +0000 (16:27 +0000)
TPC/AliTPCseed.cxx
TPC/AliTPCseed.h
TPC/AliTPCtrackerMI.cxx
TPC/AliTPCtrackerMI.h

index 45336b107687a34f26cdab30470f68799f678f47..2b99f3412f789b2231ea744c834dcaa6a0c5b011 100644 (file)
@@ -69,9 +69,7 @@ AliTPCseed::AliTPCseed():
   fSeed1(-1),
   fSeed2(-1),
   fMAngular(0),
-  fCircular(0),
-  fClusterMap(159),
-  fSharedMap(159)
+  fCircular(0)
 {
   //
   for (Int_t i=0;i<160;i++) SetClusterIndex2(i,-3);
@@ -84,11 +82,6 @@ AliTPCseed::AliTPCseed():
     fNCDEDX[i] = 0;
   }
   for (Int_t i=0;i<12;i++) fOverlapLabels[i] = -1;
-  //  for (Int_t i=0;i<160;i++) fClusterMap[i]=kFALSE;
-  //for (Int_t i=0;i<160;i++) fSharedMap[i]=kFALSE;
-  fClusterMap.ResetAllBits(kFALSE);
-  fSharedMap.ResetAllBits(kFALSE);
-
 }
 
 AliTPCseed::AliTPCseed(const AliTPCseed &s, Bool_t clusterOwner):
@@ -117,9 +110,7 @@ AliTPCseed::AliTPCseed(const AliTPCseed &s, Bool_t clusterOwner):
   fSeed1(-1),
   fSeed2(-1),
   fMAngular(0),
-  fCircular(0),
-  fClusterMap(s.fClusterMap),
-  fSharedMap(s.fSharedMap)
+  fCircular(0)
 {
   //---------------------
   // dummy copy constructor
@@ -172,9 +163,7 @@ AliTPCseed::AliTPCseed(const AliTPCtrack &t):
   fSeed1(-1),
   fSeed2(-1),
   fMAngular(0),
-  fCircular(0),
-  fClusterMap(159),
-  fSharedMap(159)
+  fCircular(0)
 {
   //
   // Constructor from AliTPCtrack
@@ -197,12 +186,6 @@ AliTPCseed::AliTPCseed(const AliTPCtrack &t):
     fNCDEDX[i] = 0;
   }
   for (Int_t i=0;i<12;i++) fOverlapLabels[i] = -1;
-  
-  //for (Int_t i=0;i<160;i++) fClusterMap[i]=kFALSE;
-  //for (Int_t i=0;i<160;i++) fSharedMap[i]=kFALSE;
-  fClusterMap.ResetAllBits(kFALSE);
-  fSharedMap.ResetAllBits(kFALSE);
-
 }
 
 AliTPCseed::AliTPCseed(Double_t xr, Double_t alpha, const Double_t xx[5],
@@ -232,9 +215,7 @@ AliTPCseed::AliTPCseed(Double_t xr, Double_t alpha, const Double_t xx[5],
   fSeed1(-1),
   fSeed2(-1),
   fMAngular(0),
-  fCircular(0),
-  fClusterMap(159),
-  fSharedMap(159)
+  fCircular(0)
 {
   //
   // Constructor
@@ -303,8 +284,6 @@ AliTPCseed & AliTPCseed::operator=(const AliTPCseed &param)
     fMAngular = param.fMAngular;
     fCircular = param.fCircular;
     for(int i = 0;i<160;++i)fTrackPoints[i] =  param.fTrackPoints[i];
-    fClusterMap = param.fClusterMap;
-    fSharedMap = param.fSharedMap;
   }
   return (*this);
 }
@@ -893,25 +872,6 @@ Double_t AliTPCseed::GetYat(Double_t xk) const {
     return GetY() + (xk-GetX())*(c1+c2)/(r1+r2);
 }
 
-void AliTPCseed::SetClusterMapBit(int ibit, Bool_t state)
-{
-  fClusterMap[ibit] = state;
-}
-Bool_t AliTPCseed::GetClusterMapBit(int ibit)
-{
-  return fClusterMap[ibit];
-}
-void AliTPCseed::SetSharedMapBit(int ibit, Bool_t state)
-{
-  fSharedMap[ibit] = state;
-}
-Bool_t AliTPCseed::GetSharedMapBit(int ibit)
-{
-  return fSharedMap[ibit];
-}
-
-
-
 
 
 Float_t  AliTPCseed::CookdEdxNorm(Double_t low, Double_t up, Int_t type, Int_t i1, Int_t i2, Bool_t shapeNorm,Int_t posNorm, Int_t padNorm, Int_t returnVal){
index 27bfebc23993081f09d76a0d1afa7eb94654e6c4..4ee11970616c041671f1b1dc02b98ef451186249 100644 (file)
@@ -130,12 +130,6 @@ class AliTPCseed : public AliTPCtrack {
   Float_t GetCMeanSigmaZ2p30R() const {return fCMeanSigmaZ2p30R;}
      //
      //
-     void SetClusterMapBit(int ibit, Bool_t state);
-     Bool_t GetClusterMapBit(int ibit);
-     void SetSharedMapBit(int ibit, Bool_t state);
-     Bool_t GetSharedMapBit(int ibit);
-     const TBits& GetClusterMap() const { return fClusterMap; };
-     const TBits& GetSharedMap() const { return fSharedMap; };
 
   Float_t  CookdEdxNorm(Double_t low=0.05, Double_t up=0.70, Int_t type=0, Int_t i1=0, Int_t i2=159, Bool_t shapeNorm=kTRUE, Int_t posNorm=0, Int_t padNorm=0,Int_t returnVal=0);
 
@@ -187,9 +181,7 @@ class AliTPCseed : public AliTPCtrack {
      Float_t fMAngular;           // mean angular factor
      Char_t   fCircular;           // indicates curlin track
      AliTPCTrackerPoint  fTrackPoints[160];  //track points - array track points
-     TBits   fClusterMap;       // bit is 1 if track has a hit on padrow
-     TBits   fSharedMap;        // bit is 1 if track shares a hit on padrow
-     ClassDef(AliTPCseed,3)  
+     ClassDef(AliTPCseed,4)  
 };
 
 
index 3b5383a1a99e93d004ebae0dee14ad60beb9d9f3..3dce6fc9c5f53faea5dc17206bae2003ca1a511e 100644 (file)
@@ -1269,7 +1269,10 @@ Int_t  AliTPCtrackerMI::LoadClusters()
   TTree * tree = fInput;
   TBranch * br = tree->GetBranch("Segment");
   br->SetAddress(&clrow);
-  //
+
+  // Conversion of pad, row coordinates in local tracking coords.
+  // Could be skipped here; is already done in clusterfinder
+
   Int_t j=Int_t(tree->GetEntries());
   for (Int_t i=0; i<j; i++) {
     br->GetEntry(i);
@@ -1881,9 +1884,9 @@ Int_t AliTPCtrackerMI::UpdateClusters(AliTPCseed& t,  Int_t nr) {
 
   if (!cl){
     index = t.GetClusterIndex2(nr);    
-    if ( (index>0) && (index&0x8000)==0){
+    if ( (index >= 0) && (index&0x8000)==0){
       cl = t.GetClusterPointer(nr);
-      if ( (cl==0) && (index>0)) cl = GetClusterMI(index);
+      if ( (cl==0) && (index >= 0)) cl = GetClusterMI(index);
       t.SetCurrentClusterIndex1(index);
       if (cl) {
        t.SetCurrentCluster(cl);
@@ -2014,7 +2017,7 @@ Int_t AliTPCtrackerMI::FollowBackProlongation(AliTPCseed& t, Int_t rf, Bool_t fr
   Double_t alpha=t.GetAlpha();
   if (alpha > 2.*TMath::Pi()) alpha -= 2.*TMath::Pi();  
   if (alpha < 0.            ) alpha += 2.*TMath::Pi();  
-  t.SetRelativeSector(Int_t(alpha/fSectors->GetAlpha())%fN);
+  t.SetRelativeSector(Int_t(alpha/fSectors->GetAlpha()+0.0001)%fN);
     
   Int_t first = t.GetFirstPoint();
   Int_t ri = GetRowNumber(xt); 
@@ -2128,11 +2131,7 @@ void  AliTPCtrackerMI::SignShared(AliTPCseed * s1, AliTPCseed * s2)
     //    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
@@ -2761,11 +2760,9 @@ Int_t AliTPCtrackerMI::RefitInward(AliESDEvent *event)
     seed->PropagateTo(fkParam->GetInnerRadiusLow());
     seed->UpdatePoints();
     AddCovariance(seed);
-    MakeBitmaps(seed);
+    MakeESDBitmaps(seed, esd);
     seed->CookdEdx(0.02,0.6);
     CookLabel(seed,0.1); //For comparison only
-    esd->SetTPCClusterMap(seed->GetClusterMap());
-    esd->SetTPCSharedMap(seed->GetSharedMap());
     //
     if (AliTPCReconstructor::StreamLevel()>1 && seed!=0) {
       TTreeSRedirector &cstream = *fDebugStreamer;
@@ -2986,7 +2983,7 @@ void AliTPCtrackerMI::ReadSeeds(const AliESDEvent *const event, Int_t direction)
     if (esd->GetKinkIndex(0)<=0){
       for (Int_t irow=0;irow<160;irow++){
        Int_t index = seed->GetClusterIndex2(irow);    
-       if (index>0){ 
+       if (index >= 0){ 
          //
          AliTPCclusterMI * cl = GetClusterMI(index);
          seed->SetClusterPointer(irow,cl);
@@ -3867,7 +3864,7 @@ AliTPCseed *AliTPCtrackerMI::MakeSeed(AliTPCseed *const track, Float_t r0, Float
       if ( (index<p0) || x0[0]<0 ){
        if (trpoint->GetX()>1){
          clindex = track->GetClusterIndex2(i);
-         if (clindex>0){       
+         if (clindex >= 0){    
            x0[0] = trpoint->GetX();
            x0[1] = trpoint->GetY();
            x0[2] = trpoint->GetZ();
@@ -3878,7 +3875,7 @@ AliTPCseed *AliTPCtrackerMI::MakeSeed(AliTPCseed *const track, Float_t r0, Float
 
       if ( (index<p1) &&(trpoint->GetX()>1)){
        clindex = track->GetClusterIndex2(i);
-       if (clindex>0){
+       if (clindex >= 0){
          x1[0] = trpoint->GetX();
          x1[1] = trpoint->GetY();
          x1[2] = trpoint->GetZ();
@@ -3887,7 +3884,7 @@ AliTPCseed *AliTPCtrackerMI::MakeSeed(AliTPCseed *const track, Float_t r0, Float
       }
       if ( (index<p2) &&(trpoint->GetX()>1)){
        clindex = track->GetClusterIndex2(i);
-       if (clindex>0){
+       if (clindex >= 0){
          x2[0] = trpoint->GetX();
          x2[1] = trpoint->GetY();
          x2[2] = trpoint->GetZ(); 
@@ -5934,7 +5931,7 @@ Int_t AliTPCtrackerMI::Clusters2Tracks() {
     CookLabel(pt,0.1); 
     if (pt->GetRemoval()==10) {
       if (pt->GetDensityFirst(20)>0.8 || pt->GetDensityFirst(30)>0.8 || pt->GetDensityFirst(40)>0.7)
-       pt->Desactivate(10);  // make track again active
+       pt->Desactivate(10);  // make track again active  // MvL: should be 0 ?
       else{
        pt->Desactivate(20);    
        delete fSeeds->RemoveAt(i);
@@ -6813,7 +6810,7 @@ Int_t  AliTPCtrackerMI::GetRowNumber(Double_t x[3]) const
 
 
 
-void AliTPCtrackerMI::MakeBitmaps(AliTPCseed *t)
+void AliTPCtrackerMI::MakeESDBitmaps(AliTPCseed *t, AliESDtrack *esd)
 {
   //-----------------------------------------------------------------------
   // Fill the cluster and sharing bitmaps of the track
@@ -6824,22 +6821,30 @@ void AliTPCtrackerMI::MakeBitmaps(AliTPCseed *t)
   AliTPCTrackerPoint *point;
   AliTPCclusterMI    *cluster;
   
+  Int_t nclsf = 0;
+  TBits clusterMap(159);
+  TBits sharedMap(159);
+  TBits fitMap(159);
   for (int iter=firstpoint; iter<lastpoint; iter++) {
     // Change to cluster pointers to see if we have a cluster at given padrow
+
     cluster = t->GetClusterPointer(iter);
     if (cluster) {
-      t->SetClusterMapBit(iter, kTRUE);
+      clusterMap.SetBitNumber(iter, kTRUE);
       point = t->GetTrackPoint(iter);
       if (point->IsShared())
-       t->SetSharedMapBit(iter,kTRUE);
-      else
-       t->SetSharedMapBit(iter, kFALSE);
+       sharedMap.SetBitNumber(iter,kTRUE);
     }
-    else {
-      t->SetClusterMapBit(iter, kFALSE);
-      t->SetSharedMapBit(iter, kFALSE);
+    if (t->GetClusterIndex(iter) >= 0 && (t->GetClusterIndex(iter) & 0x8000) == 0) {
+      fitMap.SetBitNumber(iter, kTRUE);
+      nclsf++;
     }
   }
+  esd->SetTPCClusterMap(clusterMap);
+  esd->SetTPCSharedMap(sharedMap);
+  esd->SetTPCFitMap(fitMap);
+  if (nclsf != t->GetNumberOfClusters())
+    AliWarning(Form("Inconsistency between ncls %d and indices %d (found %d)",t->GetNumberOfClusters(),nclsf,esd->GetTPCClusterMap().CountBits()));
 }
 
 Bool_t AliTPCtrackerMI::IsFindable(AliTPCseed & track){
index c7aae305fc147e398c7813342a47f1be62db4eb4..77c27a59c232ea41fc5137345fa0a5db01d5a7ca 100644 (file)
@@ -23,7 +23,8 @@ class TFile;
 class AliTPCParam;
 class AliTPCseed;
 class AliTPCTrackerPoint;
-class AliESDEvent;   
+class AliESDEvent;
+class AliESDtrack;
 class TTree;
 class AliESDkink;
 class TTreeSRedirector;
@@ -166,7 +167,7 @@ private:
 
    Int_t UpdateTrack(AliTPCseed *t, Int_t accept); //update trackinfo
 
-   void MakeBitmaps(AliTPCseed *t);
+   void MakeESDBitmaps(AliTPCseed *t, AliESDtrack *esd);
 
    const Int_t fkNIS;        //number of inner sectors
    AliTPCtrackerSector *fInnerSec;  //array of inner sectors;