LCOV - code coverage report
Current view: top level - PHOS/PHOSbase - AliPHOSEmcRecPoint.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 21 76.2 %
Date: 2016-06-14 17:26:59 Functions: 16 24 66.7 %

          Line data    Source code
       1             : #ifndef ALIPHOSEMCRECPOINT_H
       2             : #define ALIPHOSEMCRECPOINT_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             : /* History of cvs commits:
       9             :  *
      10             :  * $Log$
      11             :  * Revision 1.36  2007/04/05 10:18:58  policheh
      12             :  * Introduced distance to nearest bad crystal.
      13             :  *
      14             :  * Revision 1.35  2007/03/06 06:47:28  kharlov
      15             :  * DP:Possibility to use actual vertex position added
      16             :  *
      17             :  * Revision 1.34  2005/05/28 14:19:04  schutz
      18             :  * Compilation warnings fixed by T.P.
      19             :  *
      20             :  */
      21             : 
      22             : //_________________________________________________________________________
      23             : //  RecPoint implementation for PHOS-EMC 
      24             : //  An EmcRecPoint is a cluster of digits   
      25             : //           
      26             : //-- Author: Dmitri Peressounko (RRC KI & SUBATECH)
      27             : 
      28             : // --- ROOT system ---
      29             : 
      30             : // --- Standard library ---
      31             : 
      32             : // --- AliRoot header files ---
      33             : 
      34             : //#include "AliPHOSDigit.h"
      35             : #include "AliPHOSRecPoint.h"
      36             : 
      37             : class AliPHOSEmcRecPoint : public AliPHOSRecPoint  {
      38             : 
      39             : public:
      40             : 
      41             :   AliPHOSEmcRecPoint() ;
      42             :   AliPHOSEmcRecPoint(const char * opt) ;
      43             :   AliPHOSEmcRecPoint(const AliPHOSEmcRecPoint & rp) ; 
      44             :  
      45             :   virtual ~AliPHOSEmcRecPoint() ;  
      46             : 
      47          32 :   virtual void Clear(const Option_t* /*option*/ ="") { delete[] fEnergyList; fEnergyList=0; AliPHOSRecPoint::Clear(); }
      48             : 
      49             :   //This virtual function has signature different from AliPHOSRecPoint::AddDigit
      50             :   //it hides, not overrides. using - declaration should fix the problem, at least for
      51             :   //g++
      52             : //  using AliPHOSRecPoint::AddDigit;
      53             :   virtual void  AddDigit(AliPHOSDigit & digit, Float_t Energy, Float_t time=0.) ;          // add a digit to the digits list  
      54             :   Int_t       Compare(const TObject * obj) const;                         // method for sorting  
      55             : 
      56             :   virtual void  EvalAll(TClonesArray * digits) ; //Those tasks which can be done without vertex
      57             :   virtual void  EvalAll(Float_t logWeight, TVector3 &vtx, TClonesArray * digits) ;
      58             :           void  EvalCoreEnergy(Float_t logWeight, Float_t coreRadius, TClonesArray * digits) ;             
      59             : 
      60             :   //in base class this functions is non-const
      61             :   virtual void  ExecuteEvent(Int_t event, Int_t px, Int_t py) /*const*/; 
      62             : 
      63          20 :   Float_t         GetCoreEnergy()const {return fCoreEnergy ;}
      64          60 :   virtual Float_t GetDispersion()const {return fDispersion ;}
      65          20 :   virtual void    GetElipsAxis(Float_t * lambda)const { lambda[0] = fLambda[0] ;
      66          10 :                                                         lambda[1] = fLambda[1] ; }
      67          20 :   Float_t *   GetEnergiesList() const {return fEnergyList ;}       // gets the list of energies making this recpoint
      68             :   Float_t     GetMaximalEnergy(void) const ;                       // get the highest energy in the cluster
      69           0 :   Int_t       GetMaximumMultiplicity() const {return fMaxDigit ;}  // gets the maximum number of digits allowed
      70          80 :   Int_t       GetMultiplicity(void) const { return fMulDigit ; }   // gets the number of digits making this recpoint
      71             :   Int_t       GetMultiplicityAtLevel(Float_t level) const ;  // computes multiplicity of digits with 
      72             :                                                                    // energy above relative level
      73          20 :   Short_t     GetNExMax(void) const {return fNExMax ;}             // Number of maxima found in cluster in unfolding:
      74             :                                                                    // 0: was no unfolging
      75             :                                                                    //-1: unfolding failed
      76          20 :   void        SetNExMax(Int_t nmax=1){fNExMax = static_cast<Short_t>(nmax) ;}
      77             :   virtual Int_t GetNumberOfLocalMax(AliPHOSDigit **  maxAt, Float_t * maxAtEnergy,
      78             :                                     Float_t locMaxCut,TClonesArray * digits ) const ; 
      79             :                                                                    // searches for the local maxima 
      80             :   //returns number of local maxima in parent cluster or -2 if unfolding failed
      81          60 :   Float_t     GetTime(void) const{return  fTime ; } 
      82          80 :   Bool_t      IsEmc(void) const { return kTRUE ; }                 // true if the recpoint is in EMC
      83          20 :   Bool_t      IsSortable() const {return kTRUE ; }                 // says that emcrecpoints are sortable objects 
      84             :   void        Print(Option_t *)const ; 
      85             :   void        Purify(Float_t threshold, const TClonesArray * digits) ;                          //Removes digits below threshold
      86             : 
      87          20 :   Float_t     GetM2x()   const {return fM2x;  } // Get second X-moment
      88          20 :   Float_t     GetM2z()   const {return fM2z;  } // Get second Z-moment
      89           0 :   Float_t     GetM3x()   const {return fM3x;  } // Get third  X-moment
      90           0 :   Float_t     GetM4z()   const {return fM4z;  } // Get forth  Z-moment
      91           0 :   Float_t     GetPhixe() const {return fPhixe;} // Get angle between center gravity and eigen vector
      92             : 
      93          20 :   Float_t     GetDistanceToBadCrystal() const {return fDistToBadCrystal;}
      94           0 :   void        SetDistanceToBadCrystal(Float_t dist) {fDistToBadCrystal=dist;}
      95             : 
      96             : private:
      97             :   AliPHOSEmcRecPoint & operator = (const AliPHOSEmcRecPoint & /*rvalue*/) {return *this;}
      98             : 
      99             : protected:
     100             :   virtual void  EvalLocalPosition(Float_t logWeight, TVector3 &vtx, TClonesArray * digits, TVector3 &vInc) ;// computes the position in the PHOS module 
     101             :   virtual void  EvalDispersion(Float_t logWeight, TClonesArray * digits, TVector3 &vInc) ;   // computes the dispersion of the shower
     102             :   virtual void  EvalElipsAxis(Float_t logWeight, TClonesArray * digits, TVector3 &vInc );   // computes the axis of shower ellipsoide
     103             :           void  EvalMoments(Float_t logWeight, TClonesArray * digits, TVector3 &vInc );     // computes shower moments
     104             :   virtual void  EvalPrimaries(TClonesArray * digits) ;
     105             :           void  EvalTime( TClonesArray * digits );
     106             :   virtual Bool_t AreNeighbours(AliPHOSDigit * digit1, AliPHOSDigit * digit2 ) const ;
     107             : 
     108             :   Float_t fCoreEnergy ;       // energy in a shower core 
     109             :   Float_t fLambda[2] ;        // shower ellipse axes
     110             :   Float_t fDispersion ;       // shower dispersion
     111             :   Float_t *fEnergyList ;      //[fMulDigit] energy of digits
     112             :   Float_t fTime ;             // Time of the digit with maximal energy deposition
     113             :   Short_t fNExMax ;           // number of (Ex-)maxima before unfolding
     114             : 
     115             :   Float_t fM2x;               // Second moment along X axis
     116             :   Float_t fM2z;               // Second moment along Z axis
     117             :   Float_t fM3x;               // Third  moment along X axis
     118             :   Float_t fM4z;               // Forth  moment along Z axis
     119             :   Float_t fPhixe;             // Angle between center-gravity vector and eigen vector
     120             :   Float_t fDistToBadCrystal;  // Distance to nearest bad crystal
     121             : 
     122             :   Int_t fDebug;               //! debug level (0 - no output)
     123             :    Long64_t fInstCount;
     124             :   static Long64_t fgInstCount;
     125             :  
     126         150 :   ClassDef(AliPHOSEmcRecPoint,4)  // EMC RecPoint (cluster)
     127             : 
     128             : };
     129             : 
     130             : #endif // AliPHOSEMCRECPOINT_H

Generated by: LCOV version 1.11