08761d371c93d938b0d6025e48dc5b5c8d3f2260
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1ElectronicElement.h
1 #ifndef ALI_MUON_ST1_ELECTRONIC_ELEMENT_H
2 #define ALI_MUON_ST1_ELECTRONIC_ELEMENT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7 // Revision of includes 07/05/2004
8
9 /// \ingroup sim
10 /// \class AliMUONSt1ElectronicElement
11 /// \brief Describes a set of pads defined by different ways 
12 ///
13 /// Describes a set of pads either by defining
14 /// - a range of indices, or
15 /// - a range of (centimeters) positions or
16 /// - a range of electronic channel numbers or
17 /// - a range of MANU numbers or, finally,
18 /// - a range of gassiplex/MANAS numbers, in a given range of MANU addresses
19 ///
20 /// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
21
22 #include <TObject.h>
23
24 class AliMpPad;
25
26 class AliMUONSt1ElectronicElement : public TObject 
27 {
28   public:
29     enum TDescription {kNone, kIJ, kXY, kMGC, kMG, kM};
30
31   public:
32     AliMUONSt1ElectronicElement();
33     AliMUONSt1ElectronicElement(TDescription descr);
34     virtual ~AliMUONSt1ElectronicElement();
35     
36     // methods
37     Bool_t Contains(const AliMpPad& pad) const;
38     void   SetRange(Int_t numVar,Int_t i1,Int_t i2);
39     void   SetRange(Int_t numVar,Double_t x1,Double_t x2);
40     Bool_t IsInRange(Int_t numVar,Int_t i) const;
41     Bool_t IsInRange(Int_t numVar,Double_t x) const;
42
43   private:
44     typedef union {Int_t i; Double_t x;}  TData;
45     
46     TDescription fDescription; // how the pad range is described
47     TData fRanges[2][2];       // range of the 2 variables
48
49   ClassDef(AliMUONSt1ElectronicElement,1) //range of electronic elements
50 };
51 #endif //ALI_MUON_ST1_ELECTRONIC_ELEMENT_H
52