]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Make optional copy of clusters in copy constructor (M.Ivanov)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 May 2006 17:25:04 +0000 (17:25 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 16 May 2006 17:25:04 +0000 (17:25 +0000)
TPC/AliTPCseed.cxx
TPC/AliTPCseed.h

index 2822c13d8534e67d781e9c125ad278c3d781c31d..6c13f61021f39c169b44175a066e3694daaf961a 100644 (file)
@@ -32,6 +32,7 @@ ClassImp(AliTPCseed)
 AliTPCseed::AliTPCseed():
   AliTPCtrack(),
   fEsd(0x0),
+  fClusterOwner(kFALSE),
   fPoints(0x0),
   fEPoints(0x0),
   fRow(0),
@@ -67,9 +68,10 @@ AliTPCseed::AliTPCseed():
   for (Int_t i=0;i<12;i++) fOverlapLabels[i] = -1;
 }
 
-AliTPCseed::AliTPCseed(const AliTPCseed &s):
+AliTPCseed::AliTPCseed(const AliTPCseed &s, Bool_t clusterOwner):
   AliTPCtrack(s),
   fEsd(0x0),
+  fClusterOwner(clusterOwner),
   fPoints(0x0),
   fEPoints(0x0),
   fRow(0),
@@ -95,12 +97,22 @@ AliTPCseed::AliTPCseed(const AliTPCseed &s):
   //---------------------
   // dummy copy constructor
   //-------------------------
-  for (Int_t i=0;i<160;i++) fClusterPointer[i] = s.fClusterPointer[i];
+  for (Int_t i=0;i<160;i++) {
+    fClusterPointer[i]=0;
+    if (fClusterOwner){
+      if (s.fClusterPointer[i])
+       fClusterPointer[i] = new AliTPCclusterMI(*(s.fClusterPointer[i]));
+    }else{
+      fClusterPointer[i] = s.fClusterPointer[i];
+    }
+    fTrackPoints[i] = s.fTrackPoints[i];
+  }
   for (Int_t i=0;i<160;i++) fIndex[i] = s.fIndex[i];
 }
 AliTPCseed::AliTPCseed(const AliTPCtrack &t):
   AliTPCtrack(t),
   fEsd(0x0),
+  fClusterOwner(kFALSE),
   fPoints(0x0),
   fEPoints(0x0),
   fRow(0),
@@ -152,6 +164,7 @@ AliTPCseed::AliTPCseed(UInt_t index,  const Double_t xx[5],
                       Double_t xr, Double_t alpha):      
   AliTPCtrack(index, xx, cc, xr, alpha),
   fEsd(0x0),
+  fClusterOwner(kFALSE),
   fPoints(0x0),
   fEPoints(0x0),
   fRow(0),
@@ -198,6 +211,11 @@ AliTPCseed::~AliTPCseed(){
   if (fEPoints) delete fEPoints;
   fEPoints = 0;
   fNoCluster =0;
+  if (fClusterOwner){
+    for (Int_t icluster=0; icluster<160; icluster++){
+      delete fClusterPointer[icluster];
+    }
+  }
 }
 
 AliTPCTrackerPoint * AliTPCseed::GetTrackPoint(Int_t i)
index 30d332a685b4c1fe0aafd4ba2d239a278408bf4f..70bbe808b2f79405412ef8d18fae4b4625e8c212 100644 (file)
@@ -33,7 +33,7 @@ class AliTPCseed : public AliTPCtrack {
      AliTPCseed();
      virtual ~AliTPCseed();
      AliTPCseed(const AliTPCtrack &t);
-     AliTPCseed(const AliTPCseed &s);
+     AliTPCseed(const AliTPCseed &s, Bool_t clusterOwner = kFALSE);
      //AliTPCseed(const AliTPCseed &t, Double_t a);
      AliTPCseed(UInt_t index, const Double_t xx[5], 
                 const Double_t cc[15], Double_t xr, Double_t alpha);     
@@ -76,6 +76,7 @@ class AliTPCseed : public AliTPCtrack {
      //  {::Fatal("= operator","Not Implemented\n");return *this;}
      AliESDtrack * fEsd; //!
      AliTPCclusterMI*   fClusterPointer[160];  // array of cluster pointers  - 
+     Bool_t             fClusterOwner;         // indicates the track is owner of cluster
      TClonesArray * fPoints;              //!array with points along the track
      TClonesArray * fEPoints;             //! array with exact points - calculated in special macro not used in tracking
      //---CURRENT VALUES
@@ -107,7 +108,6 @@ class AliTPCseed : public AliTPCtrack {
      Float_t fMAngular;           // mean angular factor
      Char_t   fCircular;           // indicates curlin track
      AliTPCTrackerPoint  fTrackPoints[160];  //track points - array track points
-   
      ClassDef(AliTPCseed,1)  
 };