ROOT logo
#ifndef ALIMPUID_H
#define ALIMPUID_H

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

// $Id$

/// \ingroup management
/// \class AliMpUID
/// \brief Global (string-eable) ID of a tracker channel
/// 
//  Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif
#ifndef ROOT_TString
#  include "TString.h"
#endif
#ifndef ALI_MP_CATHOD_TYPE_H
#  include "AliMpCathodType.h"
#endif

class AliMpUID : public TObject
{
public:
  AliMpUID();
  AliMpUID(AliMp::CathodType cathodeType, Int_t station, Int_t chamber=-1, Int_t de=-1, 
            Int_t bp=-1, Int_t manu=-1, Int_t pcb=-1);
  AliMpUID(AliMp::CathodType cathodeType, const AliMpUID& b);
  AliMpUID(AliMp::CathodType cathodeType, const char* pathname);
  AliMpUID(const char* pathname);
  
  /// dtor
  virtual ~AliMpUID() {}
  
  TString Name() const;
  TString PathName() const;
  TString BaseName() const;
  TString DirName() const;
  
  Bool_t IsStation() const;
  Bool_t IsChamber() const;
  Bool_t IsDetectionElement() const;
  Bool_t IsBusPatch() const;
  Bool_t IsManu() const;
  Bool_t IsPCB() const;
  Bool_t IsValid() const;
  
  AliMp::CathodType CathodeId() const;
  /// Return station Id
  Int_t StationId() const { return fStationId; }
  /// Return chamber Id
  Int_t ChamberId() const { return fChamberId; }
  /// Return detection element Id
  Int_t DetElemId() const { return fDetElemId; }
  /// Return bus patch Id
  Int_t BusPatchId() const { return fBusPatchId; }
  /// Return manu Id
  Int_t ManuId() const { return fManuId; }
  /// Return PCB Id
  Int_t PCBId() const { return fPCBId; }
  
  virtual void Print(Option_t* opt="") const;

  /// Return our type (e.g. PCB, Chamber, DE, MANU, etc...)
  TString Type() const;

private:
  
  Bool_t CheckTemplate(const char* name, const char* templateName, Int_t& value);
  TString StripCathode(const char* name) const;
  
private:
  Int_t fCathodeId; ///< Cathode number
  Int_t fStationId; ///< Station id
  Int_t fChamberId; ///< Chamber id
  Int_t fDetElemId; ///< Detection element id
  Int_t fBusPatchId;///< Bus patch id
  Int_t fManuId;    ///< Manu id
  Int_t fPCBId;     ///< PCB id
  
  ClassDef(AliMpUID,1) // UID of a tracker channel 
};

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