]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibCalib.cxx
Change the calculation of cross section scaling factor, do not scale with AliAnaScale...
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibCalib.cxx
index e31fc7f996139e5d234bb7cb3fee4c4ebe8e758a..30358727a28934dedd4c6c178624863bc31c1acf 100644 (file)
@@ -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.="<<cluster<<
          "cy="<<dy<<
          "cz="<<dz<<
-         //      "cY="<<corrclY<<
-         //      "cR="<<corrR<<
          "\n";
       }
     }
@@ -312,6 +321,8 @@ 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);
 
@@ -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<kEdgeCut) isReject=kTRUE;
 
   Double_t cov[3]={0.01,0.,0.01}; //TODO: correct error parametrisation