1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 #include "AliMUONCalibParam1I.h"
21 #include "Riostream.h"
25 /// \class AliMUONCalibParam1I
27 /// This class is implementing the AliMUONVCalibParam interface.
29 /// It stores a given number of integers.
31 /// Those integers can also be retrieved as floats if really needed
32 /// (this is to comply with the base class).
34 /// You might consider just as it is, namely a C++ wrapper to
35 /// a plain int[] array.
37 /// \author Laurent Aphecetche
40 ClassImp(AliMUONCalibParam1I)
43 //_____________________________________________________________________________
44 AliMUONCalibParam1I::AliMUONCalibParam1I()
45 : AliMUONVCalibParam(),
49 /// Default constructor.
52 //_____________________________________________________________________________
53 AliMUONCalibParam1I::AliMUONCalibParam1I(Int_t theSize, Int_t fillWithValue)
54 : AliMUONVCalibParam(),
58 /// Normal constructor, where theSize specifies the number of channels handled
59 /// by this object, and fillWithValue the default value assigned to each
64 fValues = new Int_t[fSize];
65 for ( Int_t i = 0; i < fSize; ++i )
67 fValues[i] = fillWithValue;
72 //_____________________________________________________________________________
73 AliMUONCalibParam1I::AliMUONCalibParam1I(const AliMUONCalibParam1I& other)
74 : AliMUONVCalibParam(other),
83 //_____________________________________________________________________________
85 AliMUONCalibParam1I::operator=(const AliMUONCalibParam1I& other)
87 /// Assignment operator
89 AliMUONVCalibParam::operator=(other);
94 //_____________________________________________________________________________
95 AliMUONCalibParam1I::~AliMUONCalibParam1I()
102 //_____________________________________________________________________________
104 AliMUONCalibParam1I::CopyTo(AliMUONCalibParam1I& destination) const
106 /// Copy this into destination.
108 delete[] destination.fValues;
109 destination.fSize = fSize;
112 destination.fValues = new Int_t[fSize];
113 for ( Int_t i = 0; i < fSize; ++i )
115 destination.fValues[i] = fValues[i];
120 //_____________________________________________________________________________
122 AliMUONCalibParam1I::Print(Option_t* opt) const
124 /// Output this object to stdout.
125 /// If opt=="full", then all channels are printed, otherwise
126 /// only the general characteristics are printed.
130 cout << "AliMUONCalibParam1I - Size=" << Size()
131 << " Dimension=" << Dimension()
133 if ( sopt.Contains("FULL") )
135 for ( Int_t i = 0; i < Size(); ++i )
137 cout << setw(6) << ValueAsInt(i) << " , " << endl;
142 //_____________________________________________________________________________
144 AliMUONCalibParam1I::SetValueAsFloat(Int_t i, Int_t j, Float_t value)
146 /// Set the value as a float, which is casted to an int prior to storage.
148 SetValueAsInt(i,j,TMath::Nint(value));
151 //_____________________________________________________________________________
153 AliMUONCalibParam1I::SetValueAsInt(Int_t i, Int_t j, Int_t value)
155 /// Set the value for a given channel.
156 /// (i,j) are checked for correctness before use.
158 if ( j != 0 || i >= fSize || i < 0 )
160 AliError(Form("Invalid (i,j)=(%d,%d) max allowed is (%d,%d)",
161 i,j,Size()-1,Dimension()-1));
169 //_____________________________________________________________________________
171 AliMUONCalibParam1I::ValueAsFloat(Int_t i, Int_t j) const
173 /// Return one value as a float.
175 return 1.0*ValueAsInt(i,j);
178 //_____________________________________________________________________________
180 AliMUONCalibParam1I::ValueAsInt(Int_t i, Int_t j) const
182 /// Return one value as an integer, after checking that (i,j)
183 /// are valid indices.
185 if ( j != 0 || i >= fSize || i < 0 )
187 AliError(Form("Invalid (i,j)=(%d,%d) max allowed is (%d,%d)",
188 i,j,Size()-1,Dimension()-1));