Adding TestSuite
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALTowerRecPoint.h
1 #ifndef ALIEMCALTOWERRECPOINT_H
2 #define ALIEMCALTOWERRECPOINT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 //  RecPoint implementation for EMCAL-EMC 
10 //  An TowerRecPoint is a cluster of digits   
11 //           
12 //*-- Author: Dmitri Peressounko (RRC KI & SUBATECH)
13 //*-- Author: Yves Schutz (SUBATECH)
14
15 // --- ROOT system ---
16 class TVector3 ;  
17
18 // --- Standard library ---
19
20 // --- AliRoot header files ---
21 #include "AliEMCALRecPoint.h"
22
23 class AliEMCALTowerRecPoint : public AliEMCALRecPoint  {
24
25 public:
26
27   AliEMCALTowerRecPoint() ;
28   AliEMCALTowerRecPoint(const char * opt) ;
29   AliEMCALTowerRecPoint(const AliEMCALTowerRecPoint & rp):AliEMCALRecPoint(rp) {
30     Fatal("cpy ctor", "not implemented") ; 
31   } 
32  
33   virtual ~AliEMCALTowerRecPoint() ;  
34
35   virtual void  AddDigit(AliEMCALDigit & digit, Float_t Energy) ;          // add a digit to the digits list  
36   Int_t       Compare(const TObject * obj) const;                         // method for sorting  
37
38   virtual void  EvalAll(Float_t logWeight,TClonesArray * digits) ;
39   virtual void  EvalGlobalPosition(Float_t logWeight, TClonesArray * digits) ;
40
41   virtual void  ExecuteEvent(Int_t /*event*/, Int_t, Int_t) const; 
42
43   Float_t         GetCoreEnergy()const {return fCoreEnergy ;}
44   virtual Float_t GetDispersion()const {return fDispersion ;}
45   virtual void    GetElipsAxis(Float_t * lambda)const { lambda[0] = fLambda[0] ;
46                                                         lambda[1] = fLambda[1] ; }
47   Float_t *   GetEnergiesList() const {return fEnergyList ;}       // gets the list of energies making this recpoint
48   Float_t     GetMaximalEnergy(void) const ;                       // get the highest energy in the cluster
49   Int_t       GetMaximumMultiplicity() const {return fMaxDigit ;}  // gets the maximum number of digits allowed
50   Int_t       GetMultiplicity(void) const { return fMulDigit ; }   // gets the number of digits making this recpoint
51   Int_t       GetMultiplicityAtLevel(const Float_t level) const ;  // computes multiplicity of digits with 
52                                                                    // energy above relative level
53   virtual Int_t GetNumberOfLocalMax(AliEMCALDigit **  maxAt, Float_t * maxAtEnergy,
54                                     Float_t locMaxCut,TClonesArray * digits ) const ; 
55                                                                    // searches for the local maxima 
56   Float_t     GetTime(void) const{return  fTime ; } 
57   Bool_t      IsSortable() const {return kTRUE ; }                 // says that emcrecpoints are sortable objects 
58   void        Print(Option_t * /*opt = "void"*/) ; 
59   const TVector3 XYZInAlice(Float_t r = 9999., Float_t theta = 9999., Float_t phi = 9999.) const ;  
60
61   AliEMCALTowerRecPoint & operator = (const AliEMCALTowerRecPoint & /*rvalue*/)  {
62     Fatal("operator =", "not implemented") ;
63     return *this ; 
64   }
65
66  protected:
67           void  EvalCoreEnergy(Float_t logWeight,TClonesArray * digits) ;             
68   virtual void  EvalLocalPosition(Float_t /*logWeight*/,TClonesArray * /*digits*/) {;}// computes the position in the EMCAL module 
69   virtual void  EvalDispersion(Float_t logWeight,TClonesArray * digits) ;   // computes the dispersion of the shower
70   virtual void  EvalElipsAxis(Float_t logWeight, TClonesArray * digits );   // computes the axis of shower ellipsoide
71           void  EvalTime( TClonesArray * digits );
72   virtual Bool_t AreNeighbours(AliEMCALDigit * digit1, AliEMCALDigit * digit2 ) const ;
73
74   Float_t fCoreEnergy ;       // energy in a shower core 
75   Float_t fLambda[2] ;        // shower ellipse axes
76   Float_t fDispersion ;       // shower dispersion
77   Float_t *fEnergyList ;      //[fMulDigit] energy of digits
78   Float_t fTime ;             // Time of the digit with maximal energy deposition
79   
80   ClassDef(AliEMCALTowerRecPoint,2)  // Tower RecPoint (cluster)
81
82 };
83
84 #endif // AliEMCALTOWERRECPOINT_H