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

// $Id$

/// \ingroup calib
/// \class AliMUONCalibParamNI
/// \brief Implementation of AliMUONVCalibParam for tuples of ints
/// 
//  Author Laurent Aphecetche

#ifndef ALIMUONCALIBPARAMNI_H
#define ALIMUONCALIBPARAMNI_H

#ifndef ALIMUONVCALIBPARAM_H
#  include "AliMUONVCalibParam.h"
#endif

class AliMUONCalibParamNI : public AliMUONVCalibParam
{
public:
  AliMUONCalibParamNI();
  AliMUONCalibParamNI(Int_t dimension, Int_t theSize, Int_t id0, Int_t id1, Int_t fillWithValue=0, Int_t packingValue=0);
  AliMUONCalibParamNI(const AliMUONCalibParamNI& other);
  AliMUONCalibParamNI& operator=(const AliMUONCalibParamNI& other);
  
  virtual ~AliMUONCalibParamNI();

  /// Own clone methods (as the default TObject::Clone turned out to be pretty slow !)
  virtual TObject* Clone(const char* = "") const { return new AliMUONCalibParamNI(*this); }
  
  /// Return dimension
  virtual Int_t Dimension() const { return fDimension; }
  
  virtual void Print(Option_t* opt="") const;
  
  virtual void SetValueAsFloat(Int_t i, Int_t j, Float_t value);
  virtual void SetValueAsFloatFast(Int_t i, Int_t j, Float_t value);
  virtual void SetValueAsInt(Int_t i, Int_t j, Int_t value);
  virtual void SetValueAsIntFast(Int_t i, Int_t j, Int_t value);
  
  /// Return size - the number of float pair we hold
  virtual Int_t Size() const { return fSize; } 

  virtual Float_t ValueAsFloat(Int_t i, Int_t j=0) const;
  virtual Float_t ValueAsFloatFast(Int_t i, Int_t j=0) const;
  virtual Int_t ValueAsInt(Int_t i, Int_t j=0) const;
  virtual Int_t ValueAsIntFast(Int_t i, Int_t j=0) const;
     
  virtual Bool_t UnpackValue(Int_t value, Int_t& a, Int_t& b) const;
  
  virtual Bool_t PackValues(Int_t a, Int_t b, Int_t& packedValue) const;
  
  virtual Bool_t IsPacked() const;

private:
  void CopyTo(AliMUONCalibParamNI& destination) const;
  Int_t Index(Int_t i, Int_t j) const;  
  Int_t IndexFast(Int_t i, Int_t j) const;  
    
private:
  Int_t fDimension; ///< dimension of this object
  Int_t fSize; ///< The number of float pair we hold
  Int_t fN;    ///< The total number of floats we hold (fDimension*fSize)
  Int_t fPackingFactor; ///< packing factor, i.e. value = a*fPackingFactor + b
  
  /// The values array
  Int_t* fValues; //[fN] The values array
  
  ClassDef(AliMUONCalibParamNI,3) // Container for calibration parameters
};

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