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

// $Id$
// $MpId: AliMpMotifMap.h,v 1.14 2006/05/24 13:58:18 ivana Exp $

/// \ingroup motif
/// \class AliMpMotifMap
/// \brief Motif map containers
///
/// The class defines:
/// - map of motif objects to their string IDs
/// - map of motif type objects to their string IDs
/// - map of motif position objects to their string IDs
/// - map of motif position objects to their global indices
///
/// \author David Guez, Ivana Hrivnacova; IPN Orsay

#ifndef ALI_MP_MOTIF_MAP_H
#define ALI_MP_MOTIF_MAP_H

#include <TObject.h>

#include "AliMpExMap.h"

class AliMpVMotif;
class AliMpMotifType;
class AliMpMotifPosition;
class AliMpMotifMap;

class TArrayI;
class TString;

class AliMpMotifMap : public TObject
{
  public:
    AliMpMotifMap();
    AliMpMotifMap(TRootIOCtor* ioCtor);
    virtual ~AliMpMotifMap();
    
    // methods
    Bool_t  AddMotif(AliMpVMotif* motif, Bool_t warn = true);
    Bool_t  AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
    Bool_t  AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
    void   FillMotifPositionMap2();
    virtual void Print(const char* option = "ALL") const;
    void   PrintGlobalIndices(const char* fileName) const;
    void   UpdateGlobalIndices(const char* fileName);
   
    // find methods
    AliMpVMotif*  FindMotif(const TString& motifID) const;
    AliMpVMotif*  FindMotif(const TString& motifID, const TString& motifTypeID, 
                            Double_t padDimensionX, Double_t padDimensionY) const;
    AliMpMotifType*      FindMotifType(const TString& motifTypeID) const;
    AliMpMotifPosition*  FindMotifPosition(Int_t motifPositionID) const;

    /// Find all motifPositionsIDs (=electronicCardNumbers) handled by this map
    void    GetAllMotifPositionsIDs(TArrayI& enc) const;
    UInt_t  GetNofMotifPositions() const;
    AliMpMotifPosition* GetMotifPosition(UInt_t index) const;

    /// Calculate total number of pads defined in the map
    Int_t CalculateNofPads() const;
     
  private:
    /// Not implemented
    AliMpMotifMap(const AliMpMotifMap& rhs);
    /// Not implemented
    AliMpMotifMap& operator=(const AliMpMotifMap& rhs);
  
    // methods
    void  PrintMotif(const AliMpVMotif* motif) const;
    void  PrintMotifType(const AliMpMotifType* motifType) const;
    void  PrintMotifPosition(const AliMpMotifPosition* motifPosition) const;
    void  PrintMotifPosition2(const AliMpMotifPosition* motifPosition) const;
    void  PrintMotifs() const;
    void  PrintMotifTypes() const;
    void  PrintMotifPositions() const;
    void  PrintMotifPositions2() const;
 
    // data members
    AliMpExMap   fMotifs;         ///< motifs map
    AliMpExMap   fMotifTypes;     ///< motifs types map
    AliMpExMap   fMotifPositions; ///< motifs positions map
    AliMpExMap   fMotifPositions2;///< motifs positions map

  ClassDef(AliMpMotifMap,1)  // motif map
};

#endif //ALI_MP_MOTIF_MAP_H
 AliMpMotifMap.h:1
 AliMpMotifMap.h:2
 AliMpMotifMap.h:3
 AliMpMotifMap.h:4
 AliMpMotifMap.h:5
 AliMpMotifMap.h:6
 AliMpMotifMap.h:7
 AliMpMotifMap.h:8
 AliMpMotifMap.h:9
 AliMpMotifMap.h:10
 AliMpMotifMap.h:11
 AliMpMotifMap.h:12
 AliMpMotifMap.h:13
 AliMpMotifMap.h:14
 AliMpMotifMap.h:15
 AliMpMotifMap.h:16
 AliMpMotifMap.h:17
 AliMpMotifMap.h:18
 AliMpMotifMap.h:19
 AliMpMotifMap.h:20
 AliMpMotifMap.h:21
 AliMpMotifMap.h:22
 AliMpMotifMap.h:23
 AliMpMotifMap.h:24
 AliMpMotifMap.h:25
 AliMpMotifMap.h:26
 AliMpMotifMap.h:27
 AliMpMotifMap.h:28
 AliMpMotifMap.h:29
 AliMpMotifMap.h:30
 AliMpMotifMap.h:31
 AliMpMotifMap.h:32
 AliMpMotifMap.h:33
 AliMpMotifMap.h:34
 AliMpMotifMap.h:35
 AliMpMotifMap.h:36
 AliMpMotifMap.h:37
 AliMpMotifMap.h:38
 AliMpMotifMap.h:39
 AliMpMotifMap.h:40
 AliMpMotifMap.h:41
 AliMpMotifMap.h:42
 AliMpMotifMap.h:43
 AliMpMotifMap.h:44
 AliMpMotifMap.h:45
 AliMpMotifMap.h:46
 AliMpMotifMap.h:47
 AliMpMotifMap.h:48
 AliMpMotifMap.h:49
 AliMpMotifMap.h:50
 AliMpMotifMap.h:51
 AliMpMotifMap.h:52
 AliMpMotifMap.h:53
 AliMpMotifMap.h:54
 AliMpMotifMap.h:55
 AliMpMotifMap.h:56
 AliMpMotifMap.h:57
 AliMpMotifMap.h:58
 AliMpMotifMap.h:59
 AliMpMotifMap.h:60
 AliMpMotifMap.h:61
 AliMpMotifMap.h:62
 AliMpMotifMap.h:63
 AliMpMotifMap.h:64
 AliMpMotifMap.h:65
 AliMpMotifMap.h:66
 AliMpMotifMap.h:67
 AliMpMotifMap.h:68
 AliMpMotifMap.h:69
 AliMpMotifMap.h:70
 AliMpMotifMap.h:71
 AliMpMotifMap.h:72
 AliMpMotifMap.h:73
 AliMpMotifMap.h:74
 AliMpMotifMap.h:75
 AliMpMotifMap.h:76
 AliMpMotifMap.h:77
 AliMpMotifMap.h:78
 AliMpMotifMap.h:79
 AliMpMotifMap.h:80
 AliMpMotifMap.h:81
 AliMpMotifMap.h:82
 AliMpMotifMap.h:83
 AliMpMotifMap.h:84
 AliMpMotifMap.h:85
 AliMpMotifMap.h:86
 AliMpMotifMap.h:87
 AliMpMotifMap.h:88
 AliMpMotifMap.h:89
 AliMpMotifMap.h:90