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

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

/// \ingroup management
/// \class AliMpManuStore
/// \brief The container class for manu serial numbers
///
/// \author Ivana Hrivnacova, IPN Orsay; Christian Finck, SUBATECH Nantes

#ifndef ALI_MP_MANU_STORE_H
#define ALI_MP_MANU_STORE_H

#include <TObject.h>

#include "AliMpPlaneType.h"
#include "AliMpStationType.h"
#include "AliMpEncodePair.h"

#include <TString.h>
#include <TExMap.h>

class AliMpDetElement;
class AliMpDataStreams;
class TString;

class AliMpManuStore : public  TObject {

  public:
    AliMpManuStore(TRootIOCtor* ioCtor);
    virtual ~AliMpManuStore();
    
    // static access method
    static AliMpManuStore* Instance(Bool_t warn = true); 
    static AliMpManuStore* ReadData(const AliMpDataStreams& dataStreams,
                                    Bool_t warn = true);
                                    
    static void SetWarnIfDoublon(Bool_t warn);                             
    
    
    // methods
    Bool_t  AddManu(Int_t detElemId, Int_t manuId, Int_t serialNb);

    Int_t  NofManus() const;
    Int_t  NofManus(Int_t detElemId) const;

    Int_t    GetManuSerial(Int_t detElemId, Int_t manuId) const;
    MpPair_t GetDetElemIdManu(Int_t manuSerial) const;

  private:
    AliMpManuStore(const AliMpDataStreams& dataStreams);
     /// Not implemented
    AliMpManuStore();
     /// Not implemented
    AliMpManuStore(const AliMpManuStore& rhs);
    /// Not implemented
    AliMpManuStore& operator=(const AliMpManuStore& rhs);
 
    // methods
    Bool_t ReadData(const AliMpDataStreams& dataStreams,
                    const AliMpDetElement* detElement, Int_t& nofManus);
    Bool_t ReadManuSerial(const AliMpDataStreams& dataStreams);
    
    // not yet in use methods
    void   ReplaceManu(Int_t detElemId, Int_t manuId, Int_t serialNb);
    Bool_t WriteData(const TString& outDir = "data_run_out");

    // static data members	
    static AliMpManuStore* fgInstance;      ///< Singleton instance
    static Bool_t          fgWarnIfDoublon; ///< Option to warn about doublons

    // data members	
    mutable TExMap fManuToSerialNbs; ///< Map from manuId to serial #   
    mutable TExMap fSerialNbToManus; ///< Map manu serial # to manuId
    mutable TExMap fNofManusInDE;    ///< Number of manus with serial nbs in DE
    Int_t          fNofManus;        ///< Total number of manus
      
  ClassDef(AliMpManuStore,1)  // The manager class for definition of detection element types
};

// inline functions

inline void AliMpManuStore::SetWarnIfDoublon(Bool_t warn) 
{ 
/// Set option to warn if the same serial number is present for more manus

  fgWarnIfDoublon = warn; 
}                                   
    
    
#endif //ALI_MP_MANU_STORE_H















 AliMpManuStore.h:1
 AliMpManuStore.h:2
 AliMpManuStore.h:3
 AliMpManuStore.h:4
 AliMpManuStore.h:5
 AliMpManuStore.h:6
 AliMpManuStore.h:7
 AliMpManuStore.h:8
 AliMpManuStore.h:9
 AliMpManuStore.h:10
 AliMpManuStore.h:11
 AliMpManuStore.h:12
 AliMpManuStore.h:13
 AliMpManuStore.h:14
 AliMpManuStore.h:15
 AliMpManuStore.h:16
 AliMpManuStore.h:17
 AliMpManuStore.h:18
 AliMpManuStore.h:19
 AliMpManuStore.h:20
 AliMpManuStore.h:21
 AliMpManuStore.h:22
 AliMpManuStore.h:23
 AliMpManuStore.h:24
 AliMpManuStore.h:25
 AliMpManuStore.h:26
 AliMpManuStore.h:27
 AliMpManuStore.h:28
 AliMpManuStore.h:29
 AliMpManuStore.h:30
 AliMpManuStore.h:31
 AliMpManuStore.h:32
 AliMpManuStore.h:33
 AliMpManuStore.h:34
 AliMpManuStore.h:35
 AliMpManuStore.h:36
 AliMpManuStore.h:37
 AliMpManuStore.h:38
 AliMpManuStore.h:39
 AliMpManuStore.h:40
 AliMpManuStore.h:41
 AliMpManuStore.h:42
 AliMpManuStore.h:43
 AliMpManuStore.h:44
 AliMpManuStore.h:45
 AliMpManuStore.h:46
 AliMpManuStore.h:47
 AliMpManuStore.h:48
 AliMpManuStore.h:49
 AliMpManuStore.h:50
 AliMpManuStore.h:51
 AliMpManuStore.h:52
 AliMpManuStore.h:53
 AliMpManuStore.h:54
 AliMpManuStore.h:55
 AliMpManuStore.h:56
 AliMpManuStore.h:57
 AliMpManuStore.h:58
 AliMpManuStore.h:59
 AliMpManuStore.h:60
 AliMpManuStore.h:61
 AliMpManuStore.h:62
 AliMpManuStore.h:63
 AliMpManuStore.h:64
 AliMpManuStore.h:65
 AliMpManuStore.h:66
 AliMpManuStore.h:67
 AliMpManuStore.h:68
 AliMpManuStore.h:69
 AliMpManuStore.h:70
 AliMpManuStore.h:71
 AliMpManuStore.h:72
 AliMpManuStore.h:73
 AliMpManuStore.h:74
 AliMpManuStore.h:75
 AliMpManuStore.h:76
 AliMpManuStore.h:77
 AliMpManuStore.h:78
 AliMpManuStore.h:79
 AliMpManuStore.h:80
 AliMpManuStore.h:81
 AliMpManuStore.h:82
 AliMpManuStore.h:83
 AliMpManuStore.h:84
 AliMpManuStore.h:85
 AliMpManuStore.h:86
 AliMpManuStore.h:87
 AliMpManuStore.h:88
 AliMpManuStore.h:89
 AliMpManuStore.h:90
 AliMpManuStore.h:91
 AliMpManuStore.h:92
 AliMpManuStore.h:93
 AliMpManuStore.h:94
 AliMpManuStore.h:95
 AliMpManuStore.h:96
 AliMpManuStore.h:97
 AliMpManuStore.h:98
 AliMpManuStore.h:99
 AliMpManuStore.h:100
 AliMpManuStore.h:101
 AliMpManuStore.h:102
 AliMpManuStore.h:103
 AliMpManuStore.h:104
 AliMpManuStore.h:105
 AliMpManuStore.h:106
 AliMpManuStore.h:107
 AliMpManuStore.h:108