#include "AliESDTOFMatch.h"
#include "AliESDfriend.h"
+#include "AliESDv0.h"
+
class AliESDv0;
class AliESDkink;
class AliESDHLTtrack;
AliESDv0 *GetV0(Int_t i) const {
return (AliESDv0*)(fV0s?fV0s->At(i):0x0);
}
+
+ Int_t GetV0(AliESDv0 &v0dum, Int_t i) const {
+ if(!GetV0(i)) return -1;
+ v0dum=*GetV0(i);
+ return 0;}
+
Int_t AddV0(const AliESDv0 *v);
AliESDcascade *GetCascade(Int_t i) const {
AliVTrack *track0 = event->GetVTrack(i0);
if (!track0) continue;
if ((track0->GetStatus() & AliVTrack::kTPCrefit)==0) continue;
- if (track0->GetOuterParam()==0) continue;
- if (track0->GetInnerParam()==0) continue;
- if (TMath::Abs(track0->GetInnerParam()->GetSigned1Pt()-track0->GetOuterParam()->GetSigned1Pt())>kDist1Pt) continue;
- if (TMath::Abs(track0->GetInnerParam()->GetSigned1Pt())>kDist1Pt) continue;
- if (TMath::Abs(track0->GetInnerParam()->GetTgl()-track0->GetOuterParam()->GetTgl())>kDistThS) continue;
+
+ AliExternalTrackParam trck0Out;
+ track0->GetTrackParamOp(trck0Out);
+ if ( (track0->GetTrackParamOp(trck0Out)) < 0) continue;
+ AliExternalTrackParam * track0Out = &trck0Out;
+ if (!track0Out) continue;
+
+ AliExternalTrackParam trck0In;
+ track0->GetTrackParamIp(trck0In);
+ if((track0->GetTrackParamIp(trck0In)) < 0) continue;
+ AliExternalTrackParam * track0In = &trck0In;
+ if (!track0In) continue;
+
+ if (TMath::Abs(track0In->GetSigned1Pt()-track0Out->GetSigned1Pt())>kDist1Pt) continue;
+ if (TMath::Abs(track0In->GetSigned1Pt())>kDist1Pt) continue;
+ if (TMath::Abs(track0In->GetTgl()-track0Out->GetTgl())>kDistThS) continue;
AliVTrack *track1P = 0;
if (track0->GetTPCNcls()<kminCl) continue;
track0->GetImpactParameters(dca0[0],dca0[1]);
AliVTrack *track1 = event->GetVTrack(i1);
if (!track1) continue;
if ((track1->GetStatus() & AliVTrack::kTPCrefit)==0) continue;
- if (track1->GetOuterParam()==0) continue;
- if (track1->GetInnerParam()==0) continue;
+
+ AliExternalTrackParam trck1Out;
+ track1->GetTrackParamOp(trck1Out);
+ if((track1->GetTrackParamOp(trck1Out)) < 0) continue;
+ AliExternalTrackParam * track1Out = &trck1Out;
+ if (!track1Out) continue;
+
+ AliExternalTrackParam trck1In;
+ track1->GetTrackParamIp(trck1In);
+ if((track1->GetTrackParamIp(trck1In)) < 0) continue;
+ AliExternalTrackParam * track1In = &trck1In;
+ if (!track1In) continue;
+
if (track1->GetTPCNcls()<kminCl) continue;
- if (TMath::Abs(track1->GetInnerParam()->GetSigned1Pt()-track1->GetOuterParam()->GetSigned1Pt())>kDist1Pt) continue;
- if (TMath::Abs(track1->GetInnerParam()->GetTgl()-track1->GetOuterParam()->GetTgl())>kDistThS) continue;
- if (TMath::Abs(track1->GetInnerParam()->GetSigned1Pt())>kDist1Pt) continue;
+ if (TMath::Abs(track1In->GetSigned1Pt()-track1Out->GetSigned1Pt())>kDist1Pt) continue;
+ if (TMath::Abs(track1In->GetTgl()-track1Out->GetTgl())>kDistThS) continue;
+ if (TMath::Abs(track1In->GetSigned1Pt())>kDist1Pt) continue;
//track1->GetImpactParameters(dca1[0],dca1[1]);
//if (TMath::Abs(dca1[0]-dca0[0])>kDistY) continue;
//if (TMath::Abs(dca1[1]-dca0[1])>kDistZ) continue;
if (track0) {
//p0In= new AliExternalTrackParam(*track0);
p0In->CopyFromVTrack(track0);
- p0Out=new AliExternalTrackParam(*(track0->GetOuterParam()));
+
+ AliExternalTrackParam trckOut;
+ track0->GetTrackParamOp(trckOut);
+ AliExternalTrackParam * trackout = &trckOut;
+ p0Out=new AliExternalTrackParam(*trackout);
}
if (track1P) {
//p1In= new AliExternalTrackParam(*track1P);
p1In->CopyFromVTrack(track1P);
- p1Out=new AliExternalTrackParam(*(track1P->GetOuterParam()));
+ AliExternalTrackParam trck1POut;
+ track1P->GetTrackParamOp(trck1POut);
+ AliExternalTrackParam * track1POut = &trck1POut;
+ p1Out=new AliExternalTrackParam(*track1POut);
}
(*cstream)<<"trackPoints"<<
// 4. Combine In and Out track - - fil cluster residuals
//
if (!fCurrentFriendTrack) return;
- if (!fCurrentFriendTrack->GetTPCOut()) return;
+
+ AliExternalTrackParam trckTPCOut;
+ fCurrentFriendTrack->GetTrackParamTPCOut(trckTPCOut);
+ if((fCurrentFriendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
+ AliExternalTrackParam * trackTPCOut = &trckTPCOut;
+ if (!trackTPCOut) return;
const Double_t kPtCut=1.0; // pt
const Double_t kSnpCut=0.2; // snp cut
const Double_t kNclCut=120; //
Int_t detector=-1;
//
//
- AliExternalTrackParam trackIn = *(fCurrentTrack->GetInnerParam());
- AliExternalTrackParam trackOut = *(fCurrentFriendTrack->GetTPCOut());
+ //AliExternalTrackParam trackIn = *(fCurrentTrack->GetInnerParam());
+ AliExternalTrackParam trackIn;
+ fCurrentTrack->GetTrackParamIp(trackIn);
+ //AliExternalTrackParam trackOut = *(fCurrentFriendTrack->GetTPCOut());
+ AliExternalTrackParam trackOut;
+ fCurrentFriendTrack->GetTrackParamTPCOut(trackOut);
+
trackIn.ResetCovariance(10);
trackOut.ResetCovariance(10);
Double_t *covarIn = (Double_t*)trackIn.GetCovariance();
if (!friendTrack) continue;
//track->SetFriendTrack(friendTrack);
fCurrentFriendTrack=const_cast<AliVfriendTrack*>(friendTrack);
- const AliExternalTrackParam * trackIn = track->GetInnerParam();
- const AliExternalTrackParam * trackOut = track->GetOuterParam();
- AliExternalTrackParam * tpcOut = (AliExternalTrackParam *)(friendTrack->GetTPCOut());
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if((track->GetTrackParamIp(trckIn)) < 0) continue;
+ const AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ if((track->GetTrackParamOp(trckOut)) < 0) continue;
+ const AliExternalTrackParam * trackOut = &trckOut;
if (!trackOut) continue;
- if (!tpcOut) continue;
+
+ AliExternalTrackParam prmtpcOut;
+ friendTrack->GetTrackParamTPCOut(prmtpcOut);
+ if((friendTrack->GetTrackParamTPCOut(prmtpcOut)) < 0) continue;
+ AliExternalTrackParam * tpcOut = &prmtpcOut;
+ if (!tpcOut) continue;
TObject *calibObject;
AliTPCseed *seed = 0;
for (Int_t l=0;(calibObject=friendTrack->GetCalibObject(l));++l) {
}
if (!seed) continue;
RefitTrack(track, seed, event->GetMagneticField());
- (*tpcOut)=*(track->GetOuterParam());
+
+ AliExternalTrackParam prmOut;
+ track->GetTrackParamOp(prmOut);
+ AliExternalTrackParam * paramOut = &prmOut;
+ (*tpcOut)=*paramOut;
}
return;
}
//
// And now do refit
//
- AliExternalTrackParam * trackInOld = (AliExternalTrackParam*)track->GetInnerParam();
- AliExternalTrackParam * trackOuter = (AliExternalTrackParam*)track->GetOuterParam();
- AliExternalTrackParam * trackOutOld = (AliExternalTrackParam *)friendTrack->GetTPCOut();
- Double_t mass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
+ AliExternalTrackParam trckOld;
+ track->GetTrackParamIp(trckOld);
+ AliExternalTrackParam * trackInOld = &trckOld;
-
+ AliExternalTrackParam trckOuter;
+ track->GetTrackParamOp(trckOuter);
+ AliExternalTrackParam * trackOuter = &trckOuter;
+
+ AliExternalTrackParam trckOutOld;
+ friendTrack->GetTrackParamTPCOut(trckOutOld);
+ AliExternalTrackParam * trackOutOld = &trckOutOld;
+ Double_t mass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
AliExternalTrackParam trackIn = *trackOutOld;
trackIn.ResetCovariance(kResetCov);
AliVTrack *track = event->GetVTrack(i);
if (!track) continue;
//
- AliExternalTrackParam * trackIn = (AliExternalTrackParam *)track->GetInnerParam();
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) continue;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
// calculate necessary track parameters
//
if (seed) { // seed the container with track parameters and the clusters
//
- const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut(); // tack at the outer radius of TPC
- if (!trackIn) continue;
+ AliExternalTrackParam trckOut;
+ friendTrack->GetTrackParamTPCOut(trckOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckOut)) <0) continue;
+ AliExternalTrackParam * trackOut = &trckOut; // tack at the outer radius of TPC
if (!trackOut) continue;
Double_t meanDrift = 250 - 0.5*TMath::Abs(trackIn->GetZ() + trackOut->GetZ());
Double_t dipAngleTgl = trackIn->GetTgl();
if ( (isMuon==0 && isElectron==0) && (TMath::Sqrt(dca[0]*dca[0]+dca[1]*dca[1])>kDCAcut) ) return;
Double_t normdEdx= track->GetTPCsignal()/(medianMIP0); // TPC signal normalized to the MIP
//
- AliExternalTrackParam * trackIn = (AliExternalTrackParam *)track->GetInnerParam();
- AliExternalTrackParam * trackOut = (AliExternalTrackParam *)track->GetOuterParam();
- AliExternalTrackParam * tpcOut = (AliExternalTrackParam *)ftrack->GetTPCOut();
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) <0) return;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) return;
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ if ( (track->GetTrackParamOp(trckOut)) <0) return;
+ AliExternalTrackParam * trackOut = &trckOut;
if (!trackOut) return;
+
+ AliExternalTrackParam trckTPCOut;
+ ftrack->GetTrackParamTPCOut(trckTPCOut);
+ if ( (ftrack->GetTrackParamTPCOut(trckTPCOut)) <0) return;
+ AliExternalTrackParam * tpcOut = &trckTPCOut;
if (!tpcOut) return;
- if (trackIn->GetZ()*trackOut->GetZ()<0) return; // remove crossing tracks
+
+ if (trckIn.GetZ()*trckOut.GetZ()<0) return; // remove crossing tracks
//
// calculate local and global angle
Int_t side = (trackIn->GetZ()>0)? 1:-1;
// Select the kaons and Protons which are "isolated" in TPC dedx curve
//
//
- Double_t dedxP = AliExternalTrackParam::BetheBlochAleph(track->GetInnerParam()->GetP()/massP,kp1,kp2,kp3,kp4,kp5);
- Double_t dedxK = AliExternalTrackParam::BetheBlochAleph(track->GetInnerParam()->GetP()/massK,kp1,kp2,kp3,kp4,kp5);
+ AliExternalTrackParam trkIn;
+ track->GetTrackParamIp(trkIn);
+ AliExternalTrackParam * trackIP = &trkIn;
+ Double_t dedxP = AliExternalTrackParam::BetheBlochAleph(trackIP->GetP()/massP,kp1,kp2,kp3,kp4,kp5);
+ Double_t dedxK = AliExternalTrackParam::BetheBlochAleph(trackIP->GetP()/massK,kp1,kp2,kp3,kp4,kp5);
if (dedxP>2 || dedxK>2){
if (track->GetP()<1.2 && normdEdx>1.8&&counterMIP0>10){ // not enough from TOF and V0s triggered by high dedx
// signing the Proton and kaon - using the "bitmask" bit 1 and 2 is dedicated for V0s and TOF selected
Double_t mass = 0;
Bool_t isHighPt = ((TMath::Power(1/track->Pt(),4)*gRandom->Rndm())<0.005); // rnadomly selected HPT tracks
// there are selected for the QA of the obtained calibration
- Bool_t isMIP = TMath::Abs(track->GetInnerParam()->P()-0.4)<0.005&&(counter<kMax); //
+ Bool_t isMIP = TMath::Abs(trackIP->P()-0.4)<0.005&&(counter<kMax); //
// REMINDER - it is not exactly MIP - we select the regtion where the Kaon and Electrons are well separated
if (isElectron>0) mass = massE;
//AliESDv0 *v0 = event->GetV0(iv0);
AliESDv0 v0dummy;
event->GetV0(v0dummy, iv0);
+ if( (event->GetV0(v0dummy, iv0)) < 0) continue;
AliESDv0 *v0 = &v0dummy;
if (!v0) continue;
if (track->Pt()<4) continue;
UInt_t status = track->GetStatus();
//
- AliExternalTrackParam * trackIn = (AliExternalTrackParam *)track->GetInnerParam();
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ((track->GetTrackParamIp(trckIn)) <0) continue;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
if ((status&AliVTrack::kTPCrefit)==0) continue;
if ((status&AliVTrack::kITSrefit)==0) continue;
const AliVfriendTrack *friendTrack = friendEvent->GetTrack(i);
if (!friendTrack) continue;
- AliExternalTrackParam * itsOut = (AliExternalTrackParam *)(friendTrack->GetITSOut());
+ AliExternalTrackParam prmitsOut;
+ friendTrack->GetTrackParamITSOut(prmitsOut);
+ if ((friendTrack->GetTrackParamITSOut(prmitsOut)) < 0) continue;
+ AliExternalTrackParam * itsOut = &prmitsOut;
if (!itsOut) continue;
- AliExternalTrackParam * itsOut2 = (AliExternalTrackParam *)(friendTrack->GetITSOut()->Clone());
+
+ //AliExternalTrackParam * itsOut2 = (AliExternalTrackParam *)(friendTrack->GetITSOut()->Clone());
+ AliExternalTrackParam * itsOut2 = (AliExternalTrackParam *)(itsOut->Clone());
+
AliExternalTrackParam * tpcIn2 = (AliExternalTrackParam *)(trackIn->Clone());
if (!itsOut2->Rotate(trackIn->GetAlpha())) continue;
//Double_t xmiddle=0.5*(itsOut2->GetX()+tpcIn2->GetX());
if (!itsOut2->PropagateTo(xmiddle,event->GetMagneticField())) continue;
if (!tpcIn2->PropagateTo(xmiddle,event->GetMagneticField())) continue;
//
- AliExternalTrackParam * tpcInner = (AliExternalTrackParam *)(track->GetTPCInnerParam());
+ AliExternalTrackParam prmtpcInner;
+ track->GetTrackParamTPCInner(prmtpcInner);
+ if ((track->GetTrackParamTPCInner(prmtpcInner)) < 0) continue;
+ AliExternalTrackParam * tpcInner = &prmtpcInner;
if (!tpcInner) continue;
tpcInner->Rotate(track->GetAlpha());
tpcInner->PropagateTo(track->GetX(),event->GetMagneticField());
//
// tpc constrained
//
- AliExternalTrackParam * tpcInnerC = (AliExternalTrackParam *)(track->GetTPCInnerParam()->Clone());
+ AliExternalTrackParam prmtpcInnerC;
+ track->GetTrackParamTPCInner(prmtpcInnerC);
+ if ((track->GetTrackParamTPCInner(prmtpcInnerC)) < 0) continue;
+ AliExternalTrackParam * tpcInnerC = &prmtpcInnerC;
+ //AliExternalTrackParam * tpcInnerC = (AliExternalTrackParam *)(track->GetTPCInnerParam()->Clone());
if (!tpcInnerC) continue;
tpcInnerC->Rotate(track->GetAlpha());
tpcInnerC->PropagateTo(track->GetX(),event->GetMagneticField());
//
// Find corresponding mirror
// add the corresponding tracks
-
- if (!track->GetOuterParam()) return -1;
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ if ((track->GetTrackParamOp(trckOut)) < 0) return -1;
+ AliExternalTrackParam * trackOut = &trckOut;
+ if (!trackOut) return -1;
Float_t kRadius0 = 252;
Float_t kRadius = 254.2;
if (csideC>0.5*seed->GetNumberOfClusters()) side=1;
- AliExternalTrackParam param(*(track->GetOuterParam()));
+ AliExternalTrackParam param(*trackOut);
AliTracker::PropagateTrackTo(¶m,kRadius0,TDatabasePDG::Instance()->GetParticle("mu+")->Mass(),3,kTRUE);
AliTracker::PropagateTrackTo(¶m,kRadius,TDatabasePDG::Instance()->GetParticle("mu+")->Mass(),0.1,kTRUE);
AliTPCLaserTrack ltr;
clusterSideC[i]=0;
AliVTrack *track = event->GetVTrack(i);
if(!track) continue;
-
- const AliExternalTrackParam * trackIn = track->GetInnerParam();
- const AliExternalTrackParam * trackOut = track->GetOuterParam();
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) <0) continue;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ if ( (track->GetTrackParamOp(trckOut)) <0) continue;
+ AliExternalTrackParam * trackOut = &trckOut;
if (!trackOut) continue;
const AliVfriendTrack *friendTrack = friendEvent->GetTrack(i);
AliVTrack *track0 = event->GetVTrack(i);
// track0 - choosen upper part
if (!track0) continue;
- if (!track0->GetOuterParam()) continue;
- if (track0->GetOuterParam()->GetAlpha()<0) continue;
+
+ AliExternalTrackParam trckOut;
+ track0->GetTrackParamOp(trckOut);
+ if ( (track0->GetTrackParamOp(trckOut)) < 0) continue;
+ AliExternalTrackParam * trackOut = &trckOut;
+ if (!trackOut) continue;
+ if (trackOut->GetAlpha()<0) continue;
Double_t d1[3];
track0->GetDirection(d1);
for (Int_t j=0;j<ntracks;++j) {
AliVTrack *track1 = event->GetVTrack(j);
//track 1 lower part
if (!track1) continue;
- if (!track1->GetOuterParam()) continue;
+
+ AliExternalTrackParam trck1Out;
+ track1->GetTrackParamOp(trck1Out);
+ if ( (track1->GetTrackParamOp(trck1Out)) < 0) continue;
+ AliExternalTrackParam * track1Out = &trck1Out;
+ if (!track1Out) continue;
if (track0->GetTPCNcls()+ track1->GetTPCNcls()< kMinClusters) continue;
Int_t nAC = TMath::Max( TMath::Min(clusterSideA[i], clusterSideC[j]),
TMath::Min(clusterSideC[i], clusterSideA[j]));
if (!friendTrack) continue;
if (TMath::Abs(track->GetTgl())>kMaxTgl) continue;
if (TMath::Abs(track->Pt())<kMinPt) continue;
- const AliExternalTrackParam * trackIn = track->GetInnerParam();
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ AliExternalTrackParam * trackIn = &trckIn;
+
TObject *calibObject=0;
AliTPCseed *seed = 0;
Int_t nA=0, nC=0;
//
// check if the cosmic pair of tracks crossed A/C side
//
- Bool_t result= tr0->GetOuterParam()->GetZ()*tr1->GetOuterParam()->GetZ()<0;
+ AliExternalTrackParam trck0Out;
+ tr0->GetTrackParamOp(trck0Out);
+
+ AliExternalTrackParam trck1Out;
+ tr1->GetTrackParamOp(trck1Out);
+
+ Bool_t result= trck0Out.GetZ()*trck1Out.GetZ()<0;
if (result==kFALSE) return result;
result=kTRUE;
return result;
//
// 1. alpha cut - sector+-1
//
- if (TMath::Abs(tr0->GetOuterParam()->GetAlpha()-tr1->GetOuterParam()->GetAlpha())>kalphaCut) return kFALSE;
+ AliExternalTrackParam trck0Out;
+ tr0->GetTrackParamOp(trck0Out);
+
+ AliExternalTrackParam trck1Out;
+ tr1->GetTrackParamOp(trck1Out);
+
+ if (TMath::Abs(trck0Out.GetAlpha()-trck1Out.GetAlpha())>kalphaCut) return kFALSE;
//
// 2. Z crossing
//
- if (tr0->GetOuterParam()->GetZ()*tr0->GetInnerParam()->GetZ()>0) result&=kFALSE;
- if (tr1->GetOuterParam()->GetZ()*tr1->GetInnerParam()->GetZ()>0) result&=kFALSE;
+ AliExternalTrackParam trck0In;
+ tr0->GetTrackParamIp(trck0In);
+
+ AliExternalTrackParam trck1In;
+ tr1->GetTrackParamIp(trck1In);
+ //if (tr0->GetOuterParam()->GetZ()*tr0->GetInnerParam()->GetZ()>0) result&=kFALSE;
+ //if (tr1->GetOuterParam()->GetZ()*tr1->GetInnerParam()->GetZ()>0) result&=kFALSE;
+ if (trck0Out.GetZ()*trck0In.GetZ()>0) result&=kFALSE;
+ if (trck1Out.GetZ()*trck1In.GetZ()>0) result&=kFALSE;
+
if (result==kFALSE){
return result;
}
//
//
- const Double_t *p0I = tr0->GetInnerParam()->GetParameter();
- const Double_t *p1I = tr1->GetInnerParam()->GetParameter();
- const Double_t *p0O = tr0->GetOuterParam()->GetParameter();
- const Double_t *p1O = tr1->GetOuterParam()->GetParameter();
+ const Double_t *p0I = trck0In.GetParameter();
+ const Double_t *p1I = trck1In.GetParameter();
+ const Double_t *p0O = trck0Out.GetParameter();
+ const Double_t *p1O = trck1Out.GetParameter();
//
if (TMath::Abs(p0I[0]-p1I[0])>fCutMaxD) result&=kFALSE;
if (TMath::Abs(p0I[1]-p1I[1])>fCutMaxDz) result&=kFALSE;
const Double_t kMaxDy=1; // maximal distance in y
const Double_t kMaxDsnp=0.05; // maximal distance in snp
const Double_t kMaxDtheta=0.05; // maximal distance in theta
-
- if (!friendTrack->GetTPCOut()) return;
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParam(trckIn);
+
+ AliExternalTrackParam trckTPCOut;
+ friendTrack->GetTrackParamTPCOut(trckTPCOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
+ AliExternalTrackParam * trackTPCOut = &trckTPCOut;
+ if (!trackTPCOut) return;
//
// 0. Select only track crossing the CE
//
- if (track->GetInnerParam()->GetZ()*friendTrack->GetTPCOut()->GetZ()>0) return;
+ if (trckIn.GetZ()*trckTPCOut.GetZ()>0) return;
//
// 1. cut on track length
//
}
if (!seed) return;
//
- AliExternalTrackParam trackIn(*track->GetInnerParam());
- AliExternalTrackParam trackOut(*track->GetOuterParam());
+ //AliExternalTrackParam trackIn(*track->GetInnerParam());
+ AliExternalTrackParam trackIn(trckIn);
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ AliExternalTrackParam trackOut(trckOut);
+
Double_t cov[3]={0.01,0.,0.01}; //use the same errors
Double_t xyz[3]={0,0.,0.0};
Double_t bz =0;
Int_t dummycl[1000];
if (track->GetTPCNcls()<kMinTPC) return; // minimal amount of clusters cut
if (!track->IsOn(AliVTrack::kTPCrefit)) return;
- if (!track->GetInnerParam()) return;
- if (!track->GetOuterParam()) return;
- if (track->GetInnerParam()->Pt()<kMinPt) return;
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) return;
+ AliExternalTrackParam * trackIn = &trckIn;
+ if (!trackIn) return;
+
+ AliExternalTrackParam trckOut;
+ track->GetTrackParamOp(trckOut);
+ if ( (track->GetTrackParamOp(trckOut)) < 0) return;
+ AliExternalTrackParam * trackOut = &trckOut;
+ if (!trackOut) return;
+
+ if (trackIn->Pt()<kMinPt) return;
// exclude crossing track
- if (track->GetOuterParam()->GetZ()*track->GetInnerParam()->GetZ()<0) return;
- if (TMath::Abs(track->GetInnerParam()->GetZ())<kMinZ/3.) return;
- if (track->GetInnerParam()->GetX()>90) return;
+ if (trckOut.GetZ()*trckIn.GetZ()<0) return;
+ if (TMath::Abs(trackIn->GetZ())<kMinZ/3.) return;
+ if (trackIn->GetX()>90) return;
//
- AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*(track->GetInnerParam()));
+ AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*trackIn);
//
AliExternalTrackParam pITS; // ITS standalone if possible
AliExternalTrackParam pITS2; //TPC-ITS track
- if (friendTrack->GetITSOut()){
- pITS2=(*(friendTrack->GetITSOut())); //TPC-ITS track - snapshot ITS out
+
+ AliExternalTrackParam trckITSOut;
+ friendTrack->GetTrackParamITSOut(trckITSOut);
+ AliExternalTrackParam * trackITSOut = &trckITSOut;
+
+ if ( (friendTrack->GetTrackParamITSOut(trckITSOut)) == 0 && (trackITSOut) ){
+ pITS2=(*trackITSOut); //TPC-ITS track - snapshot ITS out
pITS2.Rotate(pTPC.GetAlpha());
AliTracker::PropagateTrackToBxByBz(&pITS2,pTPC.GetX(),0.1,0.1,kFALSE);
}
if (trackITS->GetITSclusters(dummycl)<kMinITS) continue; // minimal amount of clusters
const AliVfriendTrack *itsfriendTrack = friendEvent->GetTrack(i);
if (!itsfriendTrack) continue;
- if (!itsfriendTrack->GetITSOut()) continue;
+
+ AliExternalTrackParam itstrckOut;
+ itsfriendTrack->GetTrackParamITSOut(itstrckOut);
+ if ( (itsfriendTrack->GetTrackParamITSOut(itstrckOut)) < 0) continue;
+ AliExternalTrackParam * ITStrackOut = &itstrckOut;
+ if (!ITStrackOut) continue;
- if (TMath::Abs(pTPC.GetTgl()-itsfriendTrack->GetITSOut()->GetTgl())> kMaxAngle) continue;
- if (TMath::Abs(pTPC.GetSigned1Pt()-itsfriendTrack->GetITSOut()->GetSigned1Pt())> kMax1Pt) continue;
- pITS=(*(itsfriendTrack->GetITSOut()));
+ if (TMath::Abs(pTPC.GetTgl()-ITStrackOut->GetTgl())> kMaxAngle) continue;
+ if (TMath::Abs(pTPC.GetSigned1Pt()-ITStrackOut->GetSigned1Pt())> kMax1Pt) continue;
+ pITS=(*ITStrackOut);
//
pITS.Rotate(pTPC.GetAlpha());
AliTracker::PropagateTrackToBxByBz(&pITS,pTPC.GetX(),0.1,0.1,kFALSE);
// if (!friendTrack->GetTRDIn()) return;
// if (!track->IsOn(AliESDtrack::kTRDrefit)) return;
if (!track->IsOn(AliVTrack::kTRDout)) return;
- if (!track->GetInnerParam()) return;
- if (!friendTrack->GetTPCOut()) return;
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) return;
+ AliExternalTrackParam * trackIn = &trckIn;
+ if (!trackIn) return;
+
+ AliExternalTrackParam trckTPCOut;
+ friendTrack->GetTrackParamTPCOut(trckTPCOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
+ AliExternalTrackParam * trackTPCOut = &trckTPCOut;
+ if (!trackTPCOut) return;
// exclude crossing track
- if (friendTrack->GetTPCOut()->GetZ()*track->GetInnerParam()->GetZ()<0) return;
+ if (trckTPCOut.GetZ()*trckIn.GetZ()<0) return;
//
- AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*(friendTrack->GetTPCOut()));
+ AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*trackTPCOut);
AliTracker::PropagateTrackToBxByBz(&pTPC,kRefX,0.1,0.1,kFALSE);
AliExternalTrackParam *pTRDtrack = 0;
TObject *calibObject=0;
// Clusters are not in friends - use alingment points
//
if (track->GetTOFsignal()<=0) return;
- if (!friendTrack->GetTPCOut()) return;
- if (!track->GetInnerParam()) return;
- if (!friendTrack->GetTPCOut()) return;
+
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) return;
+ AliExternalTrackParam * trackIn = &trckIn;
+ if (!trackIn) return;
+
+ AliExternalTrackParam trckTPCOut;
+ friendTrack->GetTrackParamTPCOut(trckTPCOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
+ AliExternalTrackParam * trackTPCOut = &trckTPCOut;
+ if (!trackTPCOut) return;
+
const AliTrackPointArray *points=friendTrack->GetTrackPointArray();
if (!points) return;
- AliExternalTrackParam pTPC(*(friendTrack->GetTPCOut()));
+ AliExternalTrackParam pTPC(*trackTPCOut);
AliExternalTrackParam pTOF(pTPC);
Double_t mass = TDatabasePDG::Instance()->GetParticle("mu+")->Mass();
Int_t npoints = points->GetNPoints();
//
if (track->GetTPCNcls()<kMinTPC) return; // minimal amount of clusters cut
// exclude crossing track
- if (friendTrack->GetTPCOut()->GetZ()*track->GetInnerParam()->GetZ()<0) return;
+ if (trckTPCOut.GetZ()*trckIn.GetZ()<0) return;
//
if (TMath::Abs(pTOF.GetY()-pTPC.GetY()) >kMaxDy) return;
if (TMath::Abs(pTOF.GetSnp()-pTPC.GetSnp())>kMaxAngle) return;
//
if (fMemoryMode<2) return;
Double_t histoX[4];
- const AliExternalTrackParam * pTPCIn = pTrack->GetInnerParam();
- AliExternalTrackParam pTPCvertex(*(pTrack->GetInnerParam()));
+ AliExternalTrackParam prmTPCIn;
+ pTrack->GetTrackParamIp(prmTPCIn);
+ AliExternalTrackParam * pTPCIn = &prmTPCIn;
+
+ AliExternalTrackParam pTPCvertex(*pTPCIn);
//
- if (!(pTrack->GetConstrainedParam())) return;
- AliExternalTrackParam lits(*(pTrack->GetConstrainedParam()));
+
+ AliExternalTrackParam cnstrPrm;
+ pTrack->GetTrackParamCp(cnstrPrm);
+ if ( (pTrack->GetTrackParamCp(cnstrPrm)) <0) return;
+ AliExternalTrackParam * constrainedParam = &cnstrPrm;
+ if (!constrainedParam) return;
+ AliExternalTrackParam lits(*constrainedParam);
if (TMath::Abs(pTrack->GetY())>3) return; // beam pipe
pTPCvertex.Rotate(lits.GetAlpha());
//pTPCvertex.PropagateTo(pTPCvertex->GetX(),fMagF);
if (!track) continue;
const AliVfriendTrack *friendTrack = friendEvent->GetTrack(i);
if (!friendTrack) continue;
- const AliExternalTrackParam * trackIn = track->GetInnerParam();
- const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut();
+ //const AliExternalTrackParam * trackIn = track->GetInnerParam();
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) continue;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
+
+ //const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut();
+ AliExternalTrackParam trckOut;
+ friendTrack->GetTrackParamTPCOut(trckOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckOut)) < 0) continue;
+ AliExternalTrackParam * trackOut = &trckOut;
if (!trackOut) continue;
// calculate necessary track parameters
continue;
}
- const AliExternalTrackParam * trackIn = track->GetInnerParam();
- const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut();
+ //const AliExternalTrackParam * trackIn = track->GetInnerParam();
+ AliExternalTrackParam trckIn;
+ track->GetTrackParamIp(trckIn);
+ if ( (track->GetTrackParamIp(trckIn)) < 0) continue;
+ AliExternalTrackParam * trackIn = &trckIn;
if (!trackIn) continue;
+
+ //const AliExternalTrackParam * trackOut = friendTrack->GetTPCOut();
+ AliExternalTrackParam trckOut;
+ friendTrack->GetTrackParamTPCOut(trckOut);
+ if ( (friendTrack->GetTrackParamTPCOut(trckOut)) < 0) continue;
+ AliExternalTrackParam * trackOut = &trckOut;
if (!trackOut) continue;
// calculate necessary track parameters
if (!trackP) continue; //Printf("***ERROR*** trackP not available!");
const AliVfriendTrack *friendTrackP = friendEvent->GetTrack(index);
if (!friendTrackP) continue;
- const AliExternalTrackParam * trackPIn = trackP->GetInnerParam();
- const AliExternalTrackParam * trackPOut = friendTrackP->GetTPCOut();
+ //const AliExternalTrackParam * trackPIn = trackP->GetInnerParam();
+ AliExternalTrackParam trckPIn;
+ trackP->GetTrackParamIp(trckPIn);
+ if ( (trackP->GetTrackParamIp(trckPIn)) < 0) continue;
+ AliExternalTrackParam * trackPIn = &trckPIn;
if (!trackPIn) continue;
+
+ //const AliExternalTrackParam * trackPOut = friendTrackP->GetTPCOut();
+ AliExternalTrackParam trckPOut;
+ friendTrackP->GetTrackParamTPCOut(trckPOut);
+ if ( (friendTrackP->GetTrackParamTPCOut(trckPOut)) < 0) continue;
+ AliExternalTrackParam * trackPOut = &trckPOut;
if (!trackPOut) continue;
+
// calculate necessary track parameters
Double_t meanP = trackPIn->GetP();
Double_t meanDrift = 250 - 0.5*TMath::Abs(trackPIn->GetZ() + trackPOut->GetZ());