ROOT logo
#ifndef ALIMPDCSNAMER_H
#define ALIMPDCSNAMER_H

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

// $Id$

/// \ingroup management
/// \class AliMpDCSNamer
/// \brief Collection of methods usefull to DCS handling for MUON TRK and TRG
/// 
//  Author Laurent Aphecetche and Diego Stocco, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

class TObjArray;

class AliMpDCSNamer : public TObject
{
public:
  AliMpDCSNamer();
  AliMpDCSNamer(const char* detName);
  
  virtual ~AliMpDCSNamer();

  Bool_t SetDetector(const char* detName);
  
  TString DCSNameFromAlias(const char* dcsAlias) const;

  TString DCSAliasFromName(const char* dcsName) const;

  TString DCSAliasName(Int_t detElemId, Int_t sector=0, Int_t dcsMeasure=0) const;

  TString DCSSwitchAliasName(Int_t detElemId, Int_t pcbNumber) const;

  Int_t DCS2DE(Int_t chamberId, Int_t side, Int_t dcsNumber) const;
  
  Int_t DetElemId2DCS(Int_t detElemId, Int_t& side, Int_t& chId) const;
    
  Int_t DCSIndexFromDCSAlias(const char* dcsAlias) const;
  
  Int_t DetElemIdFromDCSAlias(const char* dcsAlias) const;

  Int_t DCSvariableFromDCSAlias(const char* dcsAlias) const;
  
  Int_t ManuId2Index(Int_t detElemId, Int_t manuId) const;
  
  /// Returns the index of PCB (within a St345 slat) for a given manu number.
  Int_t ManuId2PCBIndex(Int_t detElemId, Int_t manuId) const;
  
  /// Return the HV-sector number (within a St12 quadrant) for a given manu number.
  Int_t ManuId2Sector(Int_t detElemId, Int_t manuId) const;
  
  Int_t NumberOfPCBs(Int_t detElemId) const;

  TObjArray* GenerateAliases() const;
  TObjArray* CompactAliases() const;
  void AliasesAsLdif(const char* ldiffile) const;

  // Below this value we consider tracking HV is off
  static Float_t TrackerHVOFF() { return 30.0; }

  enum 
  {
    kDCSHV,    ///< High Voltage
    kDCSI,     ///< Currents
    kNDCSMeas  ///< Number of measured quantities
  };

  enum 
  {
    kTrackerDet, ///< Namer for tracker
    kTriggerDet  ///< Namer for trigger
  };
  
  
private:
  /// Not implemented
  AliMpDCSNamer(const AliMpDCSNamer& right);
  /// Not implemented
  AliMpDCSNamer&  operator = (const AliMpDCSNamer& right);

  Bool_t CheckConsistency(Int_t detElemId) const;
    
  static const char* fgkDCSChannelSt345Pattern[]; ///< DCS Tracker Channel name template
  static const char* fgkDCSChannelSt12Pattern[]; ///< DCS Tracker Channel name template
  static const char* fgkDCSQuadrantPattern[]; ///< DCS Tracker quadrant name template
  static const char* fgkDCSChamberPattern[]; ///< DCS Tracker chamber name template
  
  static const char* fgkDCSSwitchSt345Pattern; ///< DCS Tracker Switch name template
  static const char* fgkDCSSideTrackerName[]; ///< DCS Tracker Name of the side written in DCS

  static const char* fgkDCSChannelTriggerPatternRead[]; ///< DCS Trigger Channel name template for input
  static const char* fgkDCSChannelTriggerPattern[]; ///< DCS Trigger Channel name template for output 
  static const char* fgkDCSSideTriggerName[]; ///< DCS Trigger Name of the side written in DCS
  static const char* fgkDCSMeasureName[]; ///< DCS Trigger Name of the measure (HV or current) written in DCS

  static const char* fgkDetectorName[]; ///< Name of detector (Tracker or Trigger)

  Int_t fDetector; ///< Detector type (either tracker or trigger)
  
  ClassDef(AliMpDCSNamer,0) // Utility class for coding/decoding DCS aliases
};

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