LCOV - code coverage report
Current view: top level - MUON/MUONrec - AliMUONPad.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 22 28 78.6 %
Date: 2016-06-14 17:26:59 Functions: 23 34 67.6 %

          Line data    Source code
       1             : #ifndef ALIMUONPAD_H
       2             : #define ALIMUONPAD_H
       3             : 
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             : * See cxx source for full Copyright notice                               */
       6             : 
       7             : // $Id$
       8             : 
       9             : /// \ingroup rec
      10             : /// \class AliMUONPad
      11             : /// \brief Combination of digit and mppad informations.
      12             : /// 
      13             : //  Author Laurent Aphecetche
      14             : 
      15             : #ifndef ROOT_TObject
      16             : #  include "TObject.h"
      17             : #endif
      18             : #ifndef ROOT_TVector2
      19             : #  include "TVector2.h"
      20             : #endif
      21             : #ifndef ALI_MP_AREA_H
      22             : #  include "AliMpArea.h"
      23             : #endif
      24             : 
      25       29850 : class AliMUONPad : public TObject
      26             : {
      27             : public:
      28             :   AliMUONPad();
      29             :   AliMUONPad(Double_t x, Double_t y,
      30             :              Double_t dx, Double_t dy, Double_t charge);
      31             :   AliMUONPad(const TVector2& position, const TVector2& dimensions,
      32             :              Double_t charge);
      33             :   AliMUONPad(Int_t detElemId, Int_t cathode,
      34             :              Int_t ix, Int_t iy, Double_t x, Double_t y,
      35             :              Double_t dx, Double_t dy, Double_t charge);
      36             :   virtual ~AliMUONPad();
      37             : 
      38             :   /// \brief Backup charge 
      39             :   /// Usefull if clustering somehow plays with the charge, this one is the "original" one
      40           0 :   void BackupCharge() { fChargeBackup = fCharge; }
      41             :   
      42             :   /// Return cathode number
      43       81034 :   Int_t Cathode() const { return fCathode; }
      44             : 
      45             :   Double_t Coord(Int_t ixy) const;
      46             :   
      47             :   /// Return pad charge
      48     9112340 :   Double_t Charge() const { return fCharge; }
      49             :   /// Return backup charge
      50           0 :   Double_t ChargeBackup() const { return fChargeBackup; }
      51             : 
      52             :   /// Return detection element id
      53       20626 :   Int_t DetElemId() const { return fDetElemId; }
      54             :   
      55             :   /// Return half dimensions in x and y (cm)
      56      197920 :   TVector2 Dimensions() const { return fDimensions; }
      57             :   
      58             :   /// Return half dimensions in x (cm)
      59       50214 :   Double_t DX() const { return fDimensions.X(); }
      60             :   /// Return  half dimensions in y (cm)
      61       56334 :   Double_t DY() const { return fDimensions.Y(); }
      62             : 
      63             :   /// Return info whether this is a real pad or a virtual one
      64       30368 :   Bool_t IsReal() const { return fIsReal; }
      65             : 
      66             :   /// Return info whether this pad is saturated or not
      67      859836 :   Bool_t IsSaturated() const { return fIsSaturated; }
      68             :   
      69             :   /// Return true as the function Compare is implemented
      70        3738 :   Bool_t IsSortable() const { return kTRUE; }
      71             :   
      72             :   virtual Int_t Compare(const TObject* obj) const;
      73             : 
      74             :   /// Return true if is used
      75        2648 :   Bool_t IsUsed() const { return fClusterId >= 0; }
      76             : 
      77             :   /// Return x-index
      78           0 :   Int_t Ix() const { return fIx; }
      79             :   /// Return y-index
      80           0 :   Int_t Iy() const { return fIy; }
      81             : 
      82             :   virtual void Paint(Option_t* opt="");
      83             : 
      84             :   /// Return positions in x and y (cm)
      85      104256 :   TVector2 Position() const { return fPosition; }
      86             : 
      87             :   void Print(Option_t* opt = "") const;
      88             : 
      89             :   /// Detach this pad from a cluster
      90           0 :   void Release() { fClusterId = -1; }
      91             :   
      92             :   /// Set charge to value in backup charge
      93       80198 :   void RevertCharge() { fCharge = fChargeBackup; }
      94             : 
      95             :   /// Set charge
      96        3394 :   void SetCharge(Double_t charge) { fCharge = charge; }
      97             :   
      98             :   /// Set charge backup
      99      160216 :   void SetChargeBackup(Double_t charge) { fChargeBackup = charge; }
     100             : 
     101             :   void SetCoord(Int_t ixy, Double_t Coord);
     102             : 
     103             :   /// Set status word
     104        5356 :   void SetStatus(Int_t status) { fStatus = status; }
     105             :     
     106             :   /// \brief Set cluster id this pad belongs to
     107             :   /// -1 if not attached to a cluster
     108        2860 :   void SetClusterId(Int_t id) { fClusterId = id; }  
     109             :   
     110             :   /// Set info whether this pad is saturated or not
     111           0 :   void SetSaturated(Bool_t val) { fIsSaturated = val; }
     112             :   
     113             :   void SetSize(Int_t ixy, Double_t Size);
     114             :   
     115             :   /// Set info whether this is a real pad or a virtual one
     116         106 :   void SetReal(Bool_t val) { fIsReal = val; }
     117             : 
     118             :   void Shift(Int_t ixy, Double_t shift);
     119             :   
     120             :   Double_t Size(Int_t ixy) const;
     121             : 
     122             :   /// Return status word
     123     1010516 :   Int_t Status() const { return fStatus; }
     124             :   
     125             :   /// Return position in x (cm)
     126      134634 :   Double_t X() const { return fPosition.X(); }
     127             :   /// Return position in y (cm)
     128      134964 :   Double_t Y() const { return fPosition.Y(); }
     129             :   
     130             :   static AliMpArea Overlap(const AliMUONPad& d1, const AliMUONPad& d2);
     131             :   
     132             :   static Bool_t AreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2,
     133             :                                const TVector2& precision,
     134             :                                AliMpArea& overlapArea);
     135             : 
     136             :   static Bool_t AreOverlapping(const AliMUONPad& d1, const AliMUONPad& d2,
     137             :                                const TVector2& precision);
     138             :   
     139             :   static Bool_t AreNeighbours(const AliMUONPad& d1, const AliMUONPad& d2);
     140             : 
     141             :   
     142             : private:
     143             :     void Init(Int_t detElemId, Int_t cathode,
     144             :               Int_t ix, Int_t iy,
     145             :               const TVector2& position,
     146             :               const TVector2& dimensions,
     147             :               Double_t charge);
     148             :   
     149             : private:
     150             :   Bool_t fIsSaturated; ///< whether this pad is saturated or not
     151             :   Bool_t fIsReal; ///< whether this is a real pad or a virtual one
     152             :   Int_t fClusterId; ///< cluster id this pad belongs to (-1 if not attached to a cluster)
     153             :   Int_t fCathode; ///< cathode number
     154             :   Int_t fDetElemId; ///< detection element id
     155             :   Int_t fIx; ///< x-index
     156             :   Int_t fIy; ///< y-index
     157             :   Int_t fStatus; ///< status word
     158             :   TVector2 fDimensions; ///< half dimensions in x and y (cm)
     159             :   TVector2 fPosition; ///< positions in x and y (cm)
     160             :   Double_t fCharge; ///< pad charge
     161             :   Double_t fChargeBackup; ///< backup charge (usefull if clustering somehow plays with the charge, this one is the "original" one)
     162             :   
     163          18 :   ClassDef(AliMUONPad,2) // A full grown pad 
     164             : };
     165             : 
     166             : #endif

Generated by: LCOV version 1.11