]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONVTrackerData.h
mchview related changes.
[u/mrichter/AliRoot.git] / MUON / AliMUONVTrackerData.h
1 #ifndef ALIMUONVTRACKERDATA_H
2 #define ALIMUONVTRACKERDATA_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 calib
10 /// \class AliMUONVTrackerData
11 /// \brief Base class for MUON data that can be presented at different levels
12 /// in the hierarchy of the MUON system.
13 /// 
14 // Author Laurent Aphecetche, Subatech
15
16 #ifndef ROOT_TNamed
17 #  include "TNamed.h"
18 #endif
19 #ifndef ROOT_TString
20 #  include "TString.h"
21 #endif
22 #ifndef ROOT_TQObject
23 #   include <TQObject.h>
24 #endif
25
26 class AliMUONSparseHisto;
27 class AliMUONVStore;
28 class TCollection;
29
30 class AliMUONVTrackerData : public TNamed, public TQObject
31 {
32 public:
33   
34   AliMUONVTrackerData(const char* name="",const char* title="", 
35                       Bool_t issingleevent=kFALSE);
36   virtual ~AliMUONVTrackerData();
37   
38   /// Add values for one event from one full store
39   virtual Bool_t Add(const AliMUONVStore& store) = 0;
40
41   /// Replace values
42   virtual Bool_t Replace(const AliMUONVStore& store) = 0;
43   
44   /// Get the value for a given buspatch and given dimension
45   virtual Double_t BusPatch(Int_t busPatchId, Int_t dim=0) const = 0;
46   
47   /// Get the value for a given chamber and given dimension
48   virtual Double_t Chamber(Int_t chamberId, Int_t dim=0) const = 0;
49   
50   /// Get the value for a given channel and given dimension
51   virtual Double_t Channel(Int_t detElemId, Int_t manuId, Int_t manuChannel,
52                            Int_t dim=0) const = 0;
53   
54   /// Reset the data
55   virtual void Clear(Option_t* opt="") = 0;
56   
57   /// Get the number of times a given channel was hit
58   virtual Double_t Count(Int_t detElemId, Int_t manuId, Int_t manuChannel) const = 0;
59
60   /// Get the value for a given DE and given dimension
61   virtual Double_t DetectionElement(Int_t detElemId, Int_t dim=0) const = 0;
62   
63   /// Get the name of a given (internal) dimension
64   virtual TString DimensionName(Int_t dim) const = 0;
65
66   /// Get the name of a given (external) dimension
67   virtual TString ExternalDimensionName(Int_t dim) const = 0;
68
69   /// Whether we have data for a given buspath
70   virtual Bool_t HasBusPatch(Int_t busPatchId) const = 0;
71
72   /// Whether we have a given channel or not
73   virtual Bool_t HasChannel(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
74   
75   /// Whether we have data for a given chamber
76   virtual Bool_t HasChamber(Int_t chamberId) const = 0;
77   
78   /// Whether we have data for a given detection element
79   virtual Bool_t HasDetectionElement(Int_t detElemId) const = 0;
80   
81   /// Whether we have data for a given manu
82   virtual Bool_t HasManu(Int_t detElemId, Int_t manuId) const = 0;
83
84   /// Whether we have data for a given PCB
85   virtual Bool_t HasPCB(Int_t detElemId, Int_t pcbIndex) const = 0;
86   
87   /// Whether we deal with only one event at a time
88   virtual Bool_t IsSingleEvent() const = 0;
89   
90   /// Get the value for a given manu and given dimension
91   virtual Double_t Manu(Int_t detElemId, Int_t manuId, Int_t dim=0) const = 0;
92   
93   /// The number of dimensions we are handling
94   virtual Int_t NumberOfDimensions() const = 0;
95
96   /// Convert from internal to external dimension
97   virtual Int_t InternalToExternal(Int_t dim) const = 0;
98   
99   /// The number of dimensions we are inputting
100   virtual Int_t ExternalDimension() const = 0;
101
102   /// The number of events we've seen so far
103   virtual Int_t NumberOfEvents() const = 0;
104
105   /// Signal to indicate that the number of events changed
106   virtual void NumberOfEventsChanged(); // *SIGNAL*
107   
108   /// Get our name
109   const char* Name() const { return GetName(); }
110   
111   /// Get the value for a given PCDB and given dimension
112   virtual Double_t PCB(Int_t detElemId, Int_t pcbIndex, Int_t dim=0) const = 0;
113   
114   /// Print all objects whose name matches wildcard
115   virtual void Print(Option_t* wildcard="") const;
116   
117   /// Print, with option, all objects whose name matches wildcard
118   virtual void Print(Option_t* wildcard, Option_t* opt) const = 0;
119
120   /// Set the name of a given dimension
121   virtual void SetDimensionName(Int_t index, const char* value) = 0;
122
123   /// Whether or not we can make histograms.
124   virtual Bool_t CanHistogram() const { return kFALSE; }
125   
126   /// Select a dimension to be histogrammed (if CanHistogram==kTRUE) only
127   virtual void MakeHistogramForDimension(Int_t /* index */, Bool_t /* value */,
128     Double_t /*xmin*/=0.0, Double_t /*xmax*/=4096.0) { }
129
130   /// Get histogram range
131   virtual void HistogramRange(Double_t& xmin, Double_t& xmax) const { xmin=xmax=0.0; }
132
133   /// Whether we have histograms for a given dimension, or not
134   virtual Bool_t IsHistogrammed(Int_t /*dim*/) const { return kFALSE; }
135
136   /// Get sparse histogram for a given channel
137   virtual AliMUONSparseHisto* GetChannelSparseHisto(Int_t detElemId, Int_t manuId, 
138                                                     Int_t manuChannel, Int_t dim=0) const = 0;
139
140   /// To allow merging of different objects
141   virtual Long64_t Merge(TCollection* list) = 0;
142
143 private:
144   /// not implemented
145   AliMUONVTrackerData(const AliMUONVTrackerData& rhs);
146   /// not implemented
147   AliMUONVTrackerData& operator=(const AliMUONVTrackerData& rhs);
148   
149   ClassDef(AliMUONVTrackerData,2) // Base class of MUON data that can be represented graphically
150 };
151
152 #endif