]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDtrack.cxx
Introducing a new function GetYAt (Yuri)
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.cxx
index 1b384ae295e2d877411aa763796ee61b98eb2953..86b13657be89bd8008c32eefbecdfced6b279b4e 100644 (file)
@@ -112,7 +112,7 @@ AliESDtrack::AliESDtrack() :
   //
   // The default ESD constructor 
   //
-  Int_t i;
+  Int_t i, j;
   for (i=0; i<AliPID::kSPECIES; i++) {
     fTrackTime[i]=0.;
     fR[i]=1.;
@@ -125,7 +125,12 @@ AliESDtrack::AliESDtrack() :
   
   for (i=0; i<3; i++)   { fKinkIndexes[i]=0;}
   for (i=0; i<3; i++)   { fV0Indexes[i]=-1;}
-  for (i=0;i<kNPlane;i++) {fTRDsignals[i]=0.; fTRDTimBin[i]=-1;}
+  for (i=0;i<kNPlane;i++) {
+    for (j=0;j<kNSlice;j++) {
+      fTRDsignals[i][j]=0.; 
+    }
+    fTRDTimBin[i]=-1;
+  }
   for (i=0;i<4;i++) {fTPCPoints[i]=-1;}
   for (i=0;i<3;i++) {fTOFLabel[i]=-1;}
   for (i=0;i<10;i++) {fTOFInfo[i]=-1;}
@@ -181,7 +186,7 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fRICHmipX(track.fRICHmipX),
   fRICHmipY(track.fRICHmipY),
   fPoints(0),
-  fFriendTrack(new AliESDfriendTrack(*(track.fFriendTrack)))
+  fFriendTrack(0)
 {
   //
   //copy constructor
@@ -197,8 +202,10 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   for (Int_t i=0; i<3;i++)   { fV0Indexes[i]=track.fV0Indexes[i];}
   //
   for (Int_t i=0;i<kNPlane;i++) {
-      fTRDsignals[i]=track.fTRDsignals[i]; 
-      fTRDTimBin[i]=track.fTRDTimBin[i];
+    for (Int_t j=0;j<kNSlice;j++) {
+      fTRDsignals[i][j]=track.fTRDsignals[i][j]; 
+    }
+    fTRDTimBin[i]=track.fTRDTimBin[i];
   }
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTRDr[i]=track.fTRDr[i]; 
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTOFr[i]=track.fTOFr[i];
@@ -211,6 +218,7 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   if (track.fOp) fOp=new AliExternalTrackParam(*track.fOp);
 
   if (track.fPoints) fPoints=new AliTrackPointArray(*(track.fPoints));
+  if (track.fFriendTrack) fFriendTrack=new AliESDfriendTrack(*(track.fFriendTrack));
 }
 
 //_______________________________________________________________________
@@ -226,6 +234,23 @@ AliESDtrack::~AliESDtrack(){
   delete fPoints;
 }
 
+void AliESDtrack::AddCalibObject(TObject * object){
+  //
+  // add calib object to the list
+  //
+  if (!fFriendTrack) fFriendTrack  = new AliESDfriendTrack;
+  fFriendTrack->AddCalibObject(object);
+}
+
+TObject *  AliESDtrack::GetCalibObject(Int_t index){
+  //
+  // return calib objct at given position
+  //
+  if (!fFriendTrack) return 0;
+  return fFriendTrack->GetCalibObject(index);
+}
+
+
 //_______________________________________________________________________
 void AliESDtrack::MakeMiniESDtrack(){
   // Resets everything except
@@ -235,11 +260,7 @@ void AliESDtrack::MakeMiniESDtrack(){
   // fD: Impact parameter in XY-plane
   // fZ: Impact parameter in Z 
   // fR[AliPID::kSPECIES]: combined "detector response probability"
-  // Running track parameters
-  // fRalpha: track rotation angle
-  // fRx: X-coordinate of the track reference plane 
-  // fRp[5]: external track parameters  
-  // fRc[15]: external cov. matrix of the track parameters
+  // Running track parameters in the base class (AliExternalTrackParam)
   
   fTrackLength = 0;
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTrackTime[i] = 0;
@@ -283,8 +304,10 @@ void AliESDtrack::MakeMiniESDtrack(){
   fTRDncls0 = 0;       
   fTRDsignal = 0;      
   for (Int_t i=0;i<kNPlane;i++) {
-      fTRDsignals[i] = 0; 
-      fTRDTimBin[i]  = 0;
+    for (Int_t j=0;j<kNSlice;j++) {
+      fTRDsignals[i][j] = 0; 
+    }
+    fTRDTimBin[i]  = 0;
   }
   for (Int_t i=0;i<AliPID::kSPECIES;i++) fTRDr[i] = 0; 
   fTRDLabel = 0;       
@@ -311,6 +334,8 @@ void AliESDtrack::MakeMiniESDtrack(){
   fRICHphi = 0;      
   fRICHdx = 0;     
   fRICHdy = 0;      
+  fRICHmipX = 0;
+  fRICHmipY = 0;
 
   delete fFriendTrack; fFriendTrack = 0;
   delete fPoints; fPoints = 0;
@@ -809,6 +834,9 @@ Bool_t AliESDtrack::RelateToVertex
   //    In the case of success, the returned value is kTRUE
   //    (otherwise, it's kFALSE)
   //  
+
+  if (!vtx) return kFALSE;
+
   Double_t alpha=GetAlpha();
   Double_t sn=TMath::Sin(alpha), cs=TMath::Cos(alpha);
   Double_t x=GetX(), y=GetParameter()[0], snp=GetParameter()[2];
@@ -821,7 +849,9 @@ Bool_t AliESDtrack::RelateToVertex
   if (d > maxd) return kFALSE; 
 
   //Propagate to the DCA
-  Double_t crv=0.299792458e-3*b*GetParameter()[4];
+  Double_t crv=kB2C*b*GetParameter()[4];
+  if (TMath::Abs(b) < kAlmost0Field) crv=0.;
+
   Double_t tgfv=-(crv*x - snp)/(crv*y + TMath::Sqrt(1.-snp*snp));
   sn=tgfv/TMath::Sqrt(1.+ tgfv*tgfv);
   if (TMath::Abs(tgfv)>0.) cs = sn/tgfv;