add getter to cut on n cells
[u/mrichter/AliRoot.git] / ITS / AliITSSortTrkl.h
CommitLineData
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
20class TClonesArray;
21
22class 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