1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpMotifType.h,v 1.11 2006/05/24 13:58:18 ivana Exp $
8 /// \class AliMpMotifType
9 /// \brief Class that defines the motif properties.
11 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
13 #ifndef ALI_MP_MOTIF_TYPE_H
14 #define ALI_MP_MOTIF_TYPE_H
18 #include "AliMpContainers.h"
20 #include "AliMpIntPair.h"
21 #ifndef ROOT_TObjArray
22 # include "TObjArray.h"
27 class AliMpVPadIterator;
28 class AliMpConnection;
30 class AliMpMotifType : public TObject
33 AliMpMotifType(const TString &id);
34 AliMpMotifType(const AliMpMotifType& rhs);
35 AliMpMotifType& operator=(const AliMpMotifType& rhs);
36 AliMpMotifType(TRootIOCtor* ioCtor);
37 virtual ~AliMpMotifType();
39 TObject* Clone(const char* newname="") const;
41 virtual AliMpVPadIterator* CreateIterator() const;
44 AliMpConnection *FindConnectionByPadNum(Int_t padNum) const;
45 AliMpConnection *FindConnectionByLocalIndices(
46 const AliMpIntPair& localIndices) const;
47 AliMpConnection *FindConnectionByGassiNum(Int_t gassiNum) const;
48 AliMpConnection *FindConnectionByKaptonNum(Int_t kaptonNum) const;
49 AliMpConnection *FindConnectionByBergNum(Int_t bergNum) const;
51 AliMpIntPair FindLocalIndicesByPadNum(Int_t padNum) const;
52 AliMpIntPair FindLocalIndicesByGassiNum(Int_t gassiNum) const;
53 AliMpIntPair FindLocalIndicesByKaptonNum(Int_t kaptonNum) const;
54 AliMpIntPair FindLocalIndicesByBergNum(Int_t bergNum) const;
55 AliMpIntPair FindLocalIndicesByConnection(
56 const AliMpConnection* connection) const;
59 void SetNofPads(Int_t nofPadsX, Int_t nofPadY);
62 /// Return unique motif ID
63 TString GetID() const {return fID;}
64 /// Return number of pads in x direction
65 Int_t GetNofPadsX() const {return fNofPadsX;}
66 /// Return number of pads in y direction
67 Int_t GetNofPadsY() const {return fNofPadsY;}
69 Int_t GetNofPads() const {return fNofPads;}
72 Bool_t AddConnection(AliMpConnection* connection);
74 virtual void Print(Option_t *option="") const;
76 Int_t PadNum(const TString &padName) const;
78 TString PadName(Int_t padNum) const;
80 Bool_t HasPadByLocalIndices(const AliMpIntPair& localIndices) const;
82 Bool_t HasPadByManuChannel(Int_t manuChannel) const;
84 Bool_t HasPadByGassiNum(Int_t gassiNum) const { return HasPadByManuChannel(gassiNum); }
86 Bool_t IsFull() const;
88 Bool_t Save(const char* motifName) const;
96 void Copy(TObject& o) const;
98 // static data members
99 static const Int_t fgkPadNumForA; ///< the pad number for the pad "A"
102 TString fID; ///< unique motif ID
103 Int_t fNofPadsX; ///< number of pads in x direction
104 Int_t fNofPadsY; ///< number of pads in y direction
105 Int_t fNofPads; ///< total number of pads (= the number of non-void entries in the arrays below)
106 Int_t fMaxNofPads; ///< max number of pads we can hold
107 TObjArray fConnectionsByLocalIndices; ///< array [ix + 64*iy ] -> AliMpConnection*
108 TObjArray fConnectionsByManuChannel; ///< array [manuChannel] -> AliMpConnection*
110 ClassDef(AliMpMotifType,2) // Motif type
115 /// Return true if the motif conatins all pads
116 inline Bool_t AliMpMotifType::IsFull() const
117 { return GetNofPads() == fNofPadsX*fNofPadsY; }
119 #endif //ALI_MP_MOTIF_TYPE_H