X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=MUON%2FAliMUONVTrackerData.h;h=0db212b99ddcaae45e01f56b9b1d08f99d22b4c1;hb=180a04cbfe769ee2e0fbe91de37306ed7863aa76;hp=ca72d27e126d8fd0062d17fbe427b0538df89aeb;hpb=0145e89abcfc92979b59eb1e7514739f1f945d05;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONVTrackerData.h b/MUON/AliMUONVTrackerData.h index ca72d27e126..0db212b99dd 100644 --- a/MUON/AliMUONVTrackerData.h +++ b/MUON/AliMUONVTrackerData.h @@ -6,7 +6,7 @@ // $Id$ -/// \ingroup core +/// \ingroup calib /// \class AliMUONVTrackerData /// \brief Base class for MUON data that can be presented at different levels /// in the hierarchy of the MUON system. @@ -19,61 +19,99 @@ #ifndef ROOT_TString # include "TString.h" #endif -#ifndef ROOT_RQ_OBJECT -# include +#ifndef ROOT_TQObject +# include #endif +class AliMUONSparseHisto; class AliMUONVStore; +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 chamber and given dimension virtual Double_t Chamber(Int_t chamberId, Int_t dim=0) const = 0; + /// Get the value for a given channel and given dimension virtual Double_t Channel(Int_t detElemId, Int_t manuId, Int_t manuChannel, Int_t dim=0) const = 0; + /// Reset the data virtual void Clear(Option_t* opt="") = 0; + /// Get the number of times a given channel was hit virtual Double_t Count(Int_t detElemId, Int_t manuId, Int_t manuChannel) 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 (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 a given channel or not + virtual Bool_t HasChannel(Int_t detElemId, Int_t manuId, Int_t manuChannel) const; + + /// Whether we have data for a given chamber virtual Bool_t HasChamber(Int_t chamberId) const = 0; + /// Whether we have data for a given detection element virtual Bool_t HasDetectionElement(Int_t detElemId) const = 0; + /// Whether we have data for a given manu virtual Bool_t HasManu(Int_t detElemId, Int_t manuId) const = 0; + /// Whether we have data for a given PCB virtual Bool_t HasPCB(Int_t detElemId, Int_t pcbIndex) const = 0; - 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; - 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* + /// Get our name const char* Name() const { return GetName(); } + /// Get the value for a given PCDB and given dimension virtual Double_t PCB(Int_t detElemId, Int_t pcbIndex, Int_t dim=0) const = 0; /// Print all objects whose name matches wildcard @@ -82,7 +120,50 @@ public: /// Print, with option, all objects whose name matches wildcard virtual void Print(Option_t* wildcard, Option_t* opt) const = 0; + /// Set the name of a given dimension virtual void SetDimensionName(Int_t index, const char* value) = 0; + + /// Whether or not we can make histograms. + virtual Bool_t CanHistogram() const { return kFALSE; } + + /// Select a dimension to be histogrammed (if CanHistogram==kTRUE) only + virtual void MakeHistogramForDimension(Int_t /* index */, Bool_t /* value */, + Double_t /*xmin*/=0.0, Double_t /*xmax*/=4096.0) { } + + /// 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; + + /// 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; + + /// Whether we store values at the bus patch level or not + virtual Bool_t IsBusPatchLevelEnabled() const = 0; + + /// Whether we store values at the PCB level or not + virtual Bool_t IsPCBLevelEnabled() const = 0; private: /// not implemented @@ -90,7 +171,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