Modifications to ITS standalone tracker: 1) improve efficiency at low pt for p-p...
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Feb 2009 15:15:02 +0000 (15:15 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Feb 2009 15:15:02 +0000 (15:15 +0000)
ITS/AliITSRecoParam.cxx
ITS/AliITSRecoParam.h
ITS/AliITStrackerSA.cxx
ITS/AliITStrackerSA.h

index d9db788..176bbde 100644 (file)
@@ -132,6 +132,7 @@ fMinPhiSA(0.002),
 fMaxPhiSA(0.0145),
 fMinLambdaSA(0.003),
 fMaxLambdaSA(0.008),
+fMinClusterChargeSA(0.),
 fSAOnePointTracks(kFALSE),
 fSAUseAllClusters(kFALSE),
 fFindV0s(kTRUE),
@@ -369,8 +370,9 @@ AliITSRecoParam *AliITSRecoParam::GetLowFluxParam()
   param->fSigmaXDeadZoneHit2 = 0.004/12.;
   param->fSigmaZDeadZoneHit2 = 0.001/12.;
   param->fXPassDeadZoneHits = 0.018;
-  param->SetNLoopsSA(10);
-
+  param->SetNLoopsSA(20);
+  param->fMaxPhiSA = 0.07;
+  param->fMaxLambdaSA = 0.04;
   return param;
 }
 //_____________________________________________________________________________
index f45ae19..0c3c562 100644 (file)
@@ -244,7 +244,9 @@ class AliITSRecoParam : public AliDetectorRecoParam
   }
   Double_t GetMinLambdaSA() const {return fMinLambdaSA;}
   Double_t GetMaxLambdaSA() const {return fMaxLambdaSA;}
-
+  
+  void   SetSAMinClusterCharge(Float_t minq=0.) {fMinClusterChargeSA=minq;}
+  Float_t GetSAMinClusterCharge() const {return fMinClusterChargeSA;}
 
   void   SetSAOnePointTracks() { fSAOnePointTracks=kTRUE; return; }
   Bool_t GetSAOnePointTracks() const { return fSAOnePointTracks; }
@@ -439,7 +441,7 @@ class AliITSRecoParam : public AliDetectorRecoParam
   Double_t fMaxPhiSA;               // maximum phi value for SA windows
   Double_t fMinLambdaSA;            // minimum lambda value for SA windows
   Double_t fMaxLambdaSA;            // maximum lambda value for SA windows
-
+  Float_t  fMinClusterChargeSA;     // minimum SDD,SSD cluster charge for SA tarcker
   Bool_t fSAOnePointTracks; // one-cluster tracks in SA (only for cosmics!)
   Bool_t fSAUseAllClusters; // do not skip clusters used by MI (same track twice in AliESDEvent!)
 
@@ -461,7 +463,7 @@ class AliITSRecoParam : public AliDetectorRecoParam
   Float_t fTrackleterZetaOverlapCut;               // Fiducial window in eta for overlap cut
   Bool_t fUseCosmicRunShiftsSSD; // SSD time shifts for cosmic run 2007/2008 (use for data taken up to 18 sept 2008)
 
-  ClassDef(AliITSRecoParam,13) // ITS reco parameters
+  ClassDef(AliITSRecoParam,14) // ITS reco parameters
 };
 
 #endif
index 8fe1c94..b78b1a3 100644 (file)
@@ -62,6 +62,7 @@ fListOfSATracks(0),
 fITSclusters(0),
 fSixPoints(0),
 fOuterStartLayer(0),
+fMinQ(0.),
 fCluLayer(0),
 fCluCoord(0){
   // Default constructor
@@ -87,6 +88,7 @@ fListOfSATracks(0),
 fITSclusters(0),
 fSixPoints(0),
 fOuterStartLayer(0),
+fMinQ(0.),
 fCluLayer(0),
 fCluCoord(0) 
 {
@@ -119,6 +121,7 @@ fListOfSATracks(0),
 fITSclusters(0),
 fSixPoints(0),
 fOuterStartLayer(0),
+fMinQ(0.),
 fCluLayer(0),
 fCluCoord(0)
 {
@@ -149,6 +152,7 @@ fListOfSATracks(0),
 fITSclusters(0),
 fSixPoints(0),
 fOuterStartLayer(0),
+fMinQ(0.),
 fCluLayer(0),
 fCluCoord(0)
 {
@@ -180,6 +184,7 @@ fListOfSATracks(tracker.fListOfSATracks),
 fITSclusters(tracker.fITSclusters),
 fSixPoints(tracker.fSixPoints),
 fOuterStartLayer(tracker.fOuterStartLayer),
+fMinQ(tracker.fMinQ),
 fCluLayer(tracker.fCluLayer),
 fCluCoord(tracker.fCluCoord) {
   // Copy constructor
@@ -289,6 +294,7 @@ void AliITStrackerSA::Init(){
       Double_t lambmax=AliITSReconstructor::GetRecoParam()->GetMaxLambdaSA();
       SetCalculatedWindowSizes(nLoops,phimin,phimax,lambmin,lambmax);
     }
+    fMinQ=AliITSReconstructor::GetRecoParam()->GetSAMinClusterCharge();
     fITSclusters = 0;
     SetSixPoints();
     SetOuterStartLayer(0);
@@ -364,6 +370,7 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){
        AliITSRecPoint* cls = (AliITSRecPoint*)layer.GetCluster(cli);
        if(cls->TestBit(kSAflag)==kTRUE) continue; //clusters used by TPC prol.
        if(cls->GetQ()==0) continue; //fake clusters dead zones
+       if(i>1 && cls->GetQ()<=fMinQ) continue; // cut on SDD and SSD cluster charge
        nclusters[i]++;
       }
     }
@@ -383,6 +390,7 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){
        AliITSRecPoint* cls = (AliITSRecPoint*)layer.GetCluster(cli);
        if(cls->TestBit(kSAflag)==kTRUE) continue;
        if(cls->GetQ()==0) continue;
+       if(ilay>1 && cls->GetQ()<=fMinQ) continue; 
        Double_t phi=0;Double_t lambda=0;
        Float_t x=0;Float_t y=0;Float_t z=0;
        Float_t sx=0;Float_t sy=0;Float_t sz=0;
@@ -422,11 +430,10 @@ Int_t AliITStrackerSA::FindTracks(AliESDEvent* event){
       
        if(!cl) continue;
        if (cl->GetQ()<=0) continue;
-      
+
        AliITSclusterTable* arr = (AliITSclusterTable*)GetClusterCoord(0,ncl); 
        fPhic = arr->GetPhi();
        fLambdac = arr->GetLambda();
-       if (TMath::Abs(fLambdac)>0.26*TMath::Pi()) continue;
        fPhiEstimate = fPhic;
        AliITStrackSA* trs = new AliITStrackSA(); 
        fPoint1[0]=primaryVertex[0];
@@ -1040,6 +1047,7 @@ Int_t AliITStrackerSA::SearchClusters(Int_t layer,Double_t phiwindow,Double_t la
     AliITSRecPoint *c = (AliITSRecPoint*)fCluLayer[layer]->At(index);
     if (!c) continue;
     if (c->GetQ()<=0) continue;
+    if(layer>1 && c->GetQ()<=fMinQ) continue;
     
      AliITSclusterTable* arr = (AliITSclusterTable*)GetClusterCoord(layer,index);
      Double_t phi = arr->GetPhi();
index cb00378..7ad9e98 100644 (file)
@@ -57,6 +57,7 @@ class AliITStrackerSA : public AliITStrackerMI {
   void SetFixedWindowSizes(Int_t n=46, Double_t *phi=0, Double_t *lam=0);
   void SetCalculatedWindowSizes(Int_t n=10, Float_t phimin=0.002, Float_t phimax=0.0145, Float_t lambdamin=0.003, Float_t lambdamax=0.008);
 
+  void SetMinimumChargeSDDSSD(Float_t minq=0.){fMinQ=minq;}
   enum {kSAflag=0x8000}; //flag to mark clusters used in the SA tracker
 
  protected:
@@ -114,11 +115,12 @@ class AliITStrackerSA : public AliITStrackerMI {
   TTree *fITSclusters;        //! pointer to ITS tree of clusters
   Bool_t fSixPoints;          // If true 6/6 points are required (default). 5/6 otherwise
   Int_t fOuterStartLayer;     // Search for tracks with <6 points: outer layer to start from
+  Float_t fMinQ;              // lower cut on cluster charge (SDD and SSD)
 
   TClonesArray** fCluLayer; //! array with clusters 
   TClonesArray** fCluCoord; //! array with cluster info
 
-  ClassDef(AliITStrackerSA,7)
+  ClassDef(AliITStrackerSA,8)
 };
 
 #endif