LCOV - code coverage report
Current view: top level - MUON/MUONbase - AliMUONVDigit.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 5 21 23.8 %
Date: 2016-06-14 17:26:59 Functions: 6 26 23.1 %

          Line data    Source code
       1             : #ifndef ALIMUONVDIGIT_H
       2             : #define ALIMUONVDIGIT_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 base
      10             : /// \class AliMUONVDigit
      11             : /// \brief ABC of a MUON digit
      12             : // Author Laurent Aphecetche, Subatech
      13             : 
      14             : #ifndef ROOT_TObject
      15             : #  include "TObject.h"
      16             : #endif
      17             : 
      18      414056 : class AliMUONVDigit : public TObject
      19             : {
      20             : public:
      21             :   AliMUONVDigit();
      22             :   AliMUONVDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode);
      23             :   virtual ~AliMUONVDigit();
      24             :   
      25             :   virtual Bool_t IsEqual(const TObject* object) const;
      26             :   /// Advertise that we can be sorted in TCollections
      27           0 :   virtual Bool_t IsSortable() const { return kTRUE; }
      28             :   virtual Int_t Compare(const TObject* object) const;
      29             :   
      30             :   virtual const char* GetName() const;
      31             :   
      32             :   /// The detection element this digit belongs to
      33             :   virtual Int_t DetElemId() const=0;
      34             :   /// The x-index of this digit (>=0)
      35             :   virtual Int_t PadX() const=0;
      36             :   /// The y-index of this digit (>=0)
      37             :   virtual Int_t PadY() const=0;
      38             :   /// Cathode number this digit is on (0 or 1)
      39             :   virtual Int_t Cathode() const=0;
      40             :   
      41             :   /// The charge of this digit, calibrated or not depending on IsCalibrated()
      42             :   virtual Float_t Charge() const=0;
      43             :   
      44             :   /// Raw ADC value of this digit
      45             :   virtual Int_t ADC() const = 0;
      46             :   
      47             :   /// The electronic card id this digit belongs to (manuId for tracker, localboardId for trigger)
      48             :   virtual Int_t ManuId() const = 0;
      49             :   /// The channel within ManuId() this digit belongs to (manuChannel for tracker, localBoardChannel for trigger)
      50             :   virtual Int_t ManuChannel() const=0;
      51             :   
      52             :   /// Whether the ADC has saturated
      53             :   virtual Bool_t IsSaturated() const=0;
      54             :   /// Set the saturation status
      55             :   virtual void Saturated(Bool_t saturated=kTRUE)=0;
      56             :   
      57             :   /// Whether this (simulated) digit is purely noise
      58             :   virtual Bool_t IsNoiseOnly() const=0;
      59             :   /// Set the noiseOnly status
      60           0 :   virtual void NoiseOnly(Bool_t /*value*/=kTRUE) { }
      61             :   
      62             :   /// Whether this (simulated) digit got corrected by chamber efficiency
      63             :   virtual Bool_t IsEfficiencyApplied() const=0;
      64             :   /// Set the efficiencyApplied status
      65           0 :   virtual void EfficiencyApplied(Bool_t /*value*/=kTRUE) {}
      66             :   
      67             :   /// Whether this digit has been calibrated or not (see note 1 in AliMUONVDigit.cxx)
      68             :   virtual Bool_t IsCalibrated() const=0;
      69             :   /// Set the calibrated status (see note 1 in AliMUONVDigit.cxx)
      70             :   virtual void Calibrated(Bool_t value)=0;
      71             : 
      72             :   /// Whether this digit has charge in femto coulomb (see note 1 in AliMUONVDigit.cxx)
      73           0 :   virtual Bool_t IsChargeInFC() const { return kFALSE; }
      74             :   /// Set the unit value (see note 1 in AliMUONVDigit.cxx)
      75             :   virtual void ChargeInFC(Bool_t value=kTRUE)=0;
      76             : 
      77             :   /// Whether or not this digit was obtained from a conversion (e.g. real to simulated)
      78           0 :   virtual Bool_t IsConverted() const { return kFALSE; }
      79             : 
      80             :   /// Whether this digit is used somewhere (typically in a cluster)
      81             :   virtual Bool_t IsUsed() const = 0;
      82             :   /// Set the used status
      83             :   virtual void Used(Bool_t value) = 0;
      84             :   
      85             :   /// A word describing the status of the neighbours of this digit
      86             :   virtual UInt_t StatusMap() const=0;
      87             :   /// Set the statusMap
      88             :   virtual void SetStatusMap(UInt_t statusMap)=0;
      89             :   
      90             :   /// Set the ADC value
      91             :   virtual void SetADC(Int_t adc)=0;
      92             :   /// Set the ix and iy of this digit
      93             :   virtual void SetPadXY(Int_t padx, Int_t pady)=0;
      94             :   /// Set the charge of this digit
      95             :   virtual void SetCharge(Float_t q)=0;
      96             :   /// Add a charge
      97          10 :   virtual void AddCharge(Float_t q) { SetCharge(Charge()+q); }
      98             :   
      99             :   /// Merge this with other
     100             :   virtual Bool_t MergeWith(const AliMUONVDigit& other)=0;
     101             :   
     102             :   /// Whether this digit is a tracker digit (false if belongs to trigger)
     103        3096 :   virtual Bool_t IsTracker() const { return !IsTrigger(); }
     104             :   /** FIXME: how to get this information w/o hard-coding, yet being efficient ?
     105             :     Use one fFlags that must be set when creating the digit for instance ?
     106             :     */
     107        3096 :   virtual Bool_t IsTrigger() const { return DetElemId()>=1100; }
     108             :   
     109             :   virtual void Print(Option_t* opt="") const;
     110             :   
     111             :   /// Below are methods only relevant for MC digigts.
     112             :   
     113             :   /// Whether we implement MC methods.
     114             :   virtual Bool_t HasMCInformation() const = 0; 
     115             :   
     116             :   /// Hit number that contributed to this simulated digit
     117           0 :   virtual Int_t Hit() const { return 0; }
     118             :   /// Set the hit number
     119           0 :   virtual void SetHit(Int_t /*n*/) { }
     120             :   /// Hit age
     121           0 :     virtual Float_t Time() const       {return 0;}
     122             :   /// Set hit age
     123           0 :       virtual void SetTime(Float_t /*t*/) { } 
     124             :   /// Number of tracks contributing to this digit
     125           0 :   virtual Int_t Ntracks() const { return 0; }
     126             :   /// Add a track (and its charge) to the list of tracks we handle
     127           0 :   virtual void AddTrack(Int_t /*trackNumber*/, Float_t /*trackCharge*/) {}
     128             :   /// Return the i-th track number
     129           0 :   virtual Int_t Track(Int_t /*i*/) const { return 0; }
     130             :   /// Return the i-th track charge
     131           0 :   virtual Float_t TrackCharge(Int_t /*i*/) const { return 0; }
     132             :   /// Patch track with a mask
     133           0 :   virtual void PatchTracks(Int_t /*mask*/) {}
     134             :   
     135             :   static UInt_t BuildUniqueID(Int_t detElemId, Int_t manuId, 
     136             :                               Int_t manuChannel, Int_t cathode);
     137             :   
     138             :   static void DecodeUniqueID(UInt_t uniqueID,
     139             :                              Int_t& detElemId, Int_t& manuId, 
     140             :                              Int_t& manuChannel, Int_t& cathode);
     141             :   
     142             :   static Int_t DetElemId(UInt_t uniqueID);
     143             :   static Int_t ManuId(UInt_t uniqueID);
     144             :   static Int_t ManuChannel(UInt_t uniqueID);
     145             :   static Int_t Cathode(UInt_t uniqueID);
     146             : 
     147             :   /// Return the localBoardNumber from the uniqueID  
     148           0 :   static Int_t LocalBoardNumber(UInt_t uniqueID) { return ManuId(uniqueID); }
     149             :   /// Return the localBoardChannel from the uniqueID
     150           0 :   static Int_t LocalBoardChannel(UInt_t uniqueID) { return ManuChannel(uniqueID); }
     151             :   
     152             :   
     153          26 :   ClassDef(AliMUONVDigit,0) // ABC of a MUON Digit
     154             : };
     155             : 
     156             : #endif

Generated by: LCOV version 1.11