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