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 // ------------------------------------
19 // Class AliMUONStringIntMap
20 // ------------------------------------
21 // Helper class that substitutes map <string, int>
22 // which ALICE does not allow to use
23 // Author: Ivana Hrivnacova, IPN Orsay
25 #include <Riostream.h>
26 #include <TObjString.h>
28 #include "AliMUONStringIntMap.h"
31 ClassImp(AliMUONStringIntMap)
33 //______________________________________________________________________________
34 AliMUONStringIntMap::AliMUONStringIntMap()
40 /// Standard constructor
42 fFirstArray.SetOwner(true);
45 //______________________________________________________________________________
46 AliMUONStringIntMap::AliMUONStringIntMap(const AliMUONStringIntMap& rhs)
49 /// Protected copy constructor
51 AliFatal("Copy constructor is not implemented.");
54 //______________________________________________________________________________
55 AliMUONStringIntMap::~AliMUONStringIntMap()
62 //______________________________________________________________________________
64 AliMUONStringIntMap::operator = (const AliMUONStringIntMap& rhs)
66 /// Protected assignement operator
68 // check assignement to self
69 if (this == &rhs) return *this;
71 AliFatal("Assignment operator is not implemented.");
81 //______________________________________________________________________________
82 Bool_t AliMUONStringIntMap::Add(const TString& first, Int_t second)
84 /// Add map element if first not yet present
86 Int_t second2 = Get(first);
88 AliError(Form("%s is already present in the map", first.Data()));
92 // Resize TArrayI if needed
93 if (fSecondArray.GetSize() == fNofItems) fSecondArray.Set(2*fNofItems);
95 fFirstArray.Add(new TObjString(first));
96 fSecondArray.AddAt(second, fNofItems);
102 //______________________________________________________________________________
103 Int_t AliMUONStringIntMap::Get(const TString& first) const
105 /// Find the element with specified key (first)
107 for (Int_t i=0; i<fNofItems; i++) {
108 if ( ((TObjString*)fFirstArray.At(i))->GetString() == first )
109 return fSecondArray.At(i);
115 //______________________________________________________________________________
116 Int_t AliMUONStringIntMap::GetNofItems() const
118 /// Return the number of elements
123 //______________________________________________________________________________
124 void AliMUONStringIntMap::Clear(Option_t* /*option*/)
126 /// Delete the elements
129 fFirstArray.Delete();
130 fSecondArray.Reset();
133 //______________________________________________________________________________
134 void AliMUONStringIntMap::Print(const char* /*option*/) const
136 /// Print the map elements
138 for (Int_t i=0; i<fNofItems; i++) {
141 << ((TObjString*)fFirstArray.At(i))->GetString()
144 << fSecondArray.At(i)
149 //______________________________________________________________________________
150 void AliMUONStringIntMap::Print(const TString& key, ofstream& out) const
152 // Prints the map elements
154 for (Int_t i=0; i<fNofItems; i++) {
156 << ((TObjString*)fFirstArray.At(i))->GetString()
159 << fSecondArray.At(i)