X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCcalibCalib.cxx;h=30358727a28934dedd4c6c178624863bc31c1acf;hb=02d1b157cc65df0dfa2fba9e7dceb296f216e2fc;hp=e31fc7f996139e5d234bb7cb3fee4c4ebe8e758a;hpb=b322e06ab6b415689a025efc26a2ba86cd6d3e22;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCcalibCalib.cxx b/TPC/AliTPCcalibCalib.cxx index e31fc7f9961..30358727a28 100644 --- a/TPC/AliTPCcalibCalib.cxx +++ b/TPC/AliTPCcalibCalib.cxx @@ -153,7 +153,8 @@ void AliTPCcalibCalib::Process(AliESDEvent *event){ 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(); @@ -180,7 +181,16 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa // // 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(); @@ -239,7 +249,8 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa - if (fStreamLevel>2){ + if (fStreamLevel>2 && streamCounter<20*fStreamLevel ){ + // dump debug info if required TTreeSRedirector *cstream = GetDebugStreamer(); if (cstream){ (*cstream)<<"Clusters"<< @@ -253,8 +264,6 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa "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); @@ -351,6 +362,8 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa 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; @@ -389,6 +402,9 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa 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); @@ -413,7 +429,7 @@ Bool_t AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa trackOut.PropagateTo(trackOutOld->GetX(),bz); - if (fStreamLevel>0){ + if (fStreamLevel>0 && streamCounter<100*fStreamLevel){ TTreeSRedirector *cstream = GetDebugStreamer(); if (cstream){ (*cstream)<<"Tracks"<< @@ -454,13 +470,14 @@ Bool_t AliTPCcalibCalib::RejectCluster(AliTPCclusterMI* cl, AliExternalTrackPara // 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