PMD module
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpDetElement.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpDetElement.h,v 1.6 2006/05/24 13:58:16 ivana Exp $ 
6
7 /// \ingroup management
8 /// \class AliMpDetElement
9 /// \brief The class defines the electronics properties of detection element
10 ///
11 /// \author Ivana Hrivnacova, IPN Orsay;
12 ///         Laurent Aphecetche, Ch. Finck, Subatech Nantes
13
14 #ifndef ALI_MP_DET_ELEMENT_H
15 #define ALI_MP_DET_ELEMENT_H
16
17 #include <TObject.h>
18 #include <TArrayI.h>
19 #include <TExMap.h>
20
21 #include "AliMpArrayI.h"
22 #include "AliMpPlaneType.h"
23 #include "AliMpCathodType.h"
24 #include "AliMpStationType.h"
25 #include "AliMpStation12Type.h"
26
27 #ifndef ALI_MP_EX_MAP_H
28 #  include "AliMpExMap.h"
29 #endif
30
31 class AliMpVSegmentation;
32 class AliMpArrayI;
33
34 class AliMpDetElement : public  TObject {
35
36   public:  
37     AliMpDetElement(Int_t id, const TString& name,
38                     const TString& segType, AliMp::PlaneType planeType);
39     AliMpDetElement(TRootIOCtor* ioCtor);
40     virtual ~AliMpDetElement();
41
42     // static methods
43     static char GetNameSeparator(); 
44     
45     // methods
46     Bool_t AddBusPatch(Int_t busPatchId); 
47     void   AddManu(Int_t manuId);
48     void   SetDdlId(Int_t ddlId);
49
50     // get methods
51     Int_t   GetId() const;
52     Int_t   GetDdlId() const;
53     TString GetDEName() const;
54     TString GetSegType() const;
55     TString GetSegName(AliMp::CathodType cath) const;
56
57     AliMp::PlaneType     GetPlaneType(AliMp::CathodType cath) const;
58     AliMp::CathodType    GetCathodType(AliMp::PlaneType planeType) const;
59     AliMp::CathodType    GetCathodTypeFromManuId(Int_t manuId) const;
60     AliMp::StationType   GetStationType() const;
61     AliMq::Station12Type GetStation12Type() const;
62     
63     Int_t  GetNofBusPatches() const;
64     Int_t  GetBusPatchId(Int_t index) const;
65     Bool_t HasBusPatchId(Int_t busPatchId) const;
66
67     Int_t  NofManus() const;
68     Int_t  NofChannelsInManu(Int_t manuId) const;
69     Bool_t IsExistingChannel(Int_t manuId, Int_t manuChannel) const;
70     Bool_t IsConnectedChannel(Int_t manuId, Int_t manuChannel) const;
71     
72     const AliMpArrayI* ManusForHV(Int_t hvIndex) const;
73     
74            /// Return the number of channels in this detection element    
75     Int_t NofChannels() const { return fNofChannels; }
76     
77   private:
78     /// Not implemented
79     AliMpDetElement();
80     /// Not implemented
81     AliMpDetElement(const AliMpDetElement& rhs);
82     /// Not implemented
83     AliMpDetElement& operator=(const AliMpDetElement& rhs);
84
85     // static data members      
86     static const char  fgkNameSeparator; ///< Separator character used in DE names
87
88     // data members     
89     Int_t          fId;         ///< Identifier (unique)
90     Int_t          fDdlId;      ///< DDL Id to which this DE is connected
91     TString        fName;       ///< Name unique
92     TString        fSegType;    ///< Segmentation type name
93     AliMp::PlaneType fPlaneType;  ///< Plane type on cathod0
94     //AliMpExMap     fBusPatches; ///< Bus patches connected to this detection element
95     AliMpArrayI    fBusPatchIds;  ///< Bus patches connected to this detection element
96     
97     mutable TExMap fManuList;  ///< map of manus
98     mutable TExMap fTrackerChannels; ///< list of connected pads (tracker only)
99     
100     AliMpExMap fHVmanus; ///< map of HV->manu
101     
102     Int_t fNofChannels; ///< number of channels in this detection element
103     
104   ClassDef(AliMpDetElement,4)  // The manager class for definition of detection element types
105 };
106
107 // inline function
108
109 /// Return the name separator
110 inline  char AliMpDetElement::GetNameSeparator()
111 { return fgkNameSeparator; }  
112
113 /// Set DDL Id
114 inline  void AliMpDetElement::SetDdlId(Int_t ddlId)
115 { fDdlId = ddlId; }
116
117 /// Return Id
118 inline  Int_t   AliMpDetElement::GetId() const
119 { return fId; }
120
121 /// Return DDL Id
122 inline  Int_t   AliMpDetElement::GetDdlId() const
123 { return fDdlId; }
124
125 /// Return name
126 inline  TString AliMpDetElement::GetDEName() const
127 { return fName; }
128
129 /// Return segmentation type name
130 inline  TString AliMpDetElement::GetSegType() const
131 { return fSegType; }
132
133 #endif //ALI_MP_MANAGER_H
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148