ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpDetElement.h,v 1.6 2006/05/24 13:58:16 ivana Exp $ 

/// \ingroup management
/// \class AliMpDetElement
/// \brief The class defines the electronics properties of detection element
///
/// \author Ivana Hrivnacova, IPN Orsay;
///         Laurent Aphecetche, Ch. Finck, Subatech Nantes

#ifndef ALI_MP_DET_ELEMENT_H
#define ALI_MP_DET_ELEMENT_H

#include <TObject.h>
#include <TArrayI.h>
#include <TExMap.h>

#include "AliMpArrayI.h"
#include "AliMpPlaneType.h"
#include "AliMpCathodType.h"
#include "AliMpStationType.h"
#include "AliMpStation12Type.h"

#ifndef ALI_MP_EX_MAP_H
#  include "AliMpExMap.h"
#endif

class AliMpVSegmentation;
class AliMpArrayI;

class AliMpDetElement : public  TObject {

  public:  
    AliMpDetElement(Int_t id, const TString& name,
                    const TString& segType, AliMp::PlaneType planeType);
    AliMpDetElement(TRootIOCtor* ioCtor);
    virtual ~AliMpDetElement();

    // static methods
    static char GetNameSeparator(); 
    
    // methods
    Bool_t AddBusPatch(Int_t busPatchId); 
    void   AddManu(Int_t manuId);
    void   SetDdlId(Int_t ddlId);

    // get methods
    Int_t   GetId() const;
    Int_t   GetDdlId() const;
    TString GetDEName() const;
    TString GetSegType() const;
    TString GetSegName(AliMp::CathodType cath) const;

    AliMp::PlaneType     GetPlaneType(AliMp::CathodType cath) const;
    AliMp::CathodType    GetCathodType(AliMp::PlaneType planeType) const;
    AliMp::CathodType    GetCathodTypeFromManuId(Int_t manuId) const;
    AliMp::StationType   GetStationType() const;
    AliMq::Station12Type GetStation12Type() const;
    
    Int_t  GetNofBusPatches() const;
    Int_t  GetBusPatchId(Int_t index) const;
    Bool_t HasBusPatchId(Int_t busPatchId) const;

    Int_t  NofManus() const;
    Int_t  NofChannelsInManu(Int_t manuId) const;
    Bool_t IsExistingChannel(Int_t manuId, Int_t manuChannel) const;
    Bool_t IsConnectedChannel(Int_t manuId, Int_t manuChannel) const;
    
    const AliMpArrayI* ManusForHV(Int_t hvIndex) const;
    
           /// Return the number of channels in this detection element    
    Int_t NofChannels() const { return fNofChannels; }
    
  private:
    /// Not implemented
    AliMpDetElement();
    /// Not implemented
    AliMpDetElement(const AliMpDetElement& rhs);
    /// Not implemented
    AliMpDetElement& operator=(const AliMpDetElement& rhs);

    // static data members	
    static const char  fgkNameSeparator; ///< Separator character used in DE names

    // data members	
    Int_t          fId;         ///< Identifier (unique)
    Int_t          fDdlId;      ///< DDL Id to which this DE is connected
    TString        fName;       ///< Name unique
    TString        fSegType;    ///< Segmentation type name
    AliMp::PlaneType fPlaneType;  ///< Plane type on cathod0
    //AliMpExMap     fBusPatches; ///< Bus patches connected to this detection element
    AliMpArrayI    fBusPatchIds;  ///< Bus patches connected to this detection element
    
    mutable TExMap fManuList;  ///< map of manus
    mutable TExMap fTrackerChannels; ///< list of connected pads (tracker only)
    
    AliMpExMap fHVmanus; ///< map of HV->manu
    
    Int_t fNofChannels; ///< number of channels in this detection element
    
  ClassDef(AliMpDetElement,4)  // The manager class for definition of detection element types
};

// inline function

/// Return the name separator
inline  char AliMpDetElement::GetNameSeparator()
{ return fgkNameSeparator; }  

/// Set DDL Id
inline  void AliMpDetElement::SetDdlId(Int_t ddlId)
{ fDdlId = ddlId; }

/// Return Id
inline  Int_t   AliMpDetElement::GetId() const
{ return fId; }

/// Return DDL Id
inline  Int_t   AliMpDetElement::GetDdlId() const
{ return fDdlId; }

/// Return name
inline  TString AliMpDetElement::GetDEName() const
{ return fName; }

/// Return segmentation type name
inline  TString AliMpDetElement::GetSegType() const
{ return fSegType; }

#endif //ALI_MP_MANAGER_H















 AliMpDetElement.h:1
 AliMpDetElement.h:2
 AliMpDetElement.h:3
 AliMpDetElement.h:4
 AliMpDetElement.h:5
 AliMpDetElement.h:6
 AliMpDetElement.h:7
 AliMpDetElement.h:8
 AliMpDetElement.h:9
 AliMpDetElement.h:10
 AliMpDetElement.h:11
 AliMpDetElement.h:12
 AliMpDetElement.h:13
 AliMpDetElement.h:14
 AliMpDetElement.h:15
 AliMpDetElement.h:16
 AliMpDetElement.h:17
 AliMpDetElement.h:18
 AliMpDetElement.h:19
 AliMpDetElement.h:20
 AliMpDetElement.h:21
 AliMpDetElement.h:22
 AliMpDetElement.h:23
 AliMpDetElement.h:24
 AliMpDetElement.h:25
 AliMpDetElement.h:26
 AliMpDetElement.h:27
 AliMpDetElement.h:28
 AliMpDetElement.h:29
 AliMpDetElement.h:30
 AliMpDetElement.h:31
 AliMpDetElement.h:32
 AliMpDetElement.h:33
 AliMpDetElement.h:34
 AliMpDetElement.h:35
 AliMpDetElement.h:36
 AliMpDetElement.h:37
 AliMpDetElement.h:38
 AliMpDetElement.h:39
 AliMpDetElement.h:40
 AliMpDetElement.h:41
 AliMpDetElement.h:42
 AliMpDetElement.h:43
 AliMpDetElement.h:44
 AliMpDetElement.h:45
 AliMpDetElement.h:46
 AliMpDetElement.h:47
 AliMpDetElement.h:48
 AliMpDetElement.h:49
 AliMpDetElement.h:50
 AliMpDetElement.h:51
 AliMpDetElement.h:52
 AliMpDetElement.h:53
 AliMpDetElement.h:54
 AliMpDetElement.h:55
 AliMpDetElement.h:56
 AliMpDetElement.h:57
 AliMpDetElement.h:58
 AliMpDetElement.h:59
 AliMpDetElement.h:60
 AliMpDetElement.h:61
 AliMpDetElement.h:62
 AliMpDetElement.h:63
 AliMpDetElement.h:64
 AliMpDetElement.h:65
 AliMpDetElement.h:66
 AliMpDetElement.h:67
 AliMpDetElement.h:68
 AliMpDetElement.h:69
 AliMpDetElement.h:70
 AliMpDetElement.h:71
 AliMpDetElement.h:72
 AliMpDetElement.h:73
 AliMpDetElement.h:74
 AliMpDetElement.h:75
 AliMpDetElement.h:76
 AliMpDetElement.h:77
 AliMpDetElement.h:78
 AliMpDetElement.h:79
 AliMpDetElement.h:80
 AliMpDetElement.h:81
 AliMpDetElement.h:82
 AliMpDetElement.h:83
 AliMpDetElement.h:84
 AliMpDetElement.h:85
 AliMpDetElement.h:86
 AliMpDetElement.h:87
 AliMpDetElement.h:88
 AliMpDetElement.h:89
 AliMpDetElement.h:90
 AliMpDetElement.h:91
 AliMpDetElement.h:92
 AliMpDetElement.h:93
 AliMpDetElement.h:94
 AliMpDetElement.h:95
 AliMpDetElement.h:96
 AliMpDetElement.h:97
 AliMpDetElement.h:98
 AliMpDetElement.h:99
 AliMpDetElement.h:100
 AliMpDetElement.h:101
 AliMpDetElement.h:102
 AliMpDetElement.h:103
 AliMpDetElement.h:104
 AliMpDetElement.h:105
 AliMpDetElement.h:106
 AliMpDetElement.h:107
 AliMpDetElement.h:108
 AliMpDetElement.h:109
 AliMpDetElement.h:110
 AliMpDetElement.h:111
 AliMpDetElement.h:112
 AliMpDetElement.h:113
 AliMpDetElement.h:114
 AliMpDetElement.h:115
 AliMpDetElement.h:116
 AliMpDetElement.h:117
 AliMpDetElement.h:118
 AliMpDetElement.h:119
 AliMpDetElement.h:120
 AliMpDetElement.h:121
 AliMpDetElement.h:122
 AliMpDetElement.h:123
 AliMpDetElement.h:124
 AliMpDetElement.h:125
 AliMpDetElement.h:126
 AliMpDetElement.h:127
 AliMpDetElement.h:128
 AliMpDetElement.h:129
 AliMpDetElement.h:130
 AliMpDetElement.h:131
 AliMpDetElement.h:132
 AliMpDetElement.h:133
 AliMpDetElement.h:134
 AliMpDetElement.h:135
 AliMpDetElement.h:136
 AliMpDetElement.h:137
 AliMpDetElement.h:138
 AliMpDetElement.h:139
 AliMpDetElement.h:140
 AliMpDetElement.h:141
 AliMpDetElement.h:142
 AliMpDetElement.h:143
 AliMpDetElement.h:144
 AliMpDetElement.h:145
 AliMpDetElement.h:146
 AliMpDetElement.h:147
 AliMpDetElement.h:148