Line data Source code
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: AliMpMotifType.h,v 1.11 2006/05/24 13:58:18 ivana Exp $
6 :
7 : /// \ingroup motif
8 : /// \class AliMpMotifType
9 : /// \brief Class that defines the motif properties.
10 : ///
11 : /// \author David Guez, Ivana Hrivnacova; IPN Orsay
12 :
13 : #ifndef ALI_MP_MOTIF_TYPE_H
14 : #define ALI_MP_MOTIF_TYPE_H
15 :
16 : #include <TObject.h>
17 :
18 : #include "AliMpEncodePair.h"
19 :
20 : #ifndef ROOT_TObjArray
21 : # include <TObjArray.h>
22 : #endif
23 :
24 : #include <TString.h>
25 :
26 : class AliMpVPadIterator;
27 : class AliMpConnection;
28 :
29 : class AliMpMotifType : public TObject
30 : {
31 : public:
32 : AliMpMotifType(const TString &id);
33 : AliMpMotifType(const AliMpMotifType& rhs);
34 : AliMpMotifType& operator=(const AliMpMotifType& rhs);
35 : AliMpMotifType(TRootIOCtor* ioCtor);
36 : virtual ~AliMpMotifType();
37 :
38 : TObject* Clone(const char* newname="") const;
39 :
40 : virtual AliMpVPadIterator* CreateIterator() const;
41 :
42 : // find methods
43 : AliMpConnection *FindConnectionByPadNum(Int_t padNum) const;
44 : AliMpConnection *FindConnectionByLocalIndices(
45 : MpPair_t localIndices) const;
46 : AliMpConnection *FindConnectionByLocalIndices(
47 : Int_t localIx, Int_t localIy) const;
48 : AliMpConnection *FindConnectionByGassiNum(Int_t gassiNum) const;
49 : AliMpConnection *FindConnectionByKaptonNum(Int_t kaptonNum) const;
50 : AliMpConnection *FindConnectionByBergNum(Int_t bergNum) const;
51 :
52 : MpPair_t FindLocalIndicesByPadNum(Int_t padNum) const;
53 : MpPair_t FindLocalIndicesByGassiNum(Int_t gassiNum) const;
54 : MpPair_t FindLocalIndicesByKaptonNum(Int_t kaptonNum) const;
55 : MpPair_t FindLocalIndicesByBergNum(Int_t bergNum) const;
56 : MpPair_t FindLocalIndicesByConnection(
57 : const AliMpConnection* connection) const;
58 :
59 : // set methods
60 : void SetNofPads(Int_t nofPadsX, Int_t nofPadY);
61 :
62 : // get methods
63 : /// Return unique motif ID
64 21582 : TString GetID() const {return fID;}
65 : /// Return number of pads in x direction
66 13403842 : Int_t GetNofPadsX() const {return fNofPadsX;}
67 : /// Return number of pads in y direction
68 13323186 : Int_t GetNofPadsY() const {return fNofPadsY;}
69 : /// Return the total number of pads
70 1621392 : Int_t GetNofPads() const {return fNofPads;}
71 :
72 : // Other methods
73 : Bool_t AddConnection(AliMpConnection* connection);
74 :
75 : virtual void Print(Option_t *option="") const;
76 :
77 : Int_t PadNum(const TString &padName) const;
78 :
79 : TString PadName(Int_t padNum) const;
80 :
81 : Bool_t HasPadByLocalIndices(MpPair_t localIndices) const;
82 : Bool_t HasPadByLocalIndices(Int_t localIx, Int_t localIy) const;
83 :
84 : Bool_t HasPadByManuChannel(Int_t manuChannel) const;
85 :
86 : /// Return whether the pad with given manu channel exists
87 0 : Bool_t HasPadByGassiNum(Int_t gassiNum) const { return HasPadByManuChannel(gassiNum); }
88 :
89 : Bool_t IsFull() const;
90 :
91 : Bool_t Save(const char* motifName) const;
92 : Bool_t Save() const;
93 :
94 : private:
95 : /// Not implemented
96 : AliMpMotifType();
97 :
98 : // methods
99 : void Copy(TObject& o) const;
100 :
101 : // static data members
102 : static const Int_t fgkPadNumForA; ///< the pad number for the pad "A"
103 :
104 : // data members
105 : TString fID; ///< unique motif ID
106 : Int_t fNofPadsX; ///< number of pads in x direction
107 : Int_t fNofPadsY; ///< number of pads in y direction
108 : Int_t fNofPads; ///< total number of pads (= the number of non-void entries in the arrays below)
109 : Int_t fMaxNofPads; ///< max number of pads we can hold
110 : TObjArray fConnectionsByLocalIndices; ///< array [ix + 64*iy ] -> AliMpConnection*
111 : TObjArray fConnectionsByManuChannel; ///< array [manuChannel] -> AliMpConnection*
112 :
113 2148 : ClassDef(AliMpMotifType,2) // Motif type
114 : };
115 :
116 : // inline functions
117 :
118 : /// Return true if the motif conatins all pads
119 : inline Bool_t AliMpMotifType::IsFull() const
120 1596570 : { return GetNofPads() == fNofPadsX*fNofPadsY; }
121 :
122 : #endif //ALI_MP_MOTIF_TYPE_H
123 :
124 :
|