]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrackV1.cxx
AliEMCALRecoUtils: new class for cluster correction during analysis
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackV1.cxx
index e4debf8b558fc60c3aedfa59054c10e4ae94caff..c42ba864465e7ac9fe0bf77d6d5081c338f4e3e1 100644 (file)
@@ -229,6 +229,56 @@ AliTRDtrackV1::~AliTRDtrackV1()
   }
 }
        
+//_______________________________________________________________
+AliTRDtrackV1 &AliTRDtrackV1::operator=(const AliTRDtrackV1 &t)
+{
+  //
+  // Assignment operator
+  //
+
+  if (this != &t) {
+    ((AliTRDtrackV1 &) t).Copy(*this);
+  }
+
+  return *this;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtrackV1::Copy(TObject &t) const
+{
+  //
+  // Copy function
+  //
+
+  ((AliTRDtrackV1 &) t).fStatus         = fStatus;
+  ((AliTRDtrackV1 &) t).fESDid          = fESDid;
+  ((AliTRDtrackV1 &) t).fDE             = fDE;
+  ((AliTRDtrackV1 &) t).fkReconstructor = fkReconstructor;
+  ((AliTRDtrackV1 &) t).fBackupTrack    = 0x0;
+  ((AliTRDtrackV1 &) t).fTrackLow       = 0x0;
+  ((AliTRDtrackV1 &) t).fTrackHigh      = 0x0;
+
+  for(Int_t ip = 0; ip < kNplane; ip++) { 
+    ((AliTRDtrackV1 &) t).fTrackletIndex[ip] = fTrackletIndex[ip];
+    ((AliTRDtrackV1 &) t).fTracklet[ip]      = fTracklet[ip];
+  }
+  if (fTrackLow) {
+    ((AliTRDtrackV1 &) t).fTrackLow  = new AliExternalTrackParam(*fTrackLow);
+  }
+  if (fTrackHigh){
+    ((AliTRDtrackV1 &) t).fTrackHigh = new AliExternalTrackParam(*fTrackHigh);
+  }
+  for (Int_t i = 0; i < 3; i++) {
+    ((AliTRDtrackV1 &) t).fBudget[i] = fBudget[i];
+  }
+  for (Int_t is = 0; is < AliPID::kSPECIES; is++) {
+    ((AliTRDtrackV1 &) t).fPID[is] = fPID[is];
+  }  
+
+}
+
 //_______________________________________________________________
 Bool_t AliTRDtrackV1::CookLabel(Float_t wrong)
 {
@@ -562,7 +612,7 @@ Int_t AliTRDtrackV1::MakeBackupTrack()
 }
 
 //_____________________________________________________________________________
-Int_t AliTRDtrackV1::GetProlongation(Double_t xk, Double_t &y, Double_t &z)
+Int_t AliTRDtrackV1::GetProlongation(Double_t xk, Double_t &y, Double_t &z) const
 {
   //
   // Find a prolongation at given x
@@ -801,17 +851,30 @@ void AliTRDtrackV1::SetTracklet(AliTRDseedV1 *const trklt, Int_t index)
 }
 
 //_______________________________________________________________
-void AliTRDtrackV1::SetTrackLow()
+void AliTRDtrackV1::SetTrackIn()
 {
+//  Save location of birth for the TRD track
+//  If the pointer is not valid allocate memory
+//
   const AliExternalTrackParam *op = dynamic_cast<const AliExternalTrackParam*>(this);
-  fTrackLow = fTrackLow ? new(fTrackLow) AliExternalTrackParam(*op) : new AliExternalTrackParam(*op);
+
+  if(fTrackLow){
+    fTrackLow->~AliExternalTrackParam();
+    new(fTrackLow) AliExternalTrackParam(*op);
+  } else fTrackLow = new AliExternalTrackParam(*op);
 }
 
 //_______________________________________________________________
-void AliTRDtrackV1::SetTrackHigh(const AliExternalTrackParam *op)
+void AliTRDtrackV1::SetTrackOut(const AliExternalTrackParam *op)
 {
+//  Save location of death for the TRD track
+//  If the pointer is not valid allocate memory
+//
   if(!op) op = dynamic_cast<const AliExternalTrackParam*>(this);
-  fTrackHigh = fTrackHigh ? new(fTrackHigh) AliExternalTrackParam(*op) : new AliExternalTrackParam(*op);
+  if(fTrackHigh){
+    fTrackHigh->~AliExternalTrackParam();
+    new(fTrackHigh) AliExternalTrackParam(*op);
+  } else fTrackHigh = new AliExternalTrackParam(*op);
 }
 
 //_______________________________________________________________
@@ -824,18 +887,10 @@ void AliTRDtrackV1::UnsetTracklet(Int_t plane)
 
 
 //_______________________________________________________________
-Bool_t  AliTRDtrackV1::Update(Double_t *p, Double_t *cov, Double_t chi2, Bool_t use)
+void AliTRDtrackV1::UpdateChi2(Float_t chi2)
 {
-  //
-  // Update track 
-  //
-  AliDebug(2, Form("Point:\n  p=[%6.2f %6.2f]\n  V=[%6.2f %6.2f]\n    [%6.2f %6.2f]", p[0], p[1], cov[0], cov[1], cov[1], cov[2]));
-  if(use && !AliExternalTrackParam::Update(p, cov)) return kFALSE;
-
-  // Register info to track
-  SetNumberOfClusters();
+// Update chi2/track with one tracklet contribution
   SetChi2(GetChi2() + chi2);
-  return kTRUE;
 }
 
 //_______________________________________________________________