ROOT logo
#ifndef AliPHOSEvalRecPoint_H
#define AliPHOSEvalRecPoint_H

// --- ROOT system ---
#include "TObjArray.h"


#include "AliPHOSCpvRecPoint.h"
class AliPHOSClusterizer;
class AliPHOSRecPoint;
class AliPHOSRecManager;
class TString;

class AliPHOSEvalRecPoint : public AliPHOSCpvRecPoint
{
public:

  AliPHOSEvalRecPoint();
  AliPHOSEvalRecPoint(Bool_t cpv,AliPHOSEvalRecPoint* parent);
  AliPHOSEvalRecPoint(Int_t cluster, Bool_t cpv);
  virtual ~AliPHOSEvalRecPoint() {}

  Bool_t TooClose(AliPHOSRecPoint* pt) const ;
  Bool_t NeedToSplit() const ;

  void MergeClosePoint();
  void SplitMergedShowers();
  Int_t UnfoldLocalMaxima();
  void EvaluatePosition();
  Bool_t KillWeakPoint();

  Bool_t IsEmc(void) const { return fIsEmc; }
  Bool_t IsCPV(void) const { return fIsCpv; }

  void SetLocalPosition(TVector3& pos) { fLocPos=pos; }
  void UpdateWorkingPool();
  void DeleteParent();

  Int_t HasChild(TObjArray& children);

  void MakeJob();

  AliPHOSClusterizer* GetClusterizer();
  AliPHOSRecManager* GetReconstructionManager() const;
  
  void PrintPoint();

  AliPHOSRecPoint* Parent();
  Float_t Chi2Dof() const;

  const TObject* GetWorkingPool();

  void AddToWorkingPool(TObject* obj);
  TObject* GetFromWorkingPool(Int_t i);
  Int_t InWorkingPool();
  void RemoveFromWorkingPool(TObject* obj);
  void PrintWorkingPool();

  enum RecPointType {kEmc,kCpv};

private:

  void Init();
  void InitTwoGam(Float_t* gamma1, Float_t* gamma2);
  void TwoGam(Float_t* gamma1, Float_t* gamma2);
  void UnfoldTwoMergedPoints(Float_t* gamma1, Float_t* gamma2);

private:

  Bool_t fIsEmc;    // true if EMC
  Bool_t fIsCpv;    // true if CPV
  Int_t fParent;    // parent
  Float_t fChi2Dof; // chi^2 per degree of freedom
  TString fEventFolderName; // Folder name

  ClassDef(AliPHOSEvalRecPoint,1)

};

#endif
 AliPHOSEvalRecPoint.h:1
 AliPHOSEvalRecPoint.h:2
 AliPHOSEvalRecPoint.h:3
 AliPHOSEvalRecPoint.h:4
 AliPHOSEvalRecPoint.h:5
 AliPHOSEvalRecPoint.h:6
 AliPHOSEvalRecPoint.h:7
 AliPHOSEvalRecPoint.h:8
 AliPHOSEvalRecPoint.h:9
 AliPHOSEvalRecPoint.h:10
 AliPHOSEvalRecPoint.h:11
 AliPHOSEvalRecPoint.h:12
 AliPHOSEvalRecPoint.h:13
 AliPHOSEvalRecPoint.h:14
 AliPHOSEvalRecPoint.h:15
 AliPHOSEvalRecPoint.h:16
 AliPHOSEvalRecPoint.h:17
 AliPHOSEvalRecPoint.h:18
 AliPHOSEvalRecPoint.h:19
 AliPHOSEvalRecPoint.h:20
 AliPHOSEvalRecPoint.h:21
 AliPHOSEvalRecPoint.h:22
 AliPHOSEvalRecPoint.h:23
 AliPHOSEvalRecPoint.h:24
 AliPHOSEvalRecPoint.h:25
 AliPHOSEvalRecPoint.h:26
 AliPHOSEvalRecPoint.h:27
 AliPHOSEvalRecPoint.h:28
 AliPHOSEvalRecPoint.h:29
 AliPHOSEvalRecPoint.h:30
 AliPHOSEvalRecPoint.h:31
 AliPHOSEvalRecPoint.h:32
 AliPHOSEvalRecPoint.h:33
 AliPHOSEvalRecPoint.h:34
 AliPHOSEvalRecPoint.h:35
 AliPHOSEvalRecPoint.h:36
 AliPHOSEvalRecPoint.h:37
 AliPHOSEvalRecPoint.h:38
 AliPHOSEvalRecPoint.h:39
 AliPHOSEvalRecPoint.h:40
 AliPHOSEvalRecPoint.h:41
 AliPHOSEvalRecPoint.h:42
 AliPHOSEvalRecPoint.h:43
 AliPHOSEvalRecPoint.h:44
 AliPHOSEvalRecPoint.h:45
 AliPHOSEvalRecPoint.h:46
 AliPHOSEvalRecPoint.h:47
 AliPHOSEvalRecPoint.h:48
 AliPHOSEvalRecPoint.h:49
 AliPHOSEvalRecPoint.h:50
 AliPHOSEvalRecPoint.h:51
 AliPHOSEvalRecPoint.h:52
 AliPHOSEvalRecPoint.h:53
 AliPHOSEvalRecPoint.h:54
 AliPHOSEvalRecPoint.h:55
 AliPHOSEvalRecPoint.h:56
 AliPHOSEvalRecPoint.h:57
 AliPHOSEvalRecPoint.h:58
 AliPHOSEvalRecPoint.h:59
 AliPHOSEvalRecPoint.h:60
 AliPHOSEvalRecPoint.h:61
 AliPHOSEvalRecPoint.h:62
 AliPHOSEvalRecPoint.h:63
 AliPHOSEvalRecPoint.h:64
 AliPHOSEvalRecPoint.h:65
 AliPHOSEvalRecPoint.h:66
 AliPHOSEvalRecPoint.h:67
 AliPHOSEvalRecPoint.h:68
 AliPHOSEvalRecPoint.h:69
 AliPHOSEvalRecPoint.h:70
 AliPHOSEvalRecPoint.h:71
 AliPHOSEvalRecPoint.h:72
 AliPHOSEvalRecPoint.h:73
 AliPHOSEvalRecPoint.h:74
 AliPHOSEvalRecPoint.h:75
 AliPHOSEvalRecPoint.h:76
 AliPHOSEvalRecPoint.h:77
 AliPHOSEvalRecPoint.h:78
 AliPHOSEvalRecPoint.h:79
 AliPHOSEvalRecPoint.h:80