X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSClusterFinderSSD.h;h=9fbfe080ed3cb50d885801ac87f574040f47bbf6;hb=8e50d897557aadaff83f0809747a23e28dfab8ca;hp=2413622c6121e0f1eca1b4df838fabaf5d000bf1;hpb=46019b87db59a8fc51846d64d0169ddea91dde4d;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSClusterFinderSSD.h b/ITS/AliITSClusterFinderSSD.h index 2413622c612..9fbfe080ed3 100644 --- a/ITS/AliITSClusterFinderSSD.h +++ b/ITS/AliITSClusterFinderSSD.h @@ -2,152 +2,100 @@ #define ALIITSCLUSTERFINDERSSD_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ - - -#include -#include -#include - -//#include "AliITSclusterSSD.h" -//#include "AliITSpackageSSD.h" +///////////////////////////////////////////////////////////////////////////// +// SSD Cluster Finder // +// // +///////////////////////////////////////////////////////////////////////////// +//#include #include "AliITSClusterFinder.h" +//#include "AliITSsegmentationSSD.h" + +#include "AliITSDetTypeRec.h" +class TArrayI; class AliITSclusterSSD; class AliITSpackageSSD; - - -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 *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 +class AliITSsegmentation; +class AliITSsegmentationSSD; +class AliITSresponse; +class AliITSresponseSSD; + +class AliITSClusterFinderSSD: public AliITSClusterFinder{ + public: + AliITSClusterFinderSSD(); + AliITSClusterFinderSSD(AliITSDetTypeRec* dettyp); + AliITSClusterFinderSSD(AliITSDetTypeRec* dettyp, TClonesArray *digits); + virtual ~AliITSClusterFinderSSD(); + void FindRawClusters(Int_t module); + + protected: + // copy constructor + AliITSClusterFinderSSD(const AliITSClusterFinderSSD &source); + // assignment operator + AliITSClusterFinderSSD& operator=(const AliITSClusterFinderSSD &source); + //Returns fSegmentation + virtual AliITSsegmentationSSD* GetSeg()const{ + return (AliITSsegmentationSSD*)fDetTypeRec->GetSegmentationModel(2);} + 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 + 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; //! - Float_t fPNsignalRatio; //! +/*************************************************/ + //Double_t fAlpha1; //! + //Double_t fAlpha2; //! + //Double_t fAlpha3; //! + Double_t fPNsignalRatio; //! - static const Bool_t fgkSIDEP; //! - static const Bool_t fgkSIDEN; //! - + static const Bool_t fgkSIDEP; //! + static const Bool_t fgkSIDEN; //! - Int_t fSFF; //!forward stepping factor - Int_t fSFB; //!backward stepping factor + 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 };