#ifndef ALIHISTOGRAMCOLLECTION_H
#define ALIHISTOGRAMCOLLECTION_H
#ifndef ROOT_TNamed
# include "TNamed.h"
#endif
#ifndef ROOT_TString
# include "TString.h"
#endif
#ifndef ROOT_TCollection
# include "TCollection.h"
#endif
#include "Riostream.h"
#include <map>
#include <string>
class TH1;
class TMap;
class AliHistogramCollectionIterator;
class AliMergeableCollection;
class AliHistogramCollection : public TNamed
{
friend class AliHistogramCollectionIterator;
public:
AliHistogramCollection(const char* name="", const char* title="");
virtual ~AliHistogramCollection();
virtual AliHistogramCollection* Clone(const char* name="") const;
AliMergeableCollection* Convert() const;
Bool_t Adopt(TH1* histo);
Bool_t Adopt(const char* keyA, TH1* histo);
Bool_t Adopt(const char* keyA, const char* keyB, TH1* histo);
Bool_t Adopt(const char* keyA, const char* keyB, const char* keyC, TH1* histo);
Bool_t Adopt(const char* keyA, const char* keyB, const char* keyC, const char* keyD, TH1* histo);
virtual void Clear(Option_t *option="") { Delete(option); }
virtual TObject* FindObject(const char* identifier) const;
virtual TObject* FindObject(const TObject* key) const;
virtual void Delete(Option_t *option="");
virtual Int_t NumberOfHistograms() const;
virtual Int_t NumberOfKeys() const;
TH1* Histo(const char* identifier) const;
TH1* Histo(const char* keyA, const char* histoname) const;
TH1* Histo(const char* keyA, const char* keyB, const char* histoname) const;
TH1* Histo(const char* keyA, const char* keyB, const char* keyC, const char* histoname) const;
TH1* Histo(const char* keyA, const char* keyB, const char* keyC, const char* keyD, const char* histoname) const;
virtual TIterator* CreateIterator(Bool_t dir = kIterForward) const;
virtual TList* CreateListOfKeysA() const;
virtual TList* CreateListOfKeysB() const;
virtual TList* CreateListOfKeysC() const;
virtual TList* CreateListOfKeysD() const;
virtual TList* CreateListOfHistogramNames(const char* keyA, const char* keyB="", const char* keyC="", const char* keyD="") const;
virtual TObject* Remove(TObject *obj);
TString KeyA(const char* identifier) const;
TString KeyB(const char* identifier) const;
TString KeyC(const char* identifier) const;
TString KeyD(const char* identifier) const;
TString HistoName(const char* identifier) const;
void Print(Option_t *option="") const;
void ClearMessages();
void PrintMessages(const char* prefix="") const;
Long64_t Merge(TCollection* list);
AliHistogramCollection* Project(const char* keyA, const char* keyB="", const char* keyC="", const char* keyD="") const;
UInt_t EstimateSize(Bool_t show=kFALSE) const;
void ShowEmptyHistograms(Bool_t show=kTRUE) {
fMustShowEmptyHistogram = show;
}
void PruneEmptyHistograms();
private:
AliHistogramCollection(const AliHistogramCollection& rhs);
AliHistogramCollection& operator=(const AliHistogramCollection& rhs);
TList* CreateListOfKeys(Int_t index) const;
Bool_t InternalAdopt(const char* identifier, TH1* histo);
Bool_t HistoSameAxis(TH1 *h0, TH1 *h1) const;
TString InternalDecode(const char* identifier, Int_t index) const;
TH1* InternalHisto(const char* identifier, const char* histoname) const;
TObjArray* SortAllIdentifiers() const;
TString NormalizeName(const char* identifier, const char* action) const;
TMap* Map() const;
private:
mutable TMap* fMap;
Bool_t fMustShowEmptyHistogram;
mutable Int_t fMapVersion;
mutable std::map<std::string,int> fMessages;
ClassDef(AliHistogramCollection,7)
};
class AliHistogramCollectionIterator : public TIterator
{
public:
virtual ~AliHistogramCollectionIterator();
AliHistogramCollectionIterator(const AliHistogramCollection* hcol, Bool_t direction=kIterForward);
AliHistogramCollectionIterator& operator=(const TIterator &rhs);
const TCollection *GetCollection() const { return 0x0; }
TObject* Next();
void Reset();
private:
const AliHistogramCollection* fkHistogramCollection;
TIterator* fMapIterator;
TIterator* fHashListIterator;
Bool_t fDirection;
AliHistogramCollectionIterator() : fkHistogramCollection(0x0), fMapIterator(0x0), fHashListIterator(0x0), fDirection(kIterForward) {}
AliHistogramCollectionIterator& operator=(const AliHistogramCollectionIterator &rhs);
AliHistogramCollectionIterator(const AliHistogramCollectionIterator &iter);
ClassDef(AliHistogramCollectionIterator,0)
};
#endif
AliHistogramCollection.h:1 AliHistogramCollection.h:2 AliHistogramCollection.h:3 AliHistogramCollection.h:4 AliHistogramCollection.h:5 AliHistogramCollection.h:6 AliHistogramCollection.h:7 AliHistogramCollection.h:8 AliHistogramCollection.h:9 AliHistogramCollection.h:10 AliHistogramCollection.h:11 AliHistogramCollection.h:12 AliHistogramCollection.h:13 AliHistogramCollection.h:14 AliHistogramCollection.h:15 AliHistogramCollection.h:16 AliHistogramCollection.h:17 AliHistogramCollection.h:18 AliHistogramCollection.h:19 AliHistogramCollection.h:20 AliHistogramCollection.h:21 AliHistogramCollection.h:22 AliHistogramCollection.h:23 AliHistogramCollection.h:24 AliHistogramCollection.h:25 AliHistogramCollection.h:26 AliHistogramCollection.h:27 AliHistogramCollection.h:28 AliHistogramCollection.h:29 AliHistogramCollection.h:30 AliHistogramCollection.h:31 AliHistogramCollection.h:32 AliHistogramCollection.h:33 AliHistogramCollection.h:34 AliHistogramCollection.h:35 AliHistogramCollection.h:36 AliHistogramCollection.h:37 AliHistogramCollection.h:38 AliHistogramCollection.h:39 AliHistogramCollection.h:40 AliHistogramCollection.h:41 AliHistogramCollection.h:42 AliHistogramCollection.h:43 AliHistogramCollection.h:44 AliHistogramCollection.h:45 AliHistogramCollection.h:46 AliHistogramCollection.h:47 AliHistogramCollection.h:48 AliHistogramCollection.h:49 AliHistogramCollection.h:50 AliHistogramCollection.h:51 AliHistogramCollection.h:52 AliHistogramCollection.h:53 AliHistogramCollection.h:54 AliHistogramCollection.h:55 AliHistogramCollection.h:56 AliHistogramCollection.h:57 AliHistogramCollection.h:58 AliHistogramCollection.h:59 AliHistogramCollection.h:60 AliHistogramCollection.h:61 AliHistogramCollection.h:62 AliHistogramCollection.h:63 AliHistogramCollection.h:64 AliHistogramCollection.h:65 AliHistogramCollection.h:66 AliHistogramCollection.h:67 AliHistogramCollection.h:68 AliHistogramCollection.h:69 AliHistogramCollection.h:70 AliHistogramCollection.h:71 AliHistogramCollection.h:72 AliHistogramCollection.h:73 AliHistogramCollection.h:74 AliHistogramCollection.h:75 AliHistogramCollection.h:76 AliHistogramCollection.h:77 AliHistogramCollection.h:78 AliHistogramCollection.h:79 AliHistogramCollection.h:80 AliHistogramCollection.h:81 AliHistogramCollection.h:82 AliHistogramCollection.h:83 AliHistogramCollection.h:84 AliHistogramCollection.h:85 AliHistogramCollection.h:86 AliHistogramCollection.h:87 AliHistogramCollection.h:88 AliHistogramCollection.h:89 AliHistogramCollection.h:90 AliHistogramCollection.h:91 AliHistogramCollection.h:92 AliHistogramCollection.h:93 AliHistogramCollection.h:94 AliHistogramCollection.h:95 AliHistogramCollection.h:96 AliHistogramCollection.h:97 AliHistogramCollection.h:98 AliHistogramCollection.h:99 AliHistogramCollection.h:100 AliHistogramCollection.h:101 AliHistogramCollection.h:102 AliHistogramCollection.h:103 AliHistogramCollection.h:104 AliHistogramCollection.h:105 AliHistogramCollection.h:106 AliHistogramCollection.h:107 AliHistogramCollection.h:108 AliHistogramCollection.h:109 AliHistogramCollection.h:110 AliHistogramCollection.h:111 AliHistogramCollection.h:112 AliHistogramCollection.h:113 AliHistogramCollection.h:114 AliHistogramCollection.h:115 AliHistogramCollection.h:116 AliHistogramCollection.h:117 AliHistogramCollection.h:118 AliHistogramCollection.h:119 AliHistogramCollection.h:120 AliHistogramCollection.h:121 AliHistogramCollection.h:122 AliHistogramCollection.h:123 AliHistogramCollection.h:124 AliHistogramCollection.h:125 AliHistogramCollection.h:126 AliHistogramCollection.h:127 AliHistogramCollection.h:128 AliHistogramCollection.h:129 AliHistogramCollection.h:130 AliHistogramCollection.h:131 AliHistogramCollection.h:132 AliHistogramCollection.h:133 AliHistogramCollection.h:134 AliHistogramCollection.h:135 AliHistogramCollection.h:136 AliHistogramCollection.h:137 AliHistogramCollection.h:138 AliHistogramCollection.h:139 AliHistogramCollection.h:140 AliHistogramCollection.h:141 AliHistogramCollection.h:142 AliHistogramCollection.h:143 AliHistogramCollection.h:144 AliHistogramCollection.h:145 AliHistogramCollection.h:146 AliHistogramCollection.h:147 AliHistogramCollection.h:148 AliHistogramCollection.h:149 AliHistogramCollection.h:150 AliHistogramCollection.h:151 AliHistogramCollection.h:152 AliHistogramCollection.h:153 AliHistogramCollection.h:154 AliHistogramCollection.h:155 AliHistogramCollection.h:156 AliHistogramCollection.h:157 AliHistogramCollection.h:158 AliHistogramCollection.h:159 AliHistogramCollection.h:160 AliHistogramCollection.h:161 AliHistogramCollection.h:162 AliHistogramCollection.h:163 AliHistogramCollection.h:164 AliHistogramCollection.h:165 AliHistogramCollection.h:166 AliHistogramCollection.h:167 AliHistogramCollection.h:168 AliHistogramCollection.h:169 AliHistogramCollection.h:170 AliHistogramCollection.h:171