New Clusterization by IHEP (yuri)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSEvalRecPoint.h
1 #ifndef AliPHOSEvalRecPoint_H
2 #define AliPHOSEvalRecPoint_H
3
4 // --- ROOT system ---
5 #include "TObjArray.h"
6
7
8 #include "AliPHOSCpvRecPoint.h"
9 #include "AliPHOSClusterizer.h"
10 #include "AliPHOSRecPoint.h"
11 #include "AliPHOSRecManager.h"
12
13 class AliPHOSEvalRecPoint : public AliPHOSCpvRecPoint
14 {
15 public:
16
17   AliPHOSEvalRecPoint();
18   AliPHOSEvalRecPoint(Bool_t cpv,AliPHOSEvalRecPoint* parent);
19   AliPHOSEvalRecPoint(Int_t cluster, Bool_t cpv);
20   virtual ~AliPHOSEvalRecPoint() {}
21
22   Bool_t TooClose(AliPHOSRecPoint* pt) const ;
23   Bool_t NeedToSplit() const ;
24
25   void MergeClosePoint();
26   void SplitMergedShowers();
27   Int_t UnfoldLocalMaxima();
28   void EvaluatePosition();
29   Bool_t KillWeakPoint();
30
31   Bool_t IsEmc(void) const { return fIsEmc; }
32   Bool_t IsCPV(void) const { return fIsCpv; }
33
34   void SetLocalPosition(TVector3& pos) { fLocPos=pos; }
35   void UpdateWorkingPool();
36   void DeleteParent();
37
38   Int_t HasChild(TObjArray& children);
39
40   void MakeJob();
41
42   AliPHOSClusterizer* GetClusterizer();
43   AliPHOSRecManager* GetReconstructionManager() const;
44   
45   void PrintPoint(Option_t* opt);
46
47   AliPHOSRecPoint* Parent();
48   Float_t Chi2Dof() const;
49
50   const TObject* GetWorkingPool();
51
52   void AddToWorkingPool(TObject* obj);
53   TObject* GetFromWorkingPool(Int_t i);
54   Int_t InWorkingPool();
55   void RemoveFromWorkingPool(TObject* obj);
56   void PrintWorkingPool();
57
58   enum RecPointType {emc,cpv};
59
60 private:
61
62   void Init();
63   void InitTwoGam(Float_t* gamma1, Float_t* gamma2);
64   void TwoGam(Float_t* gamma1, Float_t* gamma2);
65   void UnfoldTwoMergedPoints(Float_t* gamma1, Float_t* gamma2);
66
67 private:
68
69   Bool_t fIsEmc;
70   Bool_t fIsCpv;
71   Int_t fParent;
72   Float_t fChi2Dof;
73
74   ClassDef(AliPHOSEvalRecPoint,1)
75
76 };
77
78 #endif
79
80
81
82
83
84
85
86
87
88
89
90
91