AliESDtrack *track = event->GetTrack(i);
AliESDfriendTrack *friendTrack = (AliESDfriendTrack*) ESDfriend->GetTrack(i);
if (!friendTrack) continue;
- track->SetFriendTrack(friendTrack);
+ //track->SetFriendTrack(friendTrack);
+ fCurrentFriendTrack=friendTrack;
const AliExternalTrackParam * trackIn = track->GetInnerParam();
const AliExternalTrackParam * trackOut = track->GetOuterParam();
AliExternalTrackParam * tpcOut = (AliExternalTrackParam *)friendTrack->GetTPCOut();
//
// 0 - Setup transform object
//
- AliESDfriendTrack *friendTrack = (AliESDfriendTrack *)track->GetFriendTrack();
+ const Double_t kxIFC = 83.; // position of IFC
+ const Double_t kxOFC = 250.; // position of OFC
+ const Double_t kaFC = 1.; // amplitude
+ const Double_t ktFC = 5.0; // slope of error
+ //cov[0]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+ //cov[2]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+
+ static Int_t streamCounter=0;
+ streamCounter++;
+ AliESDfriendTrack *friendTrack = fCurrentFriendTrack;
AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
AliTPCParam *param = AliTPCcalibDB::Instance()->GetParameters();
- if (fStreamLevel>2){
+ if (fStreamLevel>2 && streamCounter<20*fStreamLevel ){
+ // dump debug info if required
TTreeSRedirector *cstream = GetDebugStreamer();
if (cstream){
(*cstream)<<"Clusters"<<
"cl.="<<cluster<<
"cy="<<dy<<
"cz="<<dz<<
- // "cY="<<corrclY<<
- // "cR="<<corrR<<
"\n";
}
}
AliTPCseed::GetError(cl, &trackIn,cov[0],cov[2]);
cov[0]*=cov[0];
cov[2]*=cov[2];
+ cov[0]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+ cov[2]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
trackIn.GetXYZ(xyz);
// Double_t bz = AliTracker::GetBz(xyz);
AliTPCseed::GetError(cl, &trackOut,cov[0],cov[2]);
cov[0]*=cov[0];
cov[2]*=cov[2];
+ cov[0]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+ cov[2]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
trackOut.GetXYZ(xyz);
//Double_t bz = AliTracker::GetBz(xyz);
// if (!trackOut.PropagateTo(r[0],bz)) continue;
AliTPCseed::GetError(cl, &trackIn,cov[0],cov[2]);
cov[0]*=cov[0];
cov[2]*=cov[2];
+ cov[0]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+ cov[2]+= kaFC*(TMath::Exp(-TMath::Abs(cl->GetX()-kxIFC)/ktFC)+TMath::Exp(-TMath::Abs(cl->GetX()-kxOFC)/ktFC));
+
trackIn.GetXYZ(xyz);
//Double_t bz = AliTracker::GetBz(xyz);
trackOut.PropagateTo(trackOutOld->GetX(),bz);
- if (fStreamLevel>0){
+ if (fStreamLevel>0 && streamCounter<100*fStreamLevel){
TTreeSRedirector *cstream = GetDebugStreamer();
if (cstream){
(*cstream)<<"Tracks"<<
// check the acceptance of cluster
// Cut on edge effects
//
+ if (!param) return kTRUE;
Float_t kEdgeCut=2.5;
Float_t kSigmaCut=6;
Bool_t isReject = kFALSE;
Float_t edgeY = cl->GetX()*TMath::Tan(TMath::Pi()/18);
Float_t dist = edgeY - TMath::Abs(cl->GetY());
- if (param) dist = TMath::Abs(edgeY - TMath::Abs(param->GetY()));
+ dist = TMath::Abs(edgeY - TMath::Abs(param->GetY()));
if (dist<kEdgeCut) isReject=kTRUE;
Double_t cov[3]={0.01,0.,0.01}; //TODO: correct error parametrisation