]>
Commit | Line | Data |
---|---|---|
108cb8b9 | 1 | #ifndef ALIITSSORTTRKL_H |
2 | #define ALIITSSORTTRKL_H | |
3 | ||
4 | /* Copyright(c) 2009-2010, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | /* $Id$ */ | |
8 | ||
9 | //////////////////////////////////////////////////////////////////////// | |
10 | // Helper class for finding multiple primary vertices // | |
11 | // To be used by AliITSVertexer3D // | |
12 | // Origin M. Masera masera@to.infn.it // | |
13 | //////////////////////////////////////////////////////////////////////// | |
14 | ||
15 | ||
16 | #include<TBits.h> | |
17 | #include "AliLog.h" | |
18 | #include "AliITSTracklPairs.h" | |
19 | ||
20 | class TClonesArray; | |
21 | ||
22 | class AliITSSortTrkl : public TObject { | |
23 | ||
24 | public: | |
25 | ||
26 | AliITSSortTrkl(); | |
27 | AliITSSortTrkl(Int_t n, Double_t cut = 0.05); | |
28 | AliITSSortTrkl(TClonesArray &tclo, Int_t n, Double_t cut, Double_t rcut); | |
29 | virtual ~AliITSSortTrkl(); | |
30 | Int_t AddPairs(Int_t t1, Int_t t2, Double_t dca, Double_t *coo); | |
31 | Int_t GetIndex() const {return fIndex;} | |
32 | Int_t FindClusters(); | |
33 | void SetCut(Double_t cut){fCut = cut;} | |
34 | Double_t GetCut() const {return fCut; } | |
35 | Int_t* GetClusters(Int_t index) const {if(index>=0 && index<fNoClus){return fClusters[index];} else {return NULL;}} | |
36 | Int_t GetNumberOfClusters() const {return fNoClus;} | |
37 | Int_t GetSizeOfCluster(Int_t index) const {if(index>=0 && index<fNoClus){return fSize[index];} else {return -1;}} | |
38 | static void SortAndClean(Int_t numb, Int_t *arr, Int_t& numb2); | |
39 | Int_t* GetTrackletsLab(Int_t index, Int_t& dim) const; | |
40 | ||
41 | // FOR DEBUGGING PURPOSES | |
42 | Int_t* GetClustersTmp(Int_t index){return fClustersTmp[index];} | |
43 | AliITSTracklPairs* GetPairsAt(Int_t i) const {if(!(i>=0 && i<fIndex)){AliError(Form("Index %d out of bounds",i)); return NULL;} else{ return fPairs[i];} } | |
44 | ||
45 | ||
46 | protected: | |
47 | ||
48 | AliITSSortTrkl(const AliITSSortTrkl& pa); | |
49 | AliITSSortTrkl& operator=(const AliITSSortTrkl& /* pa */); | |
50 | void Cleanup(); | |
51 | void DeleteClustersTmp(); | |
52 | void PrepareClustersTmp(); | |
53 | void Clustering(Int_t i, Int_t *v); | |
9e817851 | 54 | Int_t* FindLabels(Int_t *v, Int_t dimmax, Int_t& dim) const; |
108cb8b9 | 55 | |
56 | const Int_t fkSize; // Maximum number of tracklet pairs | |
57 | Int_t fIndex; // Total number of tracklet pairs (<=fkSize) | |
58 | AliITSTracklPairs **fPairs; // array of tracklet pairs (pointers to) | |
59 | Int_t **fClustersTmp; // Temporary list of clusters of tracklet pairs | |
60 | Int_t **fClusters; // List of clusters of tracklet pairs after cleanup | |
61 | Int_t fNoClus; // Number of clusters of tracklet pairs | |
62 | Int_t *fSize; // Number of pairs for each cluster | |
63 | TBits fMark; // Used to mask used pairs | |
64 | Double_t fCut; // cut on distance of DCAs of pairs for association | |
65 | Double_t fCoarseMaxRCut; // cut on distance from beam axis | |
66 | ||
67 | ClassDef(AliITSSortTrkl,0); | |
68 | }; | |
69 | ||
70 | #endif |