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