ROOT logo
#ifndef ALIPHOSRECPOINT_H
#define ALIPHOSRECPOINT_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
//_________________________________________________________________________
//  Base Class for PHOS Reconstructed Points  
//  A recpoint being equivalent to a cluster in encal terminology                 
//*-- Author: Gines Martinez (SUBATECH)

// --- ROOT system ---
#include <TVector3.h>

// --- AliRoot header files ---
#include "AliCluster.h"

class TClonesArray ;
class AliPHOSDigit ;
class AliDigitNew;
class TMAtrixF; 

class AliPHOSRecPoint : public AliCluster {

 public:
  
  typedef TObjArray RecPointsList ; 

  AliPHOSRecPoint() ;                   // ctor         
  AliPHOSRecPoint(const char * opt) ;   // ctor 

  AliPHOSRecPoint(const AliPHOSRecPoint &rp);
  AliPHOSRecPoint& operator= (const AliPHOSRecPoint &rp);

  
  virtual ~AliPHOSRecPoint();

  virtual void Clear(const Option_t* /*option*/ ="") { delete[] fDigitsList; fDigitsList=0; delete[] fTracksList; fTracksList=0; }

//  virtual  void   AddDigit(AliDigitNew &){
//   Fatal("AddDigit", "use AddDigit(AliPHOSDigit & digit, Float_t Energy)") ; 
//  }
  virtual  void   AddDigit(AliPHOSDigit & digit, Float_t Energy, Float_t time=0) = 0 ; 
  virtual Int_t   Compare(const TObject * obj) const = 0 ;   
  virtual Int_t   DistancetoPrimitive(Int_t px, Int_t py);
  virtual void    Draw(Option_t * option="") ;
  virtual void    ExecuteEvent(Int_t event, Int_t px, Int_t py) ;
  virtual void    EvalAll(TClonesArray * digits) ;  
  void            EvalLocal2TrackingCSTransform();
  virtual void    EvalPHOSMod(AliPHOSDigit * digit) ;  
  virtual int *   GetDigitsList(void) const { return fDigitsList ; }  
  virtual Float_t GetEnergy() const {return fAmp; }
  virtual void    GetLocalPosition(TVector3 & pos) const ;   
  virtual void    GetGlobalPosition(TVector3 & gpos, TMatrixF & gmat) const ; // return global position in ALICE
  virtual Int_t   GetPHOSMod(void) const {return fPHOSMod ; }
  virtual Int_t * GetPrimaries(Int_t & number) const {number = fMulTrack ; 
                                                      return fTracksList ; }
  virtual Int_t   GetDigitsMultiplicity(void) const { return fMulDigit ; }
  Int_t           GetIndexInList() const { return fIndexInList ; }
  virtual Bool_t  IsEmc(void)const { return kTRUE ;  } 
  virtual Bool_t  IsSortable() const { 
    // tells that this is a sortable object
    return kTRUE ; 
  }  
  void            SetIndexInList(Int_t val) { fIndexInList = val ; }
  virtual void    Paint(Option_t * option="");
  virtual void    Print(Option_t *) const {
    // Print prototype
  } 

protected:
  
  Int_t     fPHOSMod ;    // PHOS Module number in which the RecPoint is found
  Int_t     fMulTrack ;   // total multiplicity of tracks to which the point was assigned
  Int_t     fMaxDigit ;   //! max initial size of digits array (not saved)
  Int_t     fMulDigit ;   // total multiplicity of digits
  Int_t     fMaxTrack ;   //! max initial size of tracks array (not saved)
  Int_t*    fDigitsList ; //[fMulDigit] list of digit's indexes from which the point was reconstructed 
  Int_t*    fTracksList ; //[fMulTrack] list of tracks to which the point was assigned 
  Float_t   fAmp ;        // summed amplitude of digits 
  Int_t     fIndexInList ;// the index of this RecPoint in the list stored in TreeR (to be set by analysis)  
  TVector3  fLocPos ;     // local position in the sub-detector coordinate


  ClassDef(AliPHOSRecPoint,3) // RecPoint for PHOS (Base Class)
 
};

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