Improvement in tracking by J. Belikov
authorkowal2 <kowal2@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Jul 2002 07:31:40 +0000 (07:31 +0000)
committerkowal2 <kowal2@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Jul 2002 07:31:40 +0000 (07:31 +0000)
TPC/AliTPCComparison.C
TPC/AliTPCPropagateBack.C
TPC/AliTPCtrack.cxx
TPC/AliTPCtrack.h
TPC/AliTPCtracker.cxx
TPC/AliTPCtracker.h

index 6e78e02..d29d11e 100644 (file)
@@ -2,10 +2,9 @@
  *           Very important, delicate and rather obscure macro.             *
  *                                                                          *
  *               Creates list of "trackable" tracks,                        *
- *             sorts tracks for matching with the ITS,                      *
  *             calculates efficiency, resolutions etc.                      *
  *                                                                          *
- *           Origin: J.Belikov, CERN, Jouri.Belikov@cern.ch                 *
+ *           Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch                 *
  * with several nice improvements by: M.Ivanov, GSI, m.ivanov@gsi.de        *
  ****************************************************************************/
 
@@ -292,19 +291,21 @@ Int_t good_tracks_tpc(GoodTrackTPC *gt, const Int_t max, const Int_t event) {
    Int_t ver = TPC->IsVersion(); 
    cerr<<"TPC version "<<ver<<" has been found !\n";
 
-   AliTPCParamSR *digp=(AliTPCParamSR*)file->Get("75x40_100x60");
-   if(digp){
-    cerr<<"2 pad-lenght geom hits with 3 pad-length geom digits...\n";
-    delete digp;
-    digp = new AliTPCParamSR();
-   }
-   else
-   {
-     digp =(AliTPCParamSR *)gDirectory->Get("75x40_100x60_150x60");
-   }
+    AliTPCParamSR *digp=(AliTPCParamSR*)file->Get("75x40_100x60");
+    if(digp){
+     cerr<<"2 pad-lenght geom hits with 3 pad-length geom digits...\n";
+     delete digp;
+     digp = new AliTPCParamSR();
+    }
+    else
+    {
+      digp =(AliTPCParamSR *)gDirectory->Get("75x40_100x60_150x60");
+    }
    if (!digp) { cerr<<"TPC parameters have not been found !\n"; exit(6); }
    TPC->SetParam(digp);
 
+   
+
    Int_t nrow_up=digp->GetNRowUp();
    Int_t nrows=digp->GetNRowLow()+nrow_up;
    Int_t zero=digp->GetZeroSup();
@@ -425,8 +426,15 @@ Int_t good_tracks_tpc(GoodTrackTPC *gt, const Int_t max, const Int_t event) {
 
       Int_t j=p->GetFirstMother();
       if (j>=0) {
-         TParticle *pp = (TParticle*)gAlice->Particle(j);
-         if (pp->GetFirstMother()>=0) continue;//only one decay is allowed
+        TParticle *pp = (TParticle*)gAlice->Particle(j);
+        if (pp->GetFirstMother()>=0) continue;//only one decay is allowed
+       /*  for cascade hyperons only
+        Int_t jj=pp->GetFirstMother();
+        if (jj>=0) {
+          TParticle *ppp = (TParticle*)gAlice->Particle(jj);
+          if (ppp->GetFirstMother()>=0) continue;//two decays are allowed
+        }
+       */
       }
 
       gt[nt].lab=i;
index ac67f3f..746bdd9 100644 (file)
@@ -22,7 +22,8 @@ Int_t AliTPCPropagateBack() {
    if (!file->IsOpen()) {
       cerr<<"Can't open AliTPCclusters.root !\n";return 3;
    }
-   AliTPCParam *param=(AliTPCParam*)file->Get("75x40_100x60");
+   AliTPCParam *param=(AliTPCParam*)file->Get("75x40_100x60_150x60");
+   if (!param) {cerr<<"Can't get TPC parameters !\n"; return 4;}
 
    TStopwatch timer;
    AliTPCtracker *tracker=new AliTPCtracker(param);
index b2fc940..cef7ab5 100644 (file)
@@ -121,8 +121,10 @@ Int_t AliTPCtrack::Compare(const TObject *o) const {
   // This function compares tracks according to the their curvature
   //-----------------------------------------------------------------
   AliTPCtrack *t=(AliTPCtrack*)o;
-  Double_t co=TMath::Abs(t->Get1Pt());
-  Double_t c =TMath::Abs(Get1Pt());
+  //Double_t co=TMath::Abs(t->Get1Pt());
+  //Double_t c =TMath::Abs(Get1Pt());
+  Double_t co=t->GetSigmaY2()*t->GetSigmaZ2();
+  Double_t c =GetSigmaY2()*GetSigmaZ2();
   if (c>co) return 1;
   else if (c<co) return -1;
   return 0;
@@ -224,8 +226,8 @@ Int_t AliTPCtrack::PropagateTo(Double_t xk,Double_t x0,Double_t rho) {
   Double_t d=sqrt((x1-fX)*(x1-fX)+(y1-fP0)*(y1-fP0)+(z1-fP1)*(z1-fP1));
   Double_t p2=(1.+ GetTgl()*GetTgl())/(Get1Pt()*Get1Pt());
   Double_t beta2=p2/(p2 + GetMass()*GetMass());
-  Double_t theta2=14.1*14.1/(beta2*p2*1e6)*d/x0*rho;
-  //Double_t theta2=1.0259e-6*10*10/20/(beta2*p2)*d*rho;
+  //Double_t theta2=14.1*14.1/(beta2*p2*1e6)*d/x0*rho;
+  Double_t theta2=1.0259e-6*10*10/20/(beta2*p2)*d*rho;
 
   Double_t ey=fP4*fX - fP2, ez=fP3;
   Double_t xz=fP4*ez, zz1=ez*ez+1, xy=fP2+ey;
index 8139b09..bd0e52f 100644 (file)
@@ -50,7 +50,8 @@ public:
   Double_t GetY()   const {return fP0;}
   Double_t GetZ()   const {return fP1;}
   Double_t GetSnp() const {return fX*fP4 - fP2;}             
-  Double_t Get1Pt() const {return fP4*GetConvConst();}             
+  Double_t 
+    Get1Pt() const { return (1e-9*TMath::Abs(fP4)/fP4 + fP4)*GetConvConst(); }
   Double_t GetTgl() const {return fP3;}
 
   Double_t GetSigmaY2() const {return fC00;}
index e101184..f99e8ea 100644 (file)
 
 /*
 $Log$
+Revision 1.18  2002/05/13 07:33:52  kowal2
+Added protection in Int_t AliTPCtracker::AliTPCRow::Find(Double_t y) const
+in the case of defined region of interests.
+
 Revision 1.17  2002/03/18 17:59:13  kowal2
 Chnges in the pad geometry - 3 pad lengths introduced.
 
@@ -353,7 +357,8 @@ Int_t AliTPCtracker::FollowProlongation(AliTPCseed& t, Int_t rf) {
     }
     if (cl) {
       Float_t l=fSectors->GetPadPitchWidth();
-      t.SetSampledEdx(cl->GetQ()/l,t.GetNumberOfClusters());
+      Float_t corr=1.; if (nr>63) corr=0.67; // new (third) pad response !
+      t.SetSampledEdx(cl->GetQ()/l*corr,t.GetNumberOfClusters());
       if (!t.Update(cl,maxchi2,index)) {
          if (!tryAgain--) return 0;
       } else tryAgain=kSKIP;
@@ -460,7 +465,8 @@ Int_t AliTPCtracker::FollowBackProlongation
 
     if (cl) {
       Float_t l=fSectors->GetPadPitchWidth();
-      seed.SetSampledEdx(cl->GetQ()/l,seed.GetNumberOfClusters());
+      Float_t corr=1.; if (i>63) corr=0.67; // new (third) pad response !
+      seed.SetSampledEdx(cl->GetQ()/l*corr,seed.GetNumberOfClusters());
       seed.Update(cl,maxchi2,index);
     }
 
@@ -537,7 +543,8 @@ void AliTPCtracker::MakeSeeds(Int_t i1, Int_t i2) {
 
         Double_t sy1=kr1[is]->GetSigmaY2(), sz1=kr1[is]->GetSigmaZ2();
         Double_t sy2=kcl->GetSigmaY2(),     sz2=kcl->GetSigmaZ2();
-       Double_t sy3=400*3./12., sy=0.1, sz=0.1;
+       //Double_t sy3=400*3./12., sy=0.1, sz=0.1;
+        Double_t sy3=25000*x[4]*x[4]+0.1, sy=0.1, sz=0.1;
 
        Double_t f40=(f1(x1,y1+sy,x2,y2,x3,y3)-x[4])/sy;
        Double_t f42=(f1(x1,y1,x2,y2+sy,x3,y3)-x[4])/sy;
@@ -922,7 +929,8 @@ void AliTPCtracker::AliTPCSector::Setup(const AliTPCParam *par, Int_t f) {
      fAlpha=par->GetInnerAngle();
      fAlphaShift=par->GetInnerAngleShift();
      fPadPitchWidth=par->GetInnerPadPitchWidth();
-     fPadPitchLength=par->GetInnerPadPitchLength();
+     f1PadPitchLength=par->GetInnerPadPitchLength();
+     f2PadPitchLength=f1PadPitchLength;
 
      fN=par->GetNRowLow();
      fRow=new AliTPCRow[fN];
@@ -1002,14 +1010,15 @@ void AliTPCtracker::AliTPCseed::CookdEdx(Double_t low, Double_t up) {
   //Very rough PID
   Double_t p=TMath::Sqrt((1.+ GetTgl()*GetTgl())/(Get1Pt()*Get1Pt()));
 
+  Double_t log1=TMath::Log(p+0.45), log2=TMath::Log(p+0.12);
   if (p<0.6) {
-    if (dedx < 39.+ 12./(p+0.25)/(p+0.25)) { SetMass(0.13957); return;}
-    if (dedx < 39.+ 12./p/p) { SetMass(0.49368); return;}
+    if (dedx < 34 + 30/(p+0.45)/(p+0.45) + 24*log1) {SetMass(0.13957); return;}
+    if (dedx < 34 + 30/(p+0.12)/(p+0.12) + 24*log2) {SetMass(0.49368); return;}
     SetMass(0.93827); return;
   }
 
   if (p<1.2) {
-    if (dedx < 39.+ 12./(p+0.25)/(p+0.25)) { SetMass(0.13957); return;}
+    if (dedx < 34 + 30/(p+0.12)/(p+0.12) + 24*log2) {SetMass(0.13957); return;}
     SetMass(0.93827); return;
   }
 
index 1483c49..3ed995a 100644 (file)
@@ -86,7 +86,7 @@ public:
         if (x > r) return fN;
         r=fRow[0].GetX();
         if (x < r) return -1;
-        return Int_t((x-r)/fPadPitchLength + 0.5);}
+        return Int_t((x-r)/f1PadPitchLength + 0.5);}
        else{   
           r=fRow[fN-1].GetX();
           if (x > r) return fN;
@@ -100,7 +100,6 @@ public:
        }
      }
      Double_t GetPadPitchWidth()  const {return fPadPitchWidth;}
-     Double_t GetPadPitchLength() const {return fPadPitchLength;}
 
    private:
      Int_t fN;                        //number of pad rows 
@@ -108,9 +107,8 @@ public:
      Double_t fAlpha;                    //opening angle
      Double_t fAlphaShift;               //shift angle;
      Double_t fPadPitchWidth;            //pad pitch width
-     Double_t fPadPitchLength;           //pad pitch length 
-     Double_t f1PadPitchLength;           //pad pitch length
-     Double_t f2PadPitchLength;   
+     Double_t f1PadPitchLength;          //pad pitch length
+     Double_t f2PadPitchLength;          //pad pitch length
    private:
      AliTPCSector(const AliTPCSector &s);           //dummy copy contructor
      AliTPCSector& operator=(const AliTPCSector &s);//dummy assignment operator