ROOT logo
#ifndef ALIMUONATTPAINTER_H
#define ALIMUONATTPAINTER_H

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

// $Id$

/// \ingroup graphics
/// \class AliMUONAttPainter
/// \brief Basic attributes shared by all painters
/// 
// Author Laurent Aphecetche, Subatech

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

class AliMUONAttPainter : public TObject
{
public:
  
  /// Internal status bits
  enum EBits {
    kIsCathode0         = BIT(14),
    kIsCathode1         = BIT(15),
    kIsBendingPlane     = BIT(16),
    kIsNonBendingPlane  = BIT(17),
    kIsFrontView        = BIT(18),
    kIsBackView         = BIT(19),
    kIsCathodeAndPlaneMutuallyExclusive = BIT(20),
    kIsValid            = BIT(21),
    kIsSinglePainter    = BIT(22),
    kIsCathodeAndPlaneDisabled = BIT(23)
  };
  
  AliMUONAttPainter();
  virtual ~AliMUONAttPainter();
  
  /// Return our name
  virtual const char* GetName() const { return Name(); }
  
  TString Name() const;
  
  TString CathodeName() const;
  
  TString ViewPointName() const;

  TString PlaneName() const;
  
  /// Whether cathode & plane are disabled
  Bool_t IsCathodeAndPlaneDisabled() const { return TestBit(kIsCathodeAndPlaneDisabled); }
  
  /// Whether we are representing bending plane
  Bool_t IsBendingPlane() const { return TestBit(kIsBendingPlane); }
  
  /// Whether we are representing cathode 0
  Bool_t IsCathode0() const { return TestBit(kIsCathode0); }
  
  /// Whether we are representing cathode 1
  Bool_t IsCathode1() const { return TestBit(kIsCathode1); }
  
  /// Whether we can select both cathode and plane
  Bool_t IsCathodeAndPlaneMutuallyExclusive() const { return TestBit(kIsCathodeAndPlaneMutuallyExclusive); }
  
  /// Whether we are defined by cathode
  Bool_t IsCathodeDefined() const { return IsCathode0() || IsCathode1(); }
  
  /// Whether we are representing non bending plane
  Bool_t IsNonBendingPlane() const { return TestBit(kIsNonBendingPlane); }
  
  /// Whether we are defined by plane
  Bool_t IsPlaneDefined() const { return IsBendingPlane() || IsNonBendingPlane(); }
  
  /// Whether we are valid
  Bool_t IsValid() const { return TestBit(kIsValid); }
  
  void Invert();
  
  /// Set our cathode states
  void SetCathode(Bool_t cath0, Bool_t cath1) { SetBit(kIsCathode0,cath0); SetBit(kIsCathode1,cath1); }
  
  /// Set our plane states
  void SetPlane(Bool_t bending, Bool_t nonBending) { SetBit(kIsBendingPlane,bending); SetBit(kIsNonBendingPlane,nonBending); }
  
  /// Set single status
  void SetSingle(Bool_t value) { SetBit(kIsSinglePainter,value); }
  
  /// Whether the painter is to be represented from front (as seen from IP)
  Bool_t IsFrontView() const { return TestBit(kIsFrontView); }
  
  /// Whether the painter is to be represented from back (as seen from IP)
  Bool_t IsBackView() const { return TestBit(kIsBackView); }
  
  /// Set view point
  void SetViewPoint(Bool_t front, Bool_t back) { SetBit(kIsFrontView,front); SetBit(kIsBackView,back); }
  
  /// Set mutually exclusive flag
  void SetCathodeAndPlaneMutuallyExclusive(Bool_t value) { SetBit(kIsCathodeAndPlaneMutuallyExclusive,value); }
  
  /// Set valid flag
  void SetValid(Bool_t value) { SetBit(kIsValid,value); }
  
  /// Whether we represent attributes of a single painter (if false, means it's a painter group)
  Bool_t IsSinglePainter() const { return TestBit(kIsSinglePainter); }
  
  /// Set cathode & plane disable flag
  void SetCathodeAndPlaneDisabled(Bool_t value) { SetBit(kIsCathodeAndPlaneDisabled,value); }

  void Print(Option_t* opt="") const;
  
  ClassDef(AliMUONAttPainter,1) // Basic attributes of painters
};

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