]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/AliESDRecInfo.cxx
bugfix: external interface was calling AliHLTComponent::Init twice since r27483
[u/mrichter/AliRoot.git] / PWG1 / AliESDRecInfo.cxx
index 025161e36eda3a49c77ab7aa6ceefebddde2786e..fc7a044aa34542d73a99f538ebfdac8433f77d19 100644 (file)
@@ -41,7 +41,7 @@
 #include "AliESDtrack.h"
 #include "AliTPCseed.h"
 #include "AliITStrackMI.h"
-#include "AliTRDtrack.h"
+#include "AliTRDtrackV1.h"
 #include "AliMCInfo.h"
 #include "AliESDRecInfo.h"
 
@@ -75,8 +75,7 @@ AliESDRecInfo::AliESDRecInfo():
   fTrackF(0),      // friend track
   fTPCtrack(0),        // tpc track
   fITStrack(0),        // its track
-  fTRDtrack(0),        // trd track  
-  fTPCtrackAtVertex(0) // tpc track propagated to the vertex  
+  fTRDtrack(0)        // trd track  
 {
   //
   //  default constructor
@@ -85,7 +84,21 @@ AliESDRecInfo::AliESDRecInfo():
 
 
 AliESDRecInfo::AliESDRecInfo(const AliESDRecInfo& recinfo):
-  TObject()
+  TObject(),
+  fITSOn(0),           // ITS refitted inward
+  fTRDOn(0),           // ITS refitted inward
+  fDeltaP(0),          //delta of momenta
+  fSign(0),           // sign
+  fReconstructed(0),         //flag if track was reconstructed
+  fFake(0),             // fake track
+  fMultiple(0),         // number of reconstructions
+  fTPCOn(0),           // TPC refitted inward
+  fBestTOFmatch(0),        //best matching between times
+  fESDtrack(0),        // esd track
+  fTrackF(0),      // friend track
+  fTPCtrack(0),        // tpc track
+  fITStrack(0),        // its track
+  fTRDtrack(0)        // trd track  
 {
   //
   //
@@ -96,6 +109,17 @@ AliESDRecInfo::AliESDRecInfo(const AliESDRecInfo& recinfo):
 }
 
 
+AliESDRecInfo& AliESDRecInfo::operator=(const AliESDRecInfo& info) { 
+  //
+  // Assignment operator
+  //
+  this->~AliESDRecInfo();
+  new (this) AliESDRecInfo(info);
+  return *this;
+}
+
+
+
 AliESDRecInfo::~AliESDRecInfo()
 
 {
@@ -133,12 +157,22 @@ void AliESDRecInfo::SetESDtrack(const AliESDtrack *track){
   //
   if (fESDtrack) delete fESDtrack;
   fESDtrack = (AliESDtrack*)track->Clone();
-  if (0 &&track->GetFriendTrack()){
+  if (track->GetFriendTrack()){
     if (fTrackF) delete fTrackF;
     fTrackF = (AliESDfriendTrack*)track->GetFriendTrack()->Clone();
-    if (fTrackF->GetCalibObject(0)){
-      if (fTPCtrack) delete fTPCtrack;
-      fTPCtrack = (AliTPCseed*)fTrackF->GetCalibObject(0)->Clone();
+    Int_t icalib=0;
+    TObject *cobject=0;
+    //
+    while (fTrackF->GetCalibObject(icalib)){
+      cobject=fTrackF->GetCalibObject(icalib);
+      if (dynamic_cast<AliTPCseed*>(cobject)){
+                               if (fTPCtrack) delete fTPCtrack;
+                               fTPCtrack = (AliTPCseed*)(dynamic_cast<AliTPCseed*>(cobject))->Clone();
+      } else if (dynamic_cast<AliTRDtrackV1*>(cobject)){
+                               if (fTRDtrack) delete fTRDtrack;
+                               fTRDtrack = (AliTRDtrackV1*)(dynamic_cast<AliTRDtrackV1*>(cobject))->Clone();
+      }
+      icalib++;
     }
   }
   
@@ -446,21 +480,6 @@ void AliESDRecInfo::UpdateTPC(AliMCInfo* info){
     fSign =sign;
     fTPCPools[4] = sign*(1./fTPCinP0[3]-1./fTPCinP1[3])/TMath::Sqrt(TMath::Abs(cov[14]));
   }
-  //
-  if (fESDtrack && fESDtrack->GetTPCInnerParam()){
-    AliExternalTrackParam *track = new AliExternalTrackParam(*fESDtrack->GetTPCInnerParam());
-    const Double_t kRadius  = 3;   // beam pipe radius
-    const Double_t kMaxStep = 5;   // max step
-    const Double_t kMaxD    = 123456;  // max distance to prim vertex
-    Double_t       fieldZ   = AliTracker::GetBz();  //
-    AliTracker::PropagateTrackTo(track,kRadius,info->GetMass(),kMaxStep,kTRUE);
-    AliTracker::PropagateTrackTo(track,0,info->GetMass(),0.5,kTRUE);
-    //track->RelateToVertex(fEvent->GetVertex(),fieldZ, kMaxD);
-    fTPCtrackAtVertex = track;
-  }else{
-    delete fTPCtrackAtVertex;
-    fTPCtrackAtVertex=0;
-  }  
 }