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