]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSClusterFinderSSD.h
Correct material budget for tracks stopped at TRD (S.Arcelli)
[u/mrichter/AliRoot.git] / ITS / AliITSClusterFinderSSD.h
index e9edd9c2a9c9efc5b05376ea146ea3a03f47ce0d..2c0157d414153891921a519b7857eb846587c3d3 100644 (file)
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-
-#include <TObject.h>
-#include <TArrayS.h>
-#include <TClonesArray.h>
-#include <TRandom.h>
-#include <TMath.h>
-
-#include "AliITS.h"
-#include "AliITSclusterSSD.h"
-#include "AliITSpackageSSD.h"
+//#include <TMath.h>
 #include "AliITSClusterFinder.h"
-
-
-class AliITSClusterFinderSSD: public AliITSClusterFinder 
-{
-    
-public:       
-    
-  AliITSClusterFinderSSD(AliITSsegmentation *seg, TClonesArray *digits, TClonesArray *recp);
-               
-  virtual ~AliITSClusterFinderSSD();
-
-
-  void FindRawClusters();
-
-    
-  void SetAlpha1(Float_t a) {falpha1 =a;}
-  void SetAlpha2(Float_t a) {falpha2 =a;}
-  void SetAlpha3(Float_t a) {falpha3 =a;}
-
-
-
- protected:
-   
-  void      InitReconstruction();
-  Bool_t    CreateNewRecPoint(Float_t P, Float_t dP, Float_t N, Float_t dN,
-                              Float_t Sig,Float_t dSig,
-                              AliITSclusterSSD *clusterP, AliITSclusterSSD *clusterN,
-                              Stat_t prob);
-  Bool_t   CreateNewRecPoint(AliITSclusterSSD *clusterP, AliITSclusterSSD *clusterN, Stat_t prob);
-  
-  AliITSclusterSSD* GetPSideCluster(Int_t idx);
-  AliITSclusterSSD* GetNSideCluster(Int_t idx);
-  AliITSclusterSSD* GetCluster(Int_t idx, Bool_t side);
-
-
-  void      FindNeighbouringDigits();
-  void      SeparateOverlappedClusters();
-  void      SplitCluster(TArrayI *list, Int_t nsplits, Int_t index, Bool_t side);
-  Int_t     SortDigitsP(Int_t start, Int_t end);
-  Int_t     SortDigitsN(Int_t start, Int_t end);
-  void      FillDigitsIndex();
-  void      SortDigits();
-  void      FillClIndexArrays(Int_t* arrayP, Int_t *arrayN);
-  void      SortClusters(Int_t* arrayP, Int_t *arrayN);
-  Int_t     SortClustersP(Int_t start, Int_t end,Int_t *array);
-  Int_t     SortClustersN(Int_t start, Int_t end,Int_t *array);
-  void      ConsumeClusters();
-  void      ClustersToPackages();
-  void      PackagesToPoints();
-  void      ReconstructNotConsumedClusters();
-  Bool_t    Strip2Local( Float_t stripP, Float_t stripN, Float_t &Z,Float_t &X);
-  Float_t   GetClusterZ(AliITSclusterSSD* clust);
-  Bool_t    IsCrossing(AliITSclusterSSD* p, AliITSclusterSSD* n);
-  //returns index of best combination in "comb"
-  Int_t     GetBestComb(Int_t** comb,Int_t Ncomb, Int_t Ncl, AliITSpackageSSD * pkg);
-
-  //get point that have best signal ratio
-  void      GetBestMatchingPoint(Int_t & ip, Int_t & in, AliITSpackageSSD* pkg );                                      
-  
-  //calculates Distance To Perfect Matching Line
-  Float_t   DistToPML(Float_t psig, Float_t nsig){ return  (TMath::Abs( (7.0*nsig - 8.0*psig )/10.630146) );}
-  
-  
-  Int_t     GetDiff(Float_t *retx, Float_t *rety) {return 0;}
-  
-  void      CalcStepFactor(Float_t Psteo, Float_t Nsteo );
-  
-/*************************************************/
-/**  methods for resolving packages           ****/
-/*************************************************/ 
-//names may not be meaningful for all, see implementations for descriptions
-
-  void      ResolveSimplePackage(AliITSpackageSSD *pkg);
-  void      ResolvePackageWithOnePSideCluster(AliITSpackageSSD *pkg);
-  void      ResolvePackageWithOneNSideCluster(AliITSpackageSSD *pkg);
-  void      ResolveTwoForTwoPackage(AliITSpackageSSD *pkg);
-
-  void      ResolveClusterWithOneCross(AliITSpackageSSD *pkg,
-                                  Int_t clusterIndex, Bool_t clusterSide);
-
-  void      ResolvePClusterWithOneCross(AliITSpackageSSD *pkg, Int_t clusterIndex);
-  void      ResolveNClusterWithOneCross(AliITSpackageSSD *pkg, Int_t clusterIndex);
-  Bool_t    ResolvePackageBestCombin(AliITSpackageSSD *pkg);
-  void      ResolveOneBestMatchingPoint(AliITSpackageSSD *pkg);
-
-  Bool_t GetCrossing(Float_t &x, Float_t &z);     //x, y of strips crossing
-  void   GetCrossingError(Float_t&, Float_t&);    //x, y of strips crossing errors
-
-  // Data memebers
-
-  AliITS             *fITS;         //Pointer to AliITS object
-  TClonesArray       *fDigits;      //Pointer to TClonesArray of digits
-
-  TClonesArray       *fRecPoints;   //Pointer to TClonesArray of rec points
-  
-       
-  TClonesArray    *fClusterP;    //
-  Int_t            fNClusterP;   //Number of P side clusters in the array
-               
-  TClonesArray    *fClusterN;    //Number of N side clusters in the array
-  Int_t            fNClusterN; 
-    
-  TClonesArray    *fPackages;    //packages  
-  Int_t            fNPackages;
-    
-  TArrayI         *fDigitsIndexP;       //Digits on P side
-  Int_t            fNDigitsP;           //Number of Digits on P side
-               
-  TArrayI         *fDigitsIndexN;       //Digits on N side
-  Int_t            fNDigitsN;           //Number of Digits on N side
-
-
-  Float_t          fPitch;              //Strip pitch
-  Float_t          fTanP;               //Pside stereo angle tangent
-  Float_t          fTanN;               //Nside stereo angle tangent
+//#include "AliITSsegmentationSSD.h"
+
+class TArrayI;
+class AliITSclusterSSD;
+class AliITSpackageSSD;
+class AliITSsegmentation;
+class AliITSsegmentationSSD;
+class AliITSresponse;
+class AliITSresponseSSD;
+
+class AliITSClusterFinderSSD: public AliITSClusterFinder{
+  public:
+    AliITSClusterFinderSSD();
+    AliITSClusterFinderSSD(AliITSsegmentation *seg,AliITSresponse *resp);
+    AliITSClusterFinderSSD(AliITSsegmentation *seg, TClonesArray *digits);
+    virtual ~AliITSClusterFinderSSD();
+    void FindRawClusters(Int_t module);
+
+  protected:
+    virtual AliITSresponseSSD* GetResp()const{
+        return (AliITSresponseSSD*) GetResponse();}//Return Response
+    //Returns fSegmentation
+    virtual AliITSsegmentationSSD* GetSeg()const{
+        return (AliITSsegmentationSSD*)GetSegmentation();} 
+    void      InitReconstruction();
+    Bool_t    CreateNewRecPoint(Double_t P,Double_t dP,Double_t N,Double_t dN,
+                                Double_t Sig,Double_t dSig,
+                                AliITSclusterSSD *clusterP,
+                                AliITSclusterSSD *clusterN,Stat_t prob);
+    AliITSclusterSSD* GetPSideCluster(Int_t idx);
+    AliITSclusterSSD* GetNSideCluster(Int_t idx);
+    AliITSclusterSSD* GetCluster(Int_t idx, Bool_t side){
+    return (side) ? GetPSideCluster(idx) : GetNSideCluster(idx);};
+    void   FindNeighbouringDigits();
+    void   SeparateOverlappedClusters();
+    void   SplitCluster(TArrayI *list,Int_t nsplits,Int_t indx,Bool_t side);
+    Int_t  SortDigitsP(Int_t start, Int_t end);
+    Int_t  SortDigitsN(Int_t start, Int_t end);
+    void   FillDigitsIndex();
+    void   SortDigits();
+    void   FillClIndexArrays(Int_t* arrayP, Int_t *arrayN) const;
+    void   SortClusters(Int_t* arrayP, Int_t *arrayN);
+    Int_t  SortClustersP(Int_t start, Int_t end,Int_t *array);
+    Int_t  SortClustersN(Int_t start, Int_t end,Int_t *array);
+    void   ClustersToPackages();
+    Int_t  GetDiff(Double_t */*retx*/, Double_t */*rety*/) const {return 0;}
+    void   CalcStepFactor(Double_t Psteo, Double_t Nsteo );
+    Bool_t GetCrossing(Double_t &x, Double_t &z); //x, y of strips crossing
+    //x, y of strips crossing err.
+    void   GetCrossingError(Double_t& dp, Double_t& dn);
+
+    // Data memebers
+    AliITS          *fITS;           //!Pointer to AliITS object
+    TClonesArray    *fClusterP;      //!
+    Int_t            fNClusterP;     //!Number of P side clusters in the array
+    TClonesArray    *fClusterN;      //!Number of N side clusters in the array
+    Int_t            fNClusterN;     //!
+    TClonesArray    *fPackages;      //!packages  
+    Int_t            fNPackages;     //!
+    TArrayI         *fDigitsIndexP;  //!Digits on P side
+    Int_t            fNDigitsP;      //!Number of Digits on P side
+    TArrayI         *fDigitsIndexN;  //!Digits on N side
+    Int_t            fNDigitsN;      //!Number of Digits on N side
+
+    Double_t          fPitch;         //!Strip pitch
+    Double_t          fTanP;          //!Pside stereo angle tangent
+    Double_t          fTanN;          //!Nside stereo angle tangent
 
 /*************************************************/
 /**  parameters for reconstruction            ****/
 /**  to be tune when slow simulation raliable ****/
-/*************************************************/ 
-  
-  Float_t falpha1; 
-  Float_t falpha2;
-  Float_t falpha3;
+/*************************************************/
 
+    //Double_t fAlpha1;         //!
+    //Double_t fAlpha2;         //!
+    //Double_t fAlpha3;         //!
+    Double_t fPNsignalRatio;  //!
     
-  static const Bool_t SIDEP=kTRUE;
-  static const Bool_t SIDEN=kFALSE;
-  static const Float_t PNsignalRatio = 7./8.;
-  Int_t fSFF;              //forward stepping factor 
-  Int_t fSFB;              //backward stepping factor 
+    static const Bool_t fgkSIDEP;  //!
+    static const Bool_t fgkSIDEN;  //!
+
+    Int_t fSFF;              //!forward stepping factor 
+    Int_t fSFB;              //!backward stepping factor 
 
-public:
-    ClassDef(AliITSClusterFinderSSD, 1) //Class for clustering and reconstruction of space points in SSDs 
+    ClassDef(AliITSClusterFinderSSD,1) //Class for clustering and reconstruction of space points in SSDs 
 
 };