ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

#include "AliMUONVCalibParam.h"

#include "AliLog.h"

//-----------------------------------------------------------------------------
/// \class AliMUONVCalibParam
///  
/// Defines an interface for a calibration container object.
///
/// Note that a VCalibParam object is identified by a pair (id0,id1), 
/// where each member of the pair is a 16 bits word, so that id0 and id1
/// can be packed into a single 32 bits word.
///
/// id1 might be left to zero if not required (e.g. for calibparam which 
/// can be identified by a single integer)
///
/// Note that the ValueAsXXX methods have 2 versions : with or without bound
/// checking. The latter is to be used in e.g. loops, where you know for
/// sure the indices are ok, in order to gain some time.
///
/// \author Laurent Aphecetche, Subatech
//-----------------------------------------------------------------------------

/// \cond CLASSIMP
ClassImp(AliMUONVCalibParam)
/// \endcond

//_____________________________________________________________________________
AliMUONVCalibParam::AliMUONVCalibParam() : TObject()
{
  ///  Default constructor
}

//_____________________________________________________________________________
AliMUONVCalibParam::AliMUONVCalibParam(Int_t id0, Int_t id1) : TObject()
{
  ///  constructor for 2D
  SetUniqueID(BuildUniqueID(id0,id1));
}

//_____________________________________________________________________________
AliMUONVCalibParam::~AliMUONVCalibParam()
{
/// Destructor.
}

//_____________________________________________________________________________
UInt_t
AliMUONVCalibParam::BuildUniqueID(Int_t id0, Int_t id1)
{
  /// Build a single index from the pair (id0,id1)
  return ( id0 | ( id1 << 16 ) );
}

//_____________________________________________________________________________
void
AliMUONVCalibParam::DecodeUniqueID(UInt_t uniqueID, Int_t& id0, Int_t& id1)
{
  /// Convert single integer into a pair (i,j)
  id0 = ID0(uniqueID);
  id1 = ID1(uniqueID);
}

//_____________________________________________________________________________
Int_t
AliMUONVCalibParam::ID0(UInt_t uniqueID)
{
  /// Extract id0 from uniqueID
  return uniqueID & 0xFFFF;
}

//_____________________________________________________________________________
Int_t
AliMUONVCalibParam::ID0() const
{
  /// Extract first identifier
  return ID0(GetUniqueID());
}

//_____________________________________________________________________________
Int_t
AliMUONVCalibParam::ID1(UInt_t uniqueID)
{
  /// Extract id1 from uniqueID
  return ( uniqueID & 0xFFFF0000 ) >> 16;
}

//_____________________________________________________________________________
Int_t
AliMUONVCalibParam::ID1() const
{
  /// Extract second identifier
  return ID1(GetUniqueID());
}

//_____________________________________________________________________________
const char* 
AliMUONVCalibParam::GetName() const
{
  /// Build a name for this object
  return Form("I=%d,J=%d",ID0(),ID1());
}

//_____________________________________________________________________________
void 
AliMUONVCalibParam::SetValueAsDouble(Int_t, Int_t, Double_t)
{
  /// By default, this one does not exist
  AliFatal("Not implemented");
}

//_____________________________________________________________________________
void 
AliMUONVCalibParam::SetValueAsDoubleFast(Int_t, Int_t, Double_t)
{
  /// By default, this one does not exist
  AliFatal("Not implemented");
}

//_____________________________________________________________________________
Double_t 
AliMUONVCalibParam::ValueAsDouble(Int_t , Int_t ) const
{
  /// By default, this one does not exist
  AliFatal("Not implemented");
  return 0;
}

//_____________________________________________________________________________
Double_t 
AliMUONVCalibParam::ValueAsDoubleFast(Int_t , Int_t ) const
{
  /// By default, this one does not exist
  AliFatal("Not implemented");
  return 0;
}

//_____________________________________________________________________________
Int_t 
AliMUONVCalibParam::Compare(const TObject* object) const
{
  /// Compare AliMUONVCalibParam objects, trying to get as complete an order as possible.
  /// We sort by ID0, then by ID1
  ///
  const AliMUONVCalibParam* param = static_cast<const AliMUONVCalibParam*>(object);
  
  if ( ID0() == param->ID0() )
  {
    if ( ID1() == param->ID1() )
    {
      return 0;
    }
    else
      return (ID1() >= param->ID1()) ? 1 : -1;
  }
  else
    return ( ID0() >= param->ID0()) ? 1 : -1;
}


 AliMUONVCalibParam.cxx:1
 AliMUONVCalibParam.cxx:2
 AliMUONVCalibParam.cxx:3
 AliMUONVCalibParam.cxx:4
 AliMUONVCalibParam.cxx:5
 AliMUONVCalibParam.cxx:6
 AliMUONVCalibParam.cxx:7
 AliMUONVCalibParam.cxx:8
 AliMUONVCalibParam.cxx:9
 AliMUONVCalibParam.cxx:10
 AliMUONVCalibParam.cxx:11
 AliMUONVCalibParam.cxx:12
 AliMUONVCalibParam.cxx:13
 AliMUONVCalibParam.cxx:14
 AliMUONVCalibParam.cxx:15
 AliMUONVCalibParam.cxx:16
 AliMUONVCalibParam.cxx:17
 AliMUONVCalibParam.cxx:18
 AliMUONVCalibParam.cxx:19
 AliMUONVCalibParam.cxx:20
 AliMUONVCalibParam.cxx:21
 AliMUONVCalibParam.cxx:22
 AliMUONVCalibParam.cxx:23
 AliMUONVCalibParam.cxx:24
 AliMUONVCalibParam.cxx:25
 AliMUONVCalibParam.cxx:26
 AliMUONVCalibParam.cxx:27
 AliMUONVCalibParam.cxx:28
 AliMUONVCalibParam.cxx:29
 AliMUONVCalibParam.cxx:30
 AliMUONVCalibParam.cxx:31
 AliMUONVCalibParam.cxx:32
 AliMUONVCalibParam.cxx:33
 AliMUONVCalibParam.cxx:34
 AliMUONVCalibParam.cxx:35
 AliMUONVCalibParam.cxx:36
 AliMUONVCalibParam.cxx:37
 AliMUONVCalibParam.cxx:38
 AliMUONVCalibParam.cxx:39
 AliMUONVCalibParam.cxx:40
 AliMUONVCalibParam.cxx:41
 AliMUONVCalibParam.cxx:42
 AliMUONVCalibParam.cxx:43
 AliMUONVCalibParam.cxx:44
 AliMUONVCalibParam.cxx:45
 AliMUONVCalibParam.cxx:46
 AliMUONVCalibParam.cxx:47
 AliMUONVCalibParam.cxx:48
 AliMUONVCalibParam.cxx:49
 AliMUONVCalibParam.cxx:50
 AliMUONVCalibParam.cxx:51
 AliMUONVCalibParam.cxx:52
 AliMUONVCalibParam.cxx:53
 AliMUONVCalibParam.cxx:54
 AliMUONVCalibParam.cxx:55
 AliMUONVCalibParam.cxx:56
 AliMUONVCalibParam.cxx:57
 AliMUONVCalibParam.cxx:58
 AliMUONVCalibParam.cxx:59
 AliMUONVCalibParam.cxx:60
 AliMUONVCalibParam.cxx:61
 AliMUONVCalibParam.cxx:62
 AliMUONVCalibParam.cxx:63
 AliMUONVCalibParam.cxx:64
 AliMUONVCalibParam.cxx:65
 AliMUONVCalibParam.cxx:66
 AliMUONVCalibParam.cxx:67
 AliMUONVCalibParam.cxx:68
 AliMUONVCalibParam.cxx:69
 AliMUONVCalibParam.cxx:70
 AliMUONVCalibParam.cxx:71
 AliMUONVCalibParam.cxx:72
 AliMUONVCalibParam.cxx:73
 AliMUONVCalibParam.cxx:74
 AliMUONVCalibParam.cxx:75
 AliMUONVCalibParam.cxx:76
 AliMUONVCalibParam.cxx:77
 AliMUONVCalibParam.cxx:78
 AliMUONVCalibParam.cxx:79
 AliMUONVCalibParam.cxx:80
 AliMUONVCalibParam.cxx:81
 AliMUONVCalibParam.cxx:82
 AliMUONVCalibParam.cxx:83
 AliMUONVCalibParam.cxx:84
 AliMUONVCalibParam.cxx:85
 AliMUONVCalibParam.cxx:86
 AliMUONVCalibParam.cxx:87
 AliMUONVCalibParam.cxx:88
 AliMUONVCalibParam.cxx:89
 AliMUONVCalibParam.cxx:90
 AliMUONVCalibParam.cxx:91
 AliMUONVCalibParam.cxx:92
 AliMUONVCalibParam.cxx:93
 AliMUONVCalibParam.cxx:94
 AliMUONVCalibParam.cxx:95
 AliMUONVCalibParam.cxx:96
 AliMUONVCalibParam.cxx:97
 AliMUONVCalibParam.cxx:98
 AliMUONVCalibParam.cxx:99
 AliMUONVCalibParam.cxx:100
 AliMUONVCalibParam.cxx:101
 AliMUONVCalibParam.cxx:102
 AliMUONVCalibParam.cxx:103
 AliMUONVCalibParam.cxx:104
 AliMUONVCalibParam.cxx:105
 AliMUONVCalibParam.cxx:106
 AliMUONVCalibParam.cxx:107
 AliMUONVCalibParam.cxx:108
 AliMUONVCalibParam.cxx:109
 AliMUONVCalibParam.cxx:110
 AliMUONVCalibParam.cxx:111
 AliMUONVCalibParam.cxx:112
 AliMUONVCalibParam.cxx:113
 AliMUONVCalibParam.cxx:114
 AliMUONVCalibParam.cxx:115
 AliMUONVCalibParam.cxx:116
 AliMUONVCalibParam.cxx:117
 AliMUONVCalibParam.cxx:118
 AliMUONVCalibParam.cxx:119
 AliMUONVCalibParam.cxx:120
 AliMUONVCalibParam.cxx:121
 AliMUONVCalibParam.cxx:122
 AliMUONVCalibParam.cxx:123
 AliMUONVCalibParam.cxx:124
 AliMUONVCalibParam.cxx:125
 AliMUONVCalibParam.cxx:126
 AliMUONVCalibParam.cxx:127
 AliMUONVCalibParam.cxx:128
 AliMUONVCalibParam.cxx:129
 AliMUONVCalibParam.cxx:130
 AliMUONVCalibParam.cxx:131
 AliMUONVCalibParam.cxx:132
 AliMUONVCalibParam.cxx:133
 AliMUONVCalibParam.cxx:134
 AliMUONVCalibParam.cxx:135
 AliMUONVCalibParam.cxx:136
 AliMUONVCalibParam.cxx:137
 AliMUONVCalibParam.cxx:138
 AliMUONVCalibParam.cxx:139
 AliMUONVCalibParam.cxx:140
 AliMUONVCalibParam.cxx:141
 AliMUONVCalibParam.cxx:142
 AliMUONVCalibParam.cxx:143
 AliMUONVCalibParam.cxx:144
 AliMUONVCalibParam.cxx:145
 AliMUONVCalibParam.cxx:146
 AliMUONVCalibParam.cxx:147
 AliMUONVCalibParam.cxx:148
 AliMUONVCalibParam.cxx:149
 AliMUONVCalibParam.cxx:150
 AliMUONVCalibParam.cxx:151
 AliMUONVCalibParam.cxx:152
 AliMUONVCalibParam.cxx:153
 AliMUONVCalibParam.cxx:154
 AliMUONVCalibParam.cxx:155
 AliMUONVCalibParam.cxx:156
 AliMUONVCalibParam.cxx:157
 AliMUONVCalibParam.cxx:158
 AliMUONVCalibParam.cxx:159
 AliMUONVCalibParam.cxx:160
 AliMUONVCalibParam.cxx:161
 AliMUONVCalibParam.cxx:162
 AliMUONVCalibParam.cxx:163
 AliMUONVCalibParam.cxx:164
 AliMUONVCalibParam.cxx:165
 AliMUONVCalibParam.cxx:166
 AliMUONVCalibParam.cxx:167
 AliMUONVCalibParam.cxx:168
 AliMUONVCalibParam.cxx:169
 AliMUONVCalibParam.cxx:170
 AliMUONVCalibParam.cxx:171
 AliMUONVCalibParam.cxx:172
 AliMUONVCalibParam.cxx:173
 AliMUONVCalibParam.cxx:174
 AliMUONVCalibParam.cxx:175
 AliMUONVCalibParam.cxx:176
 AliMUONVCalibParam.cxx:177