Gap between paderow used for seeding as parameter in AliTPCRecoParam
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Jun 2010 17:35:57 +0000 (17:35 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 15 Jun 2010 17:35:57 +0000 (17:35 +0000)
(Marian)

Some theoretical consideration:

The track seeding efficiency depends on the cluster finder efficiency - ceff.
ceff is dEdx dependent, in mean is about 0.8 for MIP is about 0.75
The probability to find a seed=
pseed = ceff^3
Probability to find a track in nseedings
ptrack = (1-(1-pseed)^nseeding)

nseedin = npadrows/gap.
Until now we were seeding in outer sectors with gap 6 and 10 pad-rows (r dependent).

For tracks crossing the full TPC the track finding efficiency is
( you can draw it using TF1 f1("f1","(1-(1-0.75**3)**((160.-64.)/x))",1,10))
99.5% once the gap 10 pad rows is used.

For short tracks = kink decays e.g 30 cm from the end of TPC it is about 65% for gap 10 pad-rows, 85% for 5 gap 5 and 95% for gap 3 pad-rows.
(see function
TF1 f1("f1","(1-(1-0.75**3)**((20.)/x))",1,10))

TPC/AliTPCRecoParam.cxx
TPC/AliTPCRecoParam.h
TPC/AliTPCtrackerMI.cxx

index 16cc47f..3b3ff07 100644 (file)
@@ -83,6 +83,8 @@ AliTPCRecoParam::AliTPCRecoParam():
   fMinUpDownCutSigma(8.),
   fMaxC(0.3),
   fBSpecialSeeding(kFALSE),
+  fSeedGapPrim(6),
+  fSeedGapSec(6),
   fBKinkFinder(kTRUE),
   fLastSeedRowSec(120),
   fUseFieldCorrection(2),      // use field correction
index 93d2588..793a578 100644 (file)
@@ -57,10 +57,14 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   void SetMinUpDownCutSigma(Float_t th)    {   fMinUpDownCutSigma=th;}  // minimal amplitude up-down - TRF 
   //
   Int_t    GetLastSeedRowSec()       const  { return fLastSeedRowSec;} 
+  Int_t    GetSeedGapPrim()        const  { return fSeedGapPrim;} 
+  Int_t    GetSeedGapSec()         const  { return fSeedGapSec;} 
   void     SetDoKinks(Bool_t on)   { fBKinkFinder=on; }
   Bool_t   GetDoKinks() const      { return fBKinkFinder;}
   Double_t GetKinkAngleCutChi2(Int_t index) const {return fKinkAngleCutChi2[index];}
   void     SetKinkAngleCutChi2(Int_t index,Double_t value) {fKinkAngleCutChi2[index]=value;}
+  void     SetSeedGapPrim(Int_t seedGapPrim)         { fSeedGapPrim = seedGapPrim;} 
+  void     SetSeedGapSec(Int_t seedGapSec)          { fSeedGapSec  = seedGapSec;} 
   Float_t  GetMaxC()    const      { return fMaxC;}
   Bool_t   GetSpecialSeeding() const { return fBSpecialSeeding;}
   //
@@ -141,6 +145,9 @@ class AliTPCRecoParam : public AliDetectorRecoParam
   Bool_t   fBKinkFinder;       // do kink finder reconstruction
   Double_t fKinkAngleCutChi2[2];   // angular cut for kinks
   Int_t    fLastSeedRowSec;     // Most Inner Row to make seeding for secondaries
+  Int_t    fSeedGapPrim;   // seeding gap for primary tracks
+  Int_t    fSeedGapSec;   // seeding gap for secondary tracks
+
   //
   // Correction switches
   //
@@ -171,7 +178,7 @@ public:
                                       // to be switched off for pass 0 reconstruction
                                       // Use static function, other option will be to use 
                                       // additional specific storage ?
-  ClassDef(AliTPCRecoParam, 10)
+  ClassDef(AliTPCRecoParam, 11)
 };
 
 
index 7611168..8597f9a 100644 (file)
@@ -6309,6 +6309,9 @@ TObjArray * AliTPCtrackerMI::Tracking()
 
   TObjArray * seeds = new TObjArray;
   TObjArray * arr=0;
+  Int_t fLastSeedRowSec=AliTPCReconstructor::GetRecoParam()->GetLastSeedRowSec();
+  Int_t gapPrim = AliTPCReconstructor::GetRecoParam()->GetSeedGapPrim();
+  Int_t gapSec = AliTPCReconstructor::GetRecoParam()->GetSeedGapSec();
   
   Int_t gap =20;
   Float_t cuts[4];
@@ -6322,7 +6325,7 @@ TObjArray * AliTPCtrackerMI::Tracking()
   //  
   //find primaries  
   cuts[0]=0.0066;
-  for (Int_t delta = 0; delta<18; delta+=6){
+  for (Int_t delta = 0; delta<18; delta+=gapPrim){
     //
     cuts[0]=0.0070;
     cuts[1] = 1.5;
@@ -6347,7 +6350,7 @@ TObjArray * AliTPCtrackerMI::Tracking()
 
   //find primaries  
   cuts[0]=0.0077;
-  for (Int_t delta = 20; delta<120; delta+=10){
+  for (Int_t delta = 20; delta<120; delta+=gapPrim){
     //
     // seed high pt tracks
     cuts[0]=0.0060;
@@ -6400,9 +6403,22 @@ TObjArray * AliTPCtrackerMI::Tracking()
   SumTracks(seeds,arr);   
   SignClusters(seeds,fnumber,fdensity);   
   //
+  arr = Tracking(4,nup-5,nup-5-gap,cuts,-1);
+  SumTracks(seeds,arr);   
+  SignClusters(seeds,fnumber,fdensity);   
+  //
+  arr = Tracking(4,nup-7,nup-7-gap,cuts,-1);
+  SumTracks(seeds,arr);   
+  SignClusters(seeds,fnumber,fdensity);   
+  //
+  //
+  arr = Tracking(4,nup-9,nup-9-gap,cuts,-1);
+  SumTracks(seeds,arr);   
+  SignClusters(seeds,fnumber,fdensity);   
+  //
 
 
-  for (Int_t delta = 3; delta<30; delta+=5){
+  for (Int_t delta = 9; delta<30; delta+=gapSec){
     //
     cuts[0] = 0.3;
     cuts[1] = 1.5;
@@ -6425,10 +6441,9 @@ TObjArray * AliTPCtrackerMI::Tracking()
   fdensity = 2.;
   cuts[0]=0.0080;
 
-  Int_t fLastSeedRowSec=AliTPCReconstructor::GetRecoParam()->GetLastSeedRowSec();
 
   // find secondaries
-  for (Int_t delta = 30; delta<fLastSeedRowSec; delta+=10){
+  for (Int_t delta = 30; delta<fLastSeedRowSec; delta+=gapSec){
     //
     cuts[0] = 0.3;
     cuts[1] = 3.5;