// $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;
/// 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;
/// 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;
/// 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*
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
/// 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