]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONVTrackerData.h
Trigger scalers added to ESD header.
[u/mrichter/AliRoot.git] / MUON / AliMUONVTrackerData.h
index 131dddb7d9c748250569f2ba2c5eb5151103702e..8ef7db2aab7f9489b5c9512b6c369c198926c8ed 100644 (file)
@@ -6,7 +6,7 @@
 
 // $Id$
 
-/// \ingroup graphics
+/// \ingroup calib
 /// \class AliMUONVTrackerData
 /// \brief Base class for MUON data that can be presented at different levels
 /// in the hierarchy of the MUON system.
 #ifndef ROOT_TString
 #  include "TString.h"
 #endif
-#ifndef ROOT_RQ_OBJECT
-#   include <RQ_OBJECT.h>
+#ifndef ROOT_TQObject
+#   include <TQObject.h>
 #endif
 
+class AliMUONSparseHisto;
 class AliMUONVStore;
-class TH1;
+class TCollection;
+class TArrayI;
 
-class AliMUONVTrackerData : public TNamed
+class AliMUONVTrackerData : public TNamed, public TQObject
 {
-  RQ_OBJECT("AliMUONVTrackerData")
-  
 public:
   
-  AliMUONVTrackerData(const char* name="",const char* title="", Bool_t runnable=kTRUE);
+  AliMUONVTrackerData(const char* name="",const char* title="", 
+                      Bool_t issingleevent=kFALSE);
   virtual ~AliMUONVTrackerData();
   
-  /// Add values for one full store
-  virtual Bool_t Add(const AliMUONVStore& store) = 0;
+  /// Add values for one event from one full store
+  virtual Bool_t Add(const AliMUONVStore& store, TArrayI* arrayOfNofEventsPerDDL=0x0) = 0;
 
+  /// Replace values
+  virtual Bool_t Replace(const AliMUONVStore& store) = 0;
+  
   /// Get the value for a given buspatch and given dimension
   virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const = 0;
   
@@ -57,9 +61,12 @@ public:
   /// Get the value for a given DE and given dimension
   virtual Double_t DetectionElement(Int_t detElemId, Int_t dim=0) const = 0;
   
-  /// Get the name of a given dimension
+  /// Get the name of a given (internal) dimension
   virtual TString DimensionName(Int_t dim) const = 0;
 
+  /// Get the name of a given (external) dimension
+  virtual TString ExternalDimensionName(Int_t dim) const = 0;
+
   /// Whether we have data for a given buspath
   virtual Bool_t HasBusPatch(Int_t busPatchId) const = 0;
 
@@ -78,8 +85,8 @@ public:
   /// Whether we have data for a given PCB
   virtual Bool_t HasPCB(Int_t detElemId, Int_t pcbIndex) const = 0;
   
-  /// Whether we are runnable (e.g. can handle several events)
-  virtual Bool_t IsRunnable() const = 0;
+  /// Whether we deal with only one event at a time
+  virtual Bool_t IsSingleEvent() const = 0;
   
   /// Get the value for a given manu and given dimension
   virtual Double_t Manu(Int_t detElemId, Int_t manuId, Int_t dim=0) const = 0;
@@ -87,8 +94,16 @@ public:
   /// The number of dimensions we are handling
   virtual Int_t NumberOfDimensions() const = 0;
 
-  /// The number of events we've seen so far
-  virtual Int_t NumberOfEvents() const = 0;
+  /// Convert from internal to external dimension
+  virtual Int_t InternalToExternal(Int_t dim) const = 0;
+  
+  /// The number of dimensions we are inputting
+  virtual Int_t ExternalDimension() const = 0;
+
+  /** The number of events we've seen so far in a given DDL (or any DDL if param<0)
+   ddlNumber is 0..19
+   */
+  virtual Int_t NumberOfEvents(Int_t ddlNumber) const = 0;
 
   /// Signal to indicate that the number of events changed
   virtual void NumberOfEventsChanged(); // *SIGNAL*
@@ -112,26 +127,37 @@ public:
   virtual Bool_t CanHistogram() const { return kFALSE; }
   
   /// Select a dimension to be histogrammed (if CanHistogram==kTRUE) only
-  virtual void SetHistogramDimension(Int_t /* index */, Bool_t /* value */) { }
+  virtual void MakeHistogramForDimension(Int_t /* index */, Bool_t /* value */,
+    Double_t /*xmin*/=0.0, Double_t /*xmax*/=4096.0) { }
 
-  /// Create (if CanHistogram) an histo for a given channel
-  virtual TH1* CreateChannelHisto(Int_t /*detElemId*/, Int_t /*manuId*/, 
-                                  Int_t /*manuChannel*/, Int_t /*dim*/=0) { return 0x0; }
-  
-  /// Create (if CanHistogram) an histo for a given bus patch
-  virtual TH1* CreateBusPatchHisto(Int_t /*busPatchId*/, Int_t /*dim*/=0)  { return 0x0; }
-  
-  /// Create (if CanHistogram) an histo for a given detection element
-  virtual TH1* CreateDEHisto(Int_t /*detElemId*/, Int_t /*dim*/=0)  { return 0x0; }
-  
-  /// Create (if CanHistogram) an histo for a given manu
-  virtual TH1* CreateManuHisto(Int_t /*detElemId*/, Int_t /*manuId*/, Int_t /*dim*/=0)  { return 0x0; }
-  
-  /// Create (if CanHistogram) an histo for a given pcb
-  virtual TH1* CreatePCBHisto(Int_t /*detElemId*/, Int_t /*pcbIndex*/, Int_t /*dim*/=0)  { return 0x0; }
+  /// Get histogram range
+  virtual void HistogramRange(Double_t& xmin, Double_t& xmax) const { xmin=xmax=0.0; }
+
+  /// Whether we have histograms for a given dimension, or not
+  virtual Bool_t IsHistogrammed(Int_t /*dim*/) const { return kFALSE; }
+
+  /// Get sparse histogram for a given channel
+  virtual AliMUONSparseHisto* GetChannelSparseHisto(Int_t detElemId, Int_t manuId, 
+                                                    Int_t manuChannel, Int_t dim=0) const = 0;
+
+  /// Get sparse histogram for a given manu (valid only if IsChannelLevelEnabled()==kFALSE and IsManuLevelEnabled()==kTRUE)
+  virtual AliMUONSparseHisto* GetManuSparseHisto(Int_t detElemId, Int_t manuId, 
+                                                 Int_t dim=0) const = 0;
   
-  /// Create (if CanHistogram) an histo for a given chamber
-  virtual TH1* CreateChamberHisto(Int_t /*chamberId*/, Int_t /*dim*/=0)  { return 0x0; }
+  /// To allow merging of different objects
+  virtual Long64_t Merge(TCollection* list) = 0;
+
+       /// Disable recording of information at the channel level
+       virtual void DisableChannelLevel() = 0;
+       
+       /// Whether we store values at the channel level
+       virtual Bool_t IsChannelLevelEnabled() const = 0;
+
+  /// Disable recording of information at the manu level (and below)
+       virtual void DisableManuLevel() = 0;
+       
+       /// Whether we store values at the channel level
+       virtual Bool_t IsManuLevelEnabled() const = 0;
   
 private:
   /// not implemented
@@ -139,7 +165,7 @@ private:
   /// not implemented
   AliMUONVTrackerData& operator=(const AliMUONVTrackerData& rhs);
   
-  ClassDef(AliMUONVTrackerData,1) // Base class of MUON data that can be represented graphically
+  ClassDef(AliMUONVTrackerData,2) // Base class of MUON data that can be represented graphically
 };
 
 #endif