]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONDigit.h
Create the magnetic field map in the reconstruction macros (Yuri)
[u/mrichter/AliRoot.git] / MUON / AliMUONDigit.h
index a3ba843e6b6d97ff6c5e4f4b9a1fd534a75373f3..0960eea29d6bc967229927ee4987a197ac76a943 100644 (file)
 /// \class AliMUONDigit
 /// \brief MUON digit
 
-#include <TObject.h>
+#ifndef ALIMUONVDIGIT_H
+#  include "AliMUONVDigit.h"
+#endif
 
-class AliMUONDigit : public TObjec
+class AliMUONDigit : public AliMUONVDigi
 {
  public:
-    AliMUONDigit();
+  AliMUONDigit();
+  AliMUONDigit(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t cathode);
+  
     AliMUONDigit(const AliMUONDigit& rhs);
     virtual ~AliMUONDigit();
 
     AliMUONDigit& operator=(const AliMUONDigit& rhs);
     
-    virtual Bool_t IsSortable() const {return kTRUE;}        ///< Return true if sortable
-    virtual Int_t Compare(const TObject *obj) const;
-
+    /// Own clone methods (as the default TObject::Clone turned out to be pretty slow !)
+    virtual TObject* Clone(const char* /*newname*/ = "") const { return new AliMUONDigit(*this); }
+    
+    virtual Bool_t HasMCInformation() const { return kTRUE; }
+    
     virtual Int_t DetElemId()const     {return fDetElemId;}  ///< Return detection element ID  
     virtual Int_t PadX() const         {return fPadX;}       ///< Return pad number along x
     virtual Int_t PadY() const         {return fPadY;}       ///< Return pad number along y
     virtual Int_t Cathode() const      {return fCathode;}    ///< Return cathode number
     
-    virtual Float_t Signal() const       {return fSignal;}     ///< Return signal amplitude
-    
-    virtual Float_t Physics() const      {return fPhysics;}    ///< Return MC physics contribution to signal
+    virtual Float_t Charge() const     {return fSignal;}     ///< Return signal amplitude
     
     virtual Int_t Hit() const          {return fHit;}        ///< Return MC hit number
     
@@ -45,22 +49,18 @@ class AliMUONDigit : public TObject
     virtual Int_t ManuChannel() const { return fManuChannel; } ///< Return Channel within the MANU chip
     virtual Bool_t IsSaturated() const;
     virtual Bool_t IsNoiseOnly() const;
+    virtual Bool_t IsEfficiencyApplied() const;
+    virtual UInt_t StatusMap() const { return fStatusMap; }    ///< Return Neighbouring pad status
     
     virtual void NoiseOnly(Bool_t value=kTRUE);
     virtual void Saturated(Bool_t saturated=kTRUE);
-    virtual void SetElectronics(Int_t manuId, Int_t manuChannel);
-    virtual void SetADC(Int_t adc) { fADC=adc; }
-    virtual void SetDetElemId(Int_t id)    {fDetElemId = id;}  ///< Set detection element ID
-    virtual void SetPadX(Int_t pad)        {fPadX = pad;}      ///< Set pad number along x
-    virtual void SetPadY(Int_t pad)        {fPadY = pad;}      ///< Set pad number along y
-    virtual void SetSignal(Float_t q)        {fSignal = q;}      ///< Set signal amplitude
-    virtual void AddSignal(Float_t q)        {fSignal += q;}     ///< Add signal amplitude
-    virtual void AddPhysicsSignal(Float_t q) {fPhysics += q;}    ///< Add MC physics contribution to signal
-    virtual void SetHit(Int_t n)           {fHit = n;}         ///< Set MC hit number
-    virtual void SetCathode(Int_t c)       {fCathode = c;}     ///< Set cathode number
-    virtual void SetPhysicsSignal(Float_t q) {fPhysics = q; }    ///< Set MC physics contribution to signal
+    virtual void EfficiencyApplied(Bool_t value=kTRUE);
     
-    virtual void Print(Option_t* opt="") const;
+    virtual void SetADC(Int_t adc)         {fADC=adc; }        ///< Set ADC value
+    virtual void SetPadXY(Int_t padx, Int_t pady)        {fPadX = padx; fPadY=pady; }      ///< Set pad number along x
+    virtual void SetCharge(Float_t q)        {fSignal = q;}    ///< Set charge
+    virtual void SetHit(Int_t n)           {fHit = n;}         ///< Set MC hit number
+    virtual void SetStatusMap(UInt_t statusMap) { fStatusMap = statusMap; } ///< Set status map
     
     virtual void Copy(TObject& digit) const;
     
@@ -73,6 +73,16 @@ class AliMUONDigit : public TObject
     // Add mask to the track numbers.
     virtual void PatchTracks(Int_t mask);
     
+    virtual Bool_t MergeWith(const AliMUONVDigit& other);
+
+    virtual Bool_t IsUsed() const;
+    virtual void Used(Bool_t value);
+    
+    virtual Bool_t IsCalibrated() const;
+    virtual void Calibrated(Bool_t value);
+    
+    virtual UInt_t GetUniqueID() const;
+    
 private:
     Int_t fDetElemId;     ///< Detection element ID
     Int_t fManuId;        ///< Id of the MANU chip.
@@ -93,12 +103,17 @@ private:
     /// primary MC tracks making this digit
     Int_t* fTracks;       //[fNtracks]  primary MC tracks making this digit
 
-    Float_t fPhysics;       ///< MC physics contribution to signal 
     Int_t fHit;           ///< MC hit number - temporary solution
   
+    UInt_t fStatusMap; ///< Neighbouring pad status (whether ped, gains, hv were ok or not)
+    
     static const UInt_t fgkSaturatedMask = 0x1; ///< the mask (part of fFlags) to indicate this digit is saturated
+    static const UInt_t fgkUsedMask = 0x10; ///< whether this digit is used by whatever other object (typically a cluster, though)
+    static const UInt_t fgkCalibratedMask = 0x100; ///< whether this digits has been calibrated
     static const UInt_t fgkNoiseOnlyMask = 0x1000; ///< indicate a simulated digit due to noise only
+    static const UInt_t fgkEfficiencyMask = 0x2000; ///< indicate chamber efficiency has been applied to a simulated digit
     
-    ClassDef(AliMUONDigit,5)  //Digits for MUON
+    ClassDef(AliMUONDigit,9)  //Digits for MUON
 };
+
 #endif