Updated version from B. Batyunya and E. Fragiacomo
[u/mrichter/AliRoot.git] / ITS / AliITSClusterFinderSSD.h
1 #ifndef ALIITSCLUSTERFINDERSSD_H
2 #define ALIITSCLUSTERFINDERSSD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 #include <TMath.h>
7 #include "AliITSClusterFinder.h"
8 #include "AliITSsegmentationSSD.h"
9
10 class TArrayI;
11 class AliITSclusterSSD;
12 class AliITSpackageSSD;
13
14 class AliITSClusterFinderSSD: public AliITSClusterFinder 
15 {
16     
17 public:       
18     
19   AliITSClusterFinderSSD(AliITSsegmentation *seg, TClonesArray *digits);
20                 
21   virtual ~AliITSClusterFinderSSD();
22
23   void FindRawClusters(Int_t module);    
24
25  protected:
26    
27   void      InitReconstruction();
28   Bool_t    CreateNewRecPoint(Float_t P, Float_t dP, Float_t N, Float_t dN,
29                               Float_t Sig,Float_t dSig,
30                               AliITSclusterSSD *clusterP, AliITSclusterSSD *clusterN,
31                               Stat_t prob);
32   
33   AliITSclusterSSD* GetPSideCluster(Int_t idx);
34   AliITSclusterSSD* GetNSideCluster(Int_t idx);
35   AliITSclusterSSD* GetCluster(Int_t idx, Bool_t side);
36
37   void      FindNeighbouringDigits();
38   void      SeparateOverlappedClusters();
39   void      SplitCluster(TArrayI *list, Int_t nsplits, Int_t index, Bool_t side);
40   Int_t     SortDigitsP(Int_t start, Int_t end);
41   Int_t     SortDigitsN(Int_t start, Int_t end);
42   void      FillDigitsIndex();
43   void      SortDigits();
44   void      FillClIndexArrays(Int_t* arrayP, Int_t *arrayN);
45   void      SortClusters(Int_t* arrayP, Int_t *arrayN);
46   Int_t     SortClustersP(Int_t start, Int_t end,Int_t *array);
47   Int_t     SortClustersN(Int_t start, Int_t end,Int_t *array);
48   void      ClustersToPackages();
49   
50   Int_t     GetDiff(Float_t *retx, Float_t *rety) {return 0;}
51   
52   void      CalcStepFactor(Float_t Psteo, Float_t Nsteo );
53   
54   Bool_t GetCrossing(Float_t &x, Float_t &z);     //x, y of strips crossing
55   void   GetCrossingError(Float_t&, Float_t&);    //x, y of strips crossing errors
56
57   // Data memebers
58
59   AliITS          *fITS;          //!Pointer to AliITS object
60
61   TClonesArray    *fClusterP;     //!
62   Int_t            fNClusterP;    //!Number of P side clusters in the array
63                 
64   TClonesArray    *fClusterN;     //!Number of N side clusters in the array
65   Int_t            fNClusterN;    //!
66     
67   TClonesArray    *fPackages;     //!packages  
68   Int_t            fNPackages;    //!
69     
70   TArrayI         *fDigitsIndexP; //!Digits on P side
71   Int_t            fNDigitsP;      //!Number of Digits on P side
72                 
73   TArrayI         *fDigitsIndexN;  //!Digits on N side
74   Int_t            fNDigitsN;      //!Number of Digits on N side
75
76
77   Float_t          fPitch;         //!Strip pitch
78   Float_t          fTanP;          //!Pside stereo angle tangent
79   Float_t          fTanN;          //!Nside stereo angle tangent
80
81 /*************************************************/
82 /**  parameters for reconstruction            ****/
83 /**  to be tune when slow simulation raliable ****/
84 /*************************************************/ 
85   
86   //Float_t fAlpha1;         //!
87   //Float_t fAlpha2;         //!
88   //Float_t fAlpha3;         //!
89   Float_t fPNsignalRatio;  //!
90
91     
92   static const Bool_t fgkSIDEP;  //!
93   static const Bool_t fgkSIDEN;  //!
94
95
96   Int_t fSFF;              //!forward stepping factor 
97   Int_t fSFB;              //!backward stepping factor 
98
99 public:
100     ClassDef(AliITSClusterFinderSSD, 1) //Class for clustering and reconstruction of space points in SSDs 
101
102 };
103
104
105 #endif