#include "AliCounterCollection.h"
#include <limits.h>
#include <AliLog.h>
#include <TString.h>
#include <TObjString.h>
#include <TObjArray.h>
#include <THnSparse.h>
#include <THashList.h>
#include <TArrayI.h>
#include <TH1D.h>
#include <TH2D.h>
#include <TCollection.h>
ClassImp(AliCounterCollection)
AliCounterCollection::AliCounterCollection(const char* name) :
TNamed(name,name),
fRubrics(new THashList(10)),
fRubricsSize(new TArrayI(10)),
fCounters(0x0),
fWeightedCounters(kFALSE),
fLongCounters(kFALSE)
{
fRubrics->SetOwner();
}
AliCounterCollection::~AliCounterCollection()
{
delete fRubrics;
delete fRubricsSize;
delete fCounters;
}
void AliCounterCollection::Clear(Option_t*)
{
fRubrics->Clear();
fRubricsSize->Reset();
delete fCounters; fCounters = 0x0;
fWeightedCounters = kFALSE;
fLongCounters = kFALSE;
}
void AliCounterCollection::AddRubric(TString name, TString listOfKeyWords)
{
name.ToUpper();
listOfKeyWords.ToUpper();
if (fRubrics->Contains(name.Data())) {
AliError(Form("rubric named %s already exist",name.Data()));
return;
}
TObjArray* rubric = listOfKeyWords.Tokenize("/");
CleanListOfStrings(rubric);
rubric->SetName(name.Data());
Int_t nRubrics = fRubrics->GetSize();
rubric->SetUniqueID(nRubrics);
fRubrics->AddLast(rubric);
if (nRubrics+1 > fRubricsSize->GetSize()) fRubricsSize->Set(2*fRubricsSize->GetSize());
(*fRubricsSize)[nRubrics] = rubric->GetEntriesFast();
}
void AliCounterCollection::AddRubric(TString name, Int_t maxNKeyWords)
{
name.ToUpper();
if (fRubrics->Contains(name.Data())) {
AliError(Form("rubric named %s already exist",name.Data()));
return;
}
TObjString* rubric = new TObjString(name.Data());
Int_t nRubrics = fRubrics->GetSize();
rubric->SetUniqueID(nRubrics);
fRubrics->AddLast(rubric);
if (nRubrics+1 > fRubricsSize->GetSize()) fRubricsSize->Set(2*fRubricsSize->GetSize());
(*fRubricsSize)[nRubrics] = maxNKeyWords;
}
void AliCounterCollection::Init(Bool_t weightedCounters)
{
delete fCounters;
fWeightedCounters = weightedCounters;
if (fWeightedCounters)
fCounters = new THnSparseT<TArrayF>("hCounters", "hCounters", fRubrics->GetSize(), fRubricsSize->GetArray(), 0x0, 0x0);
else
fCounters = new THnSparseT<TArrayI>("hCounters", "hCounters", fRubrics->GetSize(), fRubricsSize->GetArray(), 0x0, 0x0);
TObject* rubric = 0x0;
TIter nextRubric(fRubrics);
while ((rubric = nextRubric())) {
TAxis* axis = fCounters->GetAxis((Int_t)rubric->GetUniqueID());
axis->SetName(rubric->GetName());
TObjArray* keyWords = dynamic_cast<TObjArray*>(rubric);
if (keyWords) {
TObjString* label = 0x0;
Int_t bin = 1;
TIter nextLabel(keyWords);
while ((label = static_cast<TObjString*>(nextLabel()))) axis->SetBinLabel(bin++, label->String().Data());
}
}
}
Int_t AliCounterCollection::GetNActiveBins(Int_t dim)
{
THashList* labels = fCounters->GetAxis(dim)->GetLabels();
return (labels) ? labels->GetSize() : 0;
}
Bool_t AliCounterCollection::ContainsAny(Int_t dim)
{
THashList* labels = fCounters->GetAxis(dim)->GetLabels();
return (labels && labels->Contains("ANY"));
}
const Int_t* AliCounterCollection::FindBins(const TString& externalKey, Bool_t allocate, Int_t& nEmptySlots)
{
Int_t nRubrics = fRubrics->GetSize();
Int_t* bins = new Int_t[nRubrics];
for (Int_t i=0; i<nRubrics; i++) bins[i] = -1;
nEmptySlots = nRubrics;
Bool_t isValid = kTRUE;
TObjArray* rubricKeyPairs = externalKey.Tokenize("/");
TObjString* pair = 0x0;
TIter next(rubricKeyPairs);
while ((pair = static_cast<TObjString*>(next()))) {
TObjArray* rubricKeyPair = pair->String().Tokenize(":");
if (rubricKeyPair->GetEntriesFast() != 2) {
AliError("invalid key format");
isValid = kFALSE;
delete rubricKeyPair;
break;
}
Int_t dim = FindDim(static_cast<TObjString*>(rubricKeyPair->UncheckedAt(0))->String());
if (dim < 0) {
isValid = kFALSE;
delete rubricKeyPair;
break;
}
Int_t bin = FindBin(dim, static_cast<TObjString*>(rubricKeyPair->UncheckedAt(1))->String(), allocate);
if (bin < 0) {
isValid = kFALSE;
delete rubricKeyPair;
break;
}
if (bins[dim] >= 0) {
AliWarning("key already given for that rubric --> ignored");
delete rubricKeyPair;
continue;
}
bins[dim] = bin;
nEmptySlots--;
delete rubricKeyPair;
}
if (!isValid) {
delete[] bins;
bins = 0x0;
nEmptySlots = nRubrics;
}
delete rubricKeyPairs;
return bins;
}
Int_t AliCounterCollection::FindDim(const TString& rubricName) const
{
TObject* rubric = fRubrics->FindObject(rubricName.Data());
if (!rubric) {
AliError(Form("invalid rubric: %s",rubricName.Data()));
return -1;
}
return (Int_t) rubric->GetUniqueID();
}
Int_t AliCounterCollection::FindBin(Int_t dim, const TString& keyWord, Bool_t allocate)
{
TAxis* axis = fCounters->GetAxis(dim);
THashList* labels = axis->GetLabels();
TObjString* label = (labels) ? static_cast<TObjString*>(labels->FindObject(keyWord.Data())) : 0x0;
Int_t bin = (label) ? (Int_t)label->GetUniqueID() : -1;
if (bin<0 && allocate) {
Int_t nLabels = (labels) ? labels->GetSize() : 0;
if (nLabels < axis->GetNbins()) {
bin = nLabels+1;
axis->SetBinLabel(bin, keyWord.Data());
}
}
if (bin<0) AliError(Form("invalid key word: %s:%s",axis->GetName(),keyWord.Data()));
return bin;
}
Short_t** AliCounterCollection::DecodeSelection(const TString& selections, const TObjArray& displayedRubrics)
{
Int_t nRubrics = fCounters->GetNdimensions();
Short_t** selects = new Short_t*[nRubrics];
for (Int_t i=0; i<nRubrics; i++) selects[i] = 0x0;
TObjArray* rubricKeyPairs = selections.Tokenize("/");
TObjString* pair = 0x0;
TIter next(rubricKeyPairs);
while ((pair = static_cast<TObjString*>(next()))) {
TObjArray* rubricKeyPair = pair->String().Tokenize(":");
if (rubricKeyPair->GetEntriesFast() != 2) {
AliError("invalid key format");
delete rubricKeyPair;
delete rubricKeyPairs;
for (Int_t i=0; i<nRubrics; i++) if (selects[i]) delete[] selects[i];
delete[] selects;
return 0x0;
}
Int_t include = kTRUE;
TString ListOfKeyWords(static_cast<TObjString*>(rubricKeyPair->UncheckedAt(1))->String());
if (ListOfKeyWords.BeginsWith("ANY-")) {
ListOfKeyWords.Remove(0,4);
include = kFALSE;
}
const TString& rubric = static_cast<TObjString*>(rubricKeyPair->UncheckedAt(0))->String();
if (!Select(include, rubric, ListOfKeyWords, displayedRubrics.Contains(rubric.Data()), selects)) {
delete rubricKeyPair;
delete rubricKeyPairs;
for (Int_t i=0; i<nRubrics; i++) if (selects[i]) delete[] selects[i];
delete[] selects;
return 0x0;
}
delete rubricKeyPair;
}
delete rubricKeyPairs;
for (Int_t i=0; i<nRubrics; i++) {
if (selects[i]) continue;
Int_t nBins = GetNActiveBins(i) + 1;
selects[i] = new Short_t[nBins];
if (ContainsAny(i) && !displayedRubrics.Contains(fCounters->GetAxis(i)->GetName())) {
memset(selects[i], 0, sizeof(Short_t) * nBins);
selects[i][FindBin(i, "ANY", kFALSE)] = 1;
} else for (Int_t j=0; j<nBins; j++) selects[i][j] = 1;
}
return selects;
}
Bool_t AliCounterCollection::Select(Bool_t include, const TString& rubric, const TString& keywords,
Bool_t displayed, Short_t* selectBins[])
{
Int_t dim = FindDim(rubric);
if (dim < 0) return kFALSE;
if (selectBins[dim]) {
AliWarning(Form("selection already made for rubric %s --> ignored",rubric.Data()));
return kTRUE;
}
TObjArray* keys = keywords.Tokenize(",");
if (keys->GetEntriesFast() == 0) {
AliError(Form("no key word specified for rubric %s",rubric.Data()));
delete keys;
return kFALSE;
}
Int_t nBins = GetNActiveBins(dim) + 1;
selectBins[dim] = new Short_t[nBins];
Bool_t containsAny = ContainsAny(dim);
if (include || (containsAny && !displayed)) {
memset(selectBins[dim], 0, sizeof(Short_t) * nBins);
if (!include) selectBins[dim][FindBin(dim, "ANY", kFALSE)] = 1;
} else for (Int_t j=0; j<nBins; j++) selectBins[dim][j] = 1;
TObjString* key = 0x0;
TIter nextKey(keys);
while ((key = static_cast<TObjString*>(nextKey()))) {
if (key->String() == "ANY") {
if (containsAny) {
Int_t binAny = FindBin(dim, "ANY", kFALSE);
if (include) selectBins[dim][binAny] = 1;
else selectBins[dim][binAny] = 0;
} else {
if (include) for (Int_t j=0; j<nBins; j++) selectBins[dim][j] = 1;
else memset(selectBins[dim], 0, sizeof(Short_t) * nBins);
}
} else {
Int_t bin = FindBin(dim, key->String().Data(), kFALSE);
if (bin < 0) {
delete keys;
return kFALSE;
}
if (include) selectBins[dim][bin] = 1;
else if (containsAny && !displayed) selectBins[dim][bin] = -1;
else selectBins[dim][bin] = 0;
}
}
delete keys;
return kTRUE;
}
void AliCounterCollection::CleanListOfStrings(TObjArray* list)
{
Int_t nEntries = list->GetEntriesFast();
for (Int_t i = 0; i < nEntries; i++) {
TObjString* entry1 = static_cast<TObjString*>(list->UncheckedAt(i));
if (!entry1) continue;
for (Int_t j = i+1; j < nEntries; j++) {
TObjString* entry2 = static_cast<TObjString*>(list->UncheckedAt(j));
if (entry2 && entry2->IsEqual(entry1)) {
AliWarning(Form("multiple-occurence of string \"%s\" --> removed",entry2->String().Data()));
list->RemoveAt(j);
}
}
}
list->Compress();
}
void AliCounterCollection::Count(TString externalKey, Int_t value)
{
if (value > 0) CountAsDouble(externalKey, (Double_t)value);
else if (value < 0) AliError("cannot count negative values");
}
void AliCounterCollection::Count(TString externalKey, Double_t value)
{
if (fWeightedCounters) CountAsDouble(externalKey, value);
else AliError("non-weighted counters can only be filled with intergers");
}
void AliCounterCollection::CountAsDouble(TString externalKey, Double_t value)
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
externalKey.ToUpper();
Int_t nEmptySlots = 0;
const Int_t* bins = FindBins(externalKey, kTRUE, nEmptySlots);
if (!bins) return;
if (nEmptySlots > 0) {
AliError("incomplete key");
delete[] bins;
return;
}
if (fWeightedCounters || fLongCounters) {
fCounters->AddBinContent(bins, value);
} else {
Long64_t linBin = fCounters->GetBin(bins, kTRUE);
Double_t currentValue = fCounters->GetBinContent(linBin);
if (currentValue+value > INT_MAX) {
ConvertToTHnSparseL(fCounters);
fLongCounters = kTRUE;
fCounters->AddBinContent(bins, value);
} else fCounters->AddBinContent(linBin, value);
}
delete[] bins;
}
void AliCounterCollection::Print(const Option_t* opt) const
{
if (strcmp(opt,"")) {
const_cast<AliCounterCollection*>(this)->Print(opt, "");
return;
}
if (!fCounters) {
AliError("counters are not initialized");
return;
}
if (fCounters->GetNbins() == 0) {
printf("\nall counters are empty\n\n");
return;
}
Int_t nRubrics = fCounters->GetNdimensions();
Int_t* bins = new Int_t[nRubrics];
for (Long64_t i=0; i<fCounters->GetNbins(); ++i) {
Double_t value = fCounters->GetBinContent(i, bins);
TString counter;
for (Int_t j=0; j<nRubrics; j++) counter += Form("/%s",fCounters->GetAxis(j)->GetBinLabel(bins[j]));
counter += "/";
if (fWeightedCounters) printf("\n%s %g", counter.Data(), value);
else if (fLongCounters) printf("\n%s %ld", counter.Data(), (Long_t)value);
else printf("\n%s %d", counter.Data(), (Int_t)value);
}
printf("\n\n");
delete[] bins;
}
TString AliCounterCollection::GetKeyWords(TString rubric) const
{
TString keyWords = "";
if (!fCounters) {
AliError("counters are not initialized");
return keyWords;
}
rubric.ToUpper();
Int_t dim = FindDim(rubric);
if (dim < 0) return keyWords;
TObjString* label = 0x0;
TIter nextLabel(fCounters->GetAxis(dim)->GetLabels());
while ((label = static_cast<TObjString*>(nextLabel()))) keyWords += Form("%s,",label->String().Data());
keyWords.Remove(TString::kTrailing, ',');
return keyWords;
}
Double_t AliCounterCollection::GetSum(TString selections, Bool_t* longCounters)
{
if (longCounters) *longCounters = fLongCounters;
if (!fCounters) {
AliError("counters are not initialized");
return 0.;
}
selections.ToUpper();
Short_t** select = DecodeSelection(selections, TObjArray());
if (!select) return 0.;
Double_t sum = 0.;
Int_t nDims = fCounters->GetNdimensions();
Int_t* coord = new Int_t[nDims];
for (Long64_t i=0; i<fCounters->GetNbins(); ++i) {
Double_t value = fCounters->GetBinContent(i, coord);
Int_t selectionFactor = 1;
for (Int_t dim = 0; dim < nDims && selectionFactor != 0; dim++) selectionFactor *= select[dim][coord[dim]];
if (selectionFactor == 0) continue;
sum += selectionFactor * value;
}
if (longCounters && !fWeightedCounters && sum > INT_MAX) *longCounters = kTRUE;
for (Int_t iDim=0; iDim<nDims; iDim++) delete[] select[iDim];
delete[] select;
delete[] coord;
return sum;
}
void AliCounterCollection::PrintKeyWords() const
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
Int_t nRubrics = fCounters->GetNdimensions();
for (Int_t iDim=0; iDim<nRubrics; iDim++) {
TAxis* axis = fCounters->GetAxis(iDim);
printf("\n%s:", axis->GetName());
Bool_t first = kTRUE;
TObjString* label = 0x0;
TIter nextLabel(axis->GetLabels());
while ((label = static_cast<TObjString*>(nextLabel()))) {
if (first) {
printf("%s", label->String().Data());
first = kFALSE;
} else printf(",%s", label->String().Data());
}
}
printf("\n\n");
}
void AliCounterCollection::PrintValue(TString selections)
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
selections.ToUpper();
Int_t nEmptySlots = 0;
const Int_t* selectedBins = FindBins(selections, kFALSE, nEmptySlots);
if (!selectedBins) return;
if (nEmptySlots > 0) {
AliError("incomplete key");
delete[] selectedBins;
return;
}
if (fWeightedCounters) printf("\n%g\n\n", fCounters->GetBinContent(selectedBins));
else if (fLongCounters) printf("\n%ld\n\n", (Long_t) fCounters->GetBinContent(selectedBins));
else printf("\n%d\n\n", (Int_t) fCounters->GetBinContent(selectedBins));
delete[] selectedBins;
}
void AliCounterCollection::Print(TString rubrics, TString selections, Bool_t removeEmpty)
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
rubrics.ToUpper();
selections.ToUpper();
TObjArray* rubricsToPrint = rubrics.Tokenize("/");
if (rubricsToPrint->GetEntriesFast() == 0) {
delete rubricsToPrint;
return;
}
CleanListOfStrings(rubricsToPrint);
Bool_t longCounters = kFALSE;
TObject* hist = Projection(*rubricsToPrint, selections, longCounters);
if (!hist) {
delete rubricsToPrint;
return;
}
Int_t nRubricsToPrint = rubricsToPrint->GetEntriesFast();
if (nRubricsToPrint == 1 && (static_cast<TH1D*>(hist))->GetEntries() > 0)
PrintList(static_cast<TH1D*>(hist), removeEmpty, longCounters);
else if (nRubricsToPrint == 2 && (static_cast<TH2D*>(hist))->GetEntries() > 0)
PrintArray(static_cast<TH2D*>(hist), removeEmpty, longCounters);
else if (nRubricsToPrint > 2 && (static_cast<THnSparse*>(hist))->GetEntries() > 0)
PrintListOfArrays(static_cast<THnSparse*>(hist), removeEmpty, longCounters);
else
printf("\nselected counters are empty\n\n");
delete rubricsToPrint;
delete hist;
}
void AliCounterCollection::PrintSum(TString selections)
{
Bool_t longCounters = kFALSE;
Double_t sum = GetSum(selections, &longCounters);
if (fWeightedCounters) printf("\n%g\n\n", sum);
else if (longCounters) printf("\n%ld\n\n", (Long_t)sum);
else printf("\n%d\n\n", (Int_t)sum);
}
void AliCounterCollection::PrintList(const TH1D* hist, Bool_t removeEmpty, Bool_t longCounters) const
{
THashList* labels = hist->GetXaxis()->GetLabels();
TString format = "";
if (fWeightedCounters) format = Form("\n%%%ds %%10g",GetMaxLabelSize(labels));
else if (longCounters) format = Form("\n%%%ds %%16ld",GetMaxLabelSize(labels));
else format = Form("\n%%%ds %%10d",GetMaxLabelSize(labels));
TObjString* label = 0x0;
TIter nextLabel(labels);
while ((label = static_cast<TObjString*>(nextLabel()))) {
Int_t bin = (Int_t) label->GetUniqueID();
Double_t value = hist->GetBinContent(bin);
if (removeEmpty && value == 0.) continue;
if (fWeightedCounters) printf(format.Data(), label->String().Data(), value);
else if (longCounters) printf(format.Data(), label->String().Data(), (Long_t) value);
else printf(format.Data(), label->String().Data(), (Int_t) value);
}
printf("\n\n");
}
void AliCounterCollection::PrintArray(const TH2D* hist, Bool_t removeEmpty, Bool_t longCounters) const
{
THashList* labelsX = hist->GetXaxis()->GetLabels();
TString formatX(Form("\n%%%ds ",GetMaxLabelSize(labelsX)));
THashList* labelsY = hist->GetYaxis()->GetLabels();
Int_t maxLabelSizeY = GetMaxLabelSize(labelsY);
TString formatYv = "";
if (fWeightedCounters) {
maxLabelSizeY = TMath::Max(10, maxLabelSizeY);
formatYv = Form("%%%dg ",maxLabelSizeY);
} else if (longCounters) {
maxLabelSizeY = TMath::Max(16, maxLabelSizeY);
formatYv = Form("%%%dld ",maxLabelSizeY);
} else {
maxLabelSizeY = TMath::Max(10, maxLabelSizeY);
formatYv = Form("%%%dd ",maxLabelSizeY);
}
TString formatYs = Form("%%%ds ",maxLabelSizeY);
Bool_t *useLabelX = 0x0, *useLabelY = 0x0;
TObjString *labelX = 0x0, *labelY = 0x0;
TIter nextLabelX(labelsX);
TIter nextLabelY(labelsY);
if (removeEmpty) {
useLabelX = new Bool_t[labelsX->GetSize()+1];
memset(useLabelX, kFALSE, sizeof(Bool_t) * (labelsX->GetSize()+1));
useLabelY = new Bool_t[labelsY->GetSize()+1];
memset(useLabelY, kFALSE, sizeof(Bool_t) * (labelsY->GetSize()+1));
while ((labelX = static_cast<TObjString*>(nextLabelX()))) {
Int_t binX = (Int_t) labelX->GetUniqueID();
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
Int_t binY = (Int_t) labelY->GetUniqueID();
if (useLabelX[binX] && useLabelY[binY]) continue;
if (hist->GetBinContent(binX, binY) == 0.) continue;
useLabelX[binX] = kTRUE;
useLabelY[binY] = kTRUE;
}
}
}
printf(formatX.Data()," ");
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
if (removeEmpty && !useLabelY[labelY->GetUniqueID()]) continue;
printf(formatYs.Data(), labelY->String().Data());
}
nextLabelX.Reset();
while ((labelX = static_cast<TObjString*>(nextLabelX()))) {
Int_t binX = (Int_t) labelX->GetUniqueID();
if (removeEmpty && !useLabelX[binX]) continue;
printf(formatX.Data(), labelX->String().Data());
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
Int_t binY = (Int_t) labelY->GetUniqueID();
if (removeEmpty && !useLabelY[binY]) continue;
if (fWeightedCounters) printf(formatYv.Data(), hist->GetBinContent(binX, binY));
else if (longCounters) printf(formatYv.Data(), (Long_t) hist->GetBinContent(binX, binY));
else printf(formatYv.Data(), (Int_t) hist->GetBinContent(binX, binY));
}
}
printf("\n\n");
if (removeEmpty) {
delete[] useLabelX;
delete[] useLabelY;
}
}
void AliCounterCollection::PrintListOfArrays(const THnSparse* hist, Bool_t removeEmpty, Bool_t longCounters) const
{
THashList* labelsX = hist->GetAxis(0)->GetLabels();
TString formatX(Form("\n%%%ds ",GetMaxLabelSize(labelsX)));
THashList* labelsY = hist->GetAxis(1)->GetLabels();
Int_t maxLabelSizeY = GetMaxLabelSize(labelsY);
TString formatYv = "";
if (fWeightedCounters) {
maxLabelSizeY = TMath::Max(10, maxLabelSizeY);
formatYv = Form("%%%dg ",maxLabelSizeY);
} else if (longCounters) {
maxLabelSizeY = TMath::Max(16, maxLabelSizeY);
formatYv = Form("%%%dld ",maxLabelSizeY);
} else {
maxLabelSizeY = TMath::Max(10, maxLabelSizeY);
formatYv = Form("%%%dd ",maxLabelSizeY);
}
TString formatYs(Form("%%%ds ",maxLabelSizeY));
TList listOfCombis;
listOfCombis.SetOwner();
Int_t nDim = hist->GetNdimensions();
listOfCombis.AddLast(new TObjArray(nDim-2));
for (Int_t i=2; i<nDim; i++) {
THashList* labels = hist->GetAxis(i)->GetLabels();
TObjString* lastLabel = (labels) ? static_cast<TObjString*>(labels->Last()) : 0x0;
if (!lastLabel) return;
TIter nextLabel(labels);
TObjLink* lnk = listOfCombis.FirstLink();
while (lnk) {
TObjArray* currentCombi = static_cast<TObjArray*>(lnk->GetObject());
nextLabel.Reset();
TObjString* label = 0x0;
while ((label = static_cast<TObjString*>(nextLabel()))) {
if (label == lastLabel) break;
TObjArray* combi = new TObjArray(*currentCombi);
combi->AddLast(label);
listOfCombis.AddBefore(lnk, combi);
}
currentCombi->AddLast(lastLabel);
lnk = lnk->Next();
}
}
Int_t* bins = new Int_t[nDim];
Bool_t *useLabelX = 0x0, *useLabelY = 0x0;
if (removeEmpty) {
useLabelX = new Bool_t[labelsX->GetSize()+1];
useLabelY = new Bool_t[labelsY->GetSize()+1];
}
TObjArray* combi = 0x0;
TIter nextCombi(&listOfCombis);
while ((combi = static_cast<TObjArray*>(nextCombi()))) {
TString combiName = "/";
for (Int_t i=2; i<nDim; i++) {
TObjString* label = static_cast<TObjString*>(combi->UncheckedAt(i-2));
combiName += Form("%s/",label->String().Data());
bins[i] = (Int_t)label->GetUniqueID();
}
if (removeEmpty) {
memset(useLabelX, kFALSE, sizeof(Bool_t) * (labelsX->GetSize()+1));
memset(useLabelY, kFALSE, sizeof(Bool_t) * (labelsY->GetSize()+1));
}
Bool_t empty = kTRUE;
TObjString* labelX = 0x0;
TObjString* labelY = 0x0;
TIter nextLabelX(labelsX);
TIter nextLabelY(labelsY);
while ((labelX = static_cast<TObjString*>(nextLabelX()))) {
bins[0] = (Int_t) labelX->GetUniqueID();
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
bins[1] = (Int_t) labelY->GetUniqueID();
if (removeEmpty && useLabelX[bins[0]] && useLabelY[bins[1]]) continue;
if (hist->GetBinContent(bins) == 0.) continue;
empty = kFALSE;
if (removeEmpty) {
useLabelX[bins[0]] = kTRUE;
useLabelY[bins[1]] = kTRUE;
} else break;
}
if (!removeEmpty && !empty) break;
}
if (empty) continue;
printf("\n%s:\n",combiName.Data());
printf(formatX.Data()," ");
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
if (removeEmpty && !useLabelY[labelY->GetUniqueID()]) continue;
printf(formatYs.Data(), labelY->String().Data());
}
nextLabelX.Reset();
while ((labelX = static_cast<TObjString*>(nextLabelX()))) {
bins[0] = (Int_t) labelX->GetUniqueID();
if (removeEmpty && !useLabelX[bins[0]]) continue;
printf(formatX.Data(), labelX->String().Data());
nextLabelY.Reset();
while ((labelY = static_cast<TObjString*>(nextLabelY()))) {
bins[1] = (Int_t) labelY->GetUniqueID();
if (removeEmpty && !useLabelY[bins[1]]) continue;
if (fWeightedCounters) printf(formatYv.Data(), hist->GetBinContent(bins));
else if (longCounters) printf(formatYv.Data(), (Long_t) hist->GetBinContent(bins));
else printf(formatYv.Data(), (Int_t) hist->GetBinContent(bins));
}
}
printf("\n\n");
}
delete[] bins;
if (removeEmpty) {
delete[] useLabelX;
delete[] useLabelY;
}
}
Int_t AliCounterCollection::GetMaxLabelSize(THashList* labels) const
{
Int_t maxLabelSize = 0;
TObjString* label = 0x0;
TIter nextLabel(labels);
while ((label = static_cast<TObjString*>(nextLabel())))
maxLabelSize = TMath::Max(maxLabelSize, label->String().Length());
return maxLabelSize;
}
TH1D* AliCounterCollection::Get(TString rubric, TString selections)
{
if (!fCounters) {
AliError("counters are not initialized");
return 0x0;
}
rubric.ToUpper();
selections.ToUpper();
TObjArray rubricsToPrint(1);
rubricsToPrint.SetOwner();
rubricsToPrint.AddLast(new TObjString(rubric.Data()));
Bool_t longCounters = kFALSE;
TH1D* hist = static_cast<TH1D*>(Projection(rubricsToPrint, selections, longCounters));
if (hist) {
hist->SetStats(kFALSE);
TAxis* axis = hist->GetXaxis();
THashList* labels = axis->GetLabels();
Int_t nLabels = (labels) ? labels->GetSize() : 1;
axis->SetRange(1,nLabels);
axis->SetNdivisions(1,kFALSE);
axis->SetTitle(rubric.Data());
hist->GetYaxis()->SetTitle("Counts");
}
return hist;
}
TH2D* AliCounterCollection::Get(TString rubric1, TString rubric2, TString selections)
{
if (!fCounters) {
AliError("counters are not initialized");
return 0x0;
}
rubric1.ToUpper();
rubric2.ToUpper();
selections.ToUpper();
TObjArray rubricsToPrint(2);
rubricsToPrint.SetOwner();
rubricsToPrint.AddLast(new TObjString(rubric2.Data()));
rubricsToPrint.AddLast(new TObjString(rubric1.Data()));
Bool_t longCounters = kFALSE;
TH2D* hist = static_cast<TH2D*>(Projection(rubricsToPrint, selections, longCounters));
if (hist) {
hist->SetStats(kFALSE);
TAxis* axisX = hist->GetXaxis();
THashList* labelsX = axisX->GetLabels();
Int_t nLabelsX = (labelsX) ? labelsX->GetSize() : 1;
axisX->SetRange(1,nLabelsX);
axisX->SetNdivisions(1,kFALSE);
axisX->SetTitle(rubric2.Data());
TAxis* axisY = hist->GetYaxis();
THashList* labelsY = axisY->GetLabels();
Int_t nLabelsY = (labelsY) ? labelsY->GetSize() : 1;
axisY->SetRange(1,nLabelsY);
axisY->SetNdivisions(1,kFALSE);
axisY->SetTitle(rubric1.Data());
}
return hist;
}
TH1D* AliCounterCollection::Draw(TString rubric, TString selections)
{
TH1D* hist = Get(rubric, selections);
if (hist) hist->Draw("htext");
return hist;
}
TH2D* AliCounterCollection::Draw(TString rubric1, TString rubric2, TString selections)
{
TH2D* hist = Get(rubric1, rubric2, selections);
if (hist) hist->Draw("text");
return hist;
}
TObject* AliCounterCollection::Projection(const TObjArray& data, const TString& selections, Bool_t& longCounters)
{
longCounters = fLongCounters;
Short_t** select = DecodeSelection(selections, data);
if (!select) return 0x0;
TString name(fCounters->GetName());
Int_t nDims = fCounters->GetNdimensions();
Int_t nTargetDims = data.GetEntriesFast();
TArrayI targetDims(nTargetDims);
TArrayI nNewBins(nTargetDims);
TArrayI* OldToNewCoord = new TArrayI[nTargetDims];
for (Int_t i=0; i<nTargetDims; i++) {
name += Form("_%s",static_cast<TObjString*>(data.UncheckedAt(i))->String().Data());
targetDims[i] = FindDim(static_cast<TObjString*>(data.UncheckedAt(i))->String());
nNewBins[i] = 0;
if (targetDims[i] > -1) {
Int_t nBins = GetNActiveBins(targetDims[i]) + 1;
OldToNewCoord[i].Set(nBins);
for (Int_t j=1; j<nBins; j++) if (select[targetDims[i]][j] > 0) OldToNewCoord[i][j] = ++nNewBins[i];
}
if (nNewBins[i] == 0) {
for (Int_t iDim=0; iDim<nDims; iDim++) delete[] select[iDim];
delete[] select;
delete[] OldToNewCoord;
return 0x0;
}
}
TString title = "Selections: ";
TString selectionString(selections);
selectionString.Remove(TString::kBoth, '/');
if (selectionString.Length() > 0) title += Form("%s/", selectionString.Data());
TObject* rub = 0x0;
TIter nextRubric(fRubrics);
while ((rub = nextRubric())) {
if (selectionString.Contains(Form("%s:",rub->GetName()))) continue;
if (data.Contains(rub->GetName())) continue;
title += Form("%s:ANY/", rub->GetName());
}
title.ReplaceAll("/", " ");
TObject* hist;
if (nTargetDims == 1) hist = new TH1D(name.Data(), title.Data(), nNewBins[0], 0., 1.);
else if (nTargetDims == 2) hist = new TH2D(name.Data(), title.Data(), nNewBins[0], 0., 1., nNewBins[1], 0., 1.);
else if (fWeightedCounters) hist = new THnSparseT<TArrayF>(name.Data(), title.Data(), nTargetDims, nNewBins.GetArray(), 0x0, 0x0);
else if (fLongCounters) hist = new THnSparseT<TArrayL>(name.Data(), title.Data(), nTargetDims, nNewBins.GetArray(), 0x0, 0x0);
else hist = new THnSparseT<TArrayI>(name.Data(), title.Data(), nTargetDims, nNewBins.GetArray(), 0x0, 0x0);
TObjString* label;
if (nTargetDims < 3) {
TIter nextLabelX(fCounters->GetAxis(targetDims[0])->GetLabels());
while ((label = static_cast<TObjString*>(nextLabelX()))) {
if (select[targetDims[0]][label->GetUniqueID()] > 0) {
static_cast<TH1*>(hist)->GetXaxis()->SetBinLabel(OldToNewCoord[0][label->GetUniqueID()], label->String().Data());
}
}
if (nTargetDims == 2) {
TIter nextLabelY(fCounters->GetAxis(targetDims[1])->GetLabels());
while ((label = static_cast<TObjString*>(nextLabelY()))) {
if (select[targetDims[1]][label->GetUniqueID()] > 0) {
static_cast<TH1*>(hist)->GetYaxis()->SetBinLabel(OldToNewCoord[1][label->GetUniqueID()], label->String().Data());
}
}
}
} else {
for (Int_t i=0; i<nTargetDims; i++) {
TIter nextLabel(fCounters->GetAxis(targetDims[i])->GetLabels());
while ((label = static_cast<TObjString*>(nextLabel()))) {
if (select[targetDims[i]][label->GetUniqueID()] > 0) {
static_cast<THnSparse*>(hist)->GetAxis(i)->SetBinLabel(OldToNewCoord[i][label->GetUniqueID()], label->String().Data());
}
}
}
}
Int_t* coord = new Int_t[nDims];
Int_t* newCoord = new Int_t[nTargetDims];
Int_t nEntries = 0;
for (Long64_t i=0; i<fCounters->GetNbins(); ++i) {
Double_t value = fCounters->GetBinContent(i, coord);
Int_t selectionFactor = 1;
for (Int_t dim = 0; dim < nDims && selectionFactor != 0; dim++) selectionFactor *= select[dim][coord[dim]];
if (selectionFactor == 0) continue;
for (Int_t d = 0; d < nTargetDims; ++d) newCoord[d] = OldToNewCoord[d][coord[targetDims[d]]];
if (nTargetDims < 3) {
Int_t linBin = (nTargetDims == 1) ? newCoord[0] : static_cast<TH1*>(hist)->GetBin(newCoord[0], newCoord[1]);
static_cast<TH1*>(hist)->AddBinContent(linBin, selectionFactor*value);
if (!fWeightedCounters && !longCounters && static_cast<TH1*>(hist)->GetBinContent(linBin) > INT_MAX)
longCounters = kTRUE;
} else if (fWeightedCounters || longCounters) {
static_cast<THnSparse*>(hist)->AddBinContent(newCoord, selectionFactor*value);
} else {
Long64_t linBin = static_cast<THnSparse*>(hist)->GetBin(newCoord, kTRUE);
Double_t currentValue = static_cast<THnSparse*>(hist)->GetBinContent(linBin);
if (currentValue+selectionFactor*value > INT_MAX) {
THnSparse* h = static_cast<THnSparse*>(hist);
ConvertToTHnSparseL(h);
hist = h;
longCounters = kTRUE;
static_cast<THnSparse*>(hist)->AddBinContent(newCoord, selectionFactor*value);
} else static_cast<THnSparse*>(hist)->AddBinContent(linBin, selectionFactor*value);
}
nEntries++;
}
if (nTargetDims < 3) static_cast<TH1*>(hist)->SetEntries(nEntries);
else static_cast<THnSparse*>(hist)->SetEntries(nEntries);
for (Int_t iDim=0; iDim<nDims; iDim++) delete[] select[iDim];
delete[] select;
delete[] coord;
delete[] newCoord;
delete[] OldToNewCoord;
return hist;
}
Int_t* AliCounterCollection::CheckConsistency(const AliCounterCollection* c)
{
if (!fCounters || !c->fCounters) {
AliError("counters are not initialized");
return 0x0;
}
if (c->fWeightedCounters != fWeightedCounters) AliWarning("merging non-weighted with weigthed counters");
Int_t nRubrics = fRubrics->GetSize();
if (c->fRubrics->GetSize() != nRubrics) {
AliError("both counters do not contain the same number of rubrics");
return 0x0;
}
Int_t* otherDims = new Int_t[nRubrics];
TObject* rubric1 = 0x0;
TIter nextRubric(fRubrics);
while ((rubric1 = nextRubric())) {
TObject* rubric2 = c->fRubrics->FindObject(rubric1->GetName());
if (!rubric2) {
AliError(Form("the other counter does not contain the rubric %s", rubric1->GetName()));
delete[] otherDims;
return 0x0;
}
TObjArray* keyWords1 = dynamic_cast<TObjArray*>(rubric1);
TObjArray* keyWords2 = dynamic_cast<TObjArray*>(rubric2);
if (keyWords1 && keyWords2) {
if (keyWords1->GetEntriesFast() != keyWords2->GetEntriesFast()) {
AliError("that rubric does not contain the same number of authorized key words in both counters");
delete[] otherDims;
return 0x0;
}
TObjString* keyWord = 0x0;
TIter nextKeyWord(keyWords1);
while ((keyWord = static_cast<TObjString*>(nextKeyWord()))) {
if (!keyWords2->FindObject(keyWord->String().Data())) {
AliError(Form("rubric %s does not contain the key word %s in the other counter", rubric1->GetName(), keyWord->String().Data()));
delete[] otherDims;
return 0x0;
}
}
} else if (keyWords1 || keyWords2) {
if (keyWords1) {
AliError(Form("rubric %s of the other counter does not contain a list of authorized key words while this does", rubric1->GetName()));
} else {
AliError(Form("rubric %s of this counter does not contain a list of authorized key words while the other does", rubric1->GetName()));
}
delete[] otherDims;
return 0x0;
}
otherDims[rubric1->GetUniqueID()] = rubric2->GetUniqueID();
}
return otherDims;
}
void AliCounterCollection::Add(const AliCounterCollection* counter)
{
Int_t* otherDims = CheckConsistency(counter);
if (!otherDims) return;
if (counter->fLongCounters && !fLongCounters) {
ConvertToTHnSparseL(fCounters);
fLongCounters = kTRUE;
}
Int_t nRubrics = fCounters->GetNdimensions();
Int_t* thisBins = new Int_t[nRubrics];
Int_t* otherBins = new Int_t[nRubrics];
for (Long64_t i = 0; i < counter->fCounters->GetNbins(); i++) {
Double_t value = counter->fCounters->GetBinContent(i, otherBins);
Bool_t ok = kTRUE;
for (Int_t dim = 0; dim < nRubrics; dim++) {
TString label = counter->fCounters->GetAxis(otherDims[dim])->GetBinLabel(otherBins[otherDims[dim]]);
thisBins[dim] = FindBin(dim, label, kTRUE);
if (thisBins[dim] < 0) {
AliError("this counter is full, unable to add that key word");
ok = kFALSE;
break;
}
}
if (!ok) continue;
if (fWeightedCounters || fLongCounters) {
fCounters->AddBinContent(thisBins, value);
} else {
Long64_t linBin = fCounters->GetBin(thisBins, kTRUE);
Double_t currentValue = fCounters->GetBinContent(linBin);
if (currentValue+value > INT_MAX) {
ConvertToTHnSparseL(fCounters);
fLongCounters = kTRUE;
fCounters->AddBinContent(thisBins, value);
} else fCounters->AddBinContent(linBin, value);
}
}
delete[] otherDims;
delete[] thisBins;
delete[] otherBins;
}
Long64_t AliCounterCollection::Merge(TCollection* list)
{
if (!list || !fCounters) return 0;
if (list->IsEmpty()) return (Long64_t)fCounters->GetEntries();
TIter next(list);
const TObject* obj = 0x0;
while ((obj = next())) {
const AliCounterCollection* counter = dynamic_cast<const AliCounterCollection*>(obj);
if (!counter) {
AliFatal(Form("object named \"%s\" is a %s instead of an AliCounterCollection!", obj->GetName(), obj->ClassName()));
continue;
}
Add(counter);
}
return (Long64_t)fCounters->GetEntries();
}
void AliCounterCollection::Sort(Option_t* opt, Bool_t asInt)
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
Bool_t all = (!strcasecmp(opt, "all"));
Bool_t somethingToSort = kFALSE;
Int_t nRubrics = fRubrics->GetSize();
Bool_t* rubricsToSort = new Bool_t[nRubrics];
memset(rubricsToSort, kFALSE, sizeof(Bool_t) * nRubrics);
TObject* rubric = 0x0;
TIter nextRubric(fRubrics);
while ((rubric = nextRubric())) {
if (all || dynamic_cast<TObjString*>(rubric)) {
THashList* labels = fCounters->GetAxis((Int_t)rubric->GetUniqueID())->GetLabels();
if (!labels || labels->GetSize() < 2) continue;
rubricsToSort[(Int_t)rubric->GetUniqueID()] = kTRUE;
somethingToSort = kTRUE;
}
}
if (somethingToSort) Sort(rubricsToSort, asInt);
delete[] rubricsToSort;
}
void AliCounterCollection::SortRubric(TString rubric, Bool_t asInt)
{
if (!fCounters) {
AliError("counters are not initialized");
return;
}
rubric.ToUpper();
Int_t dim = FindDim(rubric);
if (dim < 0) return;
THashList* labels = fCounters->GetAxis(dim)->GetLabels();
if (!labels || labels->GetSize() < 2) return;
Int_t nRubrics = fRubrics->GetSize();
Bool_t* rubricsToSort = new Bool_t[nRubrics];
memset(rubricsToSort, kFALSE, sizeof(Bool_t) * nRubrics);
rubricsToSort[dim] = kTRUE;
Sort(rubricsToSort, asInt);
delete[] rubricsToSort;
}
void AliCounterCollection::Sort(const Bool_t* rubricsToSort, Bool_t asInt)
{
THnSparse* oldCounters = fCounters;
Int_t nRubrics = fRubrics->GetSize();
if (fWeightedCounters)
fCounters = new THnSparseT<TArrayF>("hCounters", "hCounters", nRubrics, fRubricsSize->GetArray(), 0x0, 0x0);
else if (fLongCounters)
fCounters = new THnSparseT<TArrayL>("hCounters", "hCounters", nRubrics, fRubricsSize->GetArray(), 0x0, 0x0);
else
fCounters = new THnSparseT<TArrayI>("hCounters", "hCounters", nRubrics, fRubricsSize->GetArray(), 0x0, 0x0);
Int_t** newBins = new Int_t*[nRubrics];
Bool_t newBinsFilled = kTRUE;
for (Int_t i=0; i<nRubrics; i++) {
TAxis* oldAxis = oldCounters->GetAxis(i);
TAxis* newAxis = fCounters->GetAxis(i);
newAxis->SetName(oldAxis->GetName());
THashList* oldLabels = oldAxis->GetLabels();
if (!oldLabels) {
newBins[i] = 0x0;
newBinsFilled = kFALSE;
continue;
}
if (rubricsToSort[i]) {
if (asInt) { oldLabels = SortAsInt(oldLabels); }
else { oldLabels->Sort(); }
}
newBins[i] = new Int_t[oldLabels->GetSize()+1];
TObjString* label = 0x0;
Int_t bin = 1;
TIter nextLabel(oldLabels);
while ((label = static_cast<TObjString*>(nextLabel()))) {
newAxis->SetBinLabel(bin, label->String().Data());
newBins[i][(Int_t)label->GetUniqueID()] = bin;
bin++;
}
if (rubricsToSort[i] && asInt) delete oldLabels;
}
if (newBinsFilled) {
Int_t* oldCoor = new Int_t[nRubrics];
Int_t* newCoor = new Int_t[nRubrics];
for (Long64_t i = 0; i < oldCounters->GetNbins(); i++) {
Double_t value = oldCounters->GetBinContent(i, oldCoor);
for (Int_t dim = 0; dim < nRubrics; dim++) newCoor[dim] = newBins[dim][oldCoor[dim]];
fCounters->AddBinContent(newCoor, value);
}
delete[] oldCoor;
delete[] newCoor;
}
for (Int_t i=0; i<nRubrics; i++) delete[] newBins[i];
delete[] newBins;
delete oldCounters;
}
THashList* AliCounterCollection::SortAsInt(const THashList* labels)
{
THashList* sortedLabels = new THashList(labels->GetSize());
TIter nextSortedLabel(sortedLabels);
TObjString* label = 0x0;
TIter nextLabel(labels);
while ((label = static_cast<TObjString*>(nextLabel()))) {
TObjString* sortedLabel = 0x0;
nextSortedLabel.Reset();
while ((sortedLabel = static_cast<TObjString*>(nextSortedLabel())) &&
(sortedLabel->String().Atoi() <= label->String().Atoi())) {}
if (sortedLabel) sortedLabels->AddBefore(sortedLabel, label);
else sortedLabels->AddLast(label);
}
return sortedLabels;
}
void AliCounterCollection::ConvertToTHnSparseL(THnSparse* &h)
{
Int_t nDims = h->GetNdimensions();
Int_t* nBins = new Int_t[nDims];
for (Int_t i=0; i<nDims; i++) nBins[i] = h->GetAxis(i)->GetNbins();
THnSparse* hNew = new THnSparseT<TArrayL>("new", "new", nDims, nBins, 0x0, 0x0);
delete[] nBins;
for (Int_t i=0; i<nDims; i++) {
TAxis* oldAxis = h->GetAxis(i);
TAxis* newAxis = hNew->GetAxis(i);
newAxis->SetName(oldAxis->GetName());
TObjString* label = 0x0;
TIter nextLabel(oldAxis->GetLabels());
while ((label = static_cast<TObjString*>(nextLabel())))
newAxis->SetBinLabel(label->GetUniqueID(), label->String().Data());
}
Int_t* coor = new Int_t[nDims];
for (Long64_t i = 0; i < h->GetNbins(); i++) {
Double_t value = h->GetBinContent(i, coor);
hNew->AddBinContent(coor, value);
}
delete[] coor;
hNew->SetEntries(h->GetEntries());
TString name(h->GetName());
TString title(h->GetTitle());
delete h;
h = hNew;
h->SetNameTitle(name.Data(), title.Data());
}
AliCounterCollection.cxx:1 AliCounterCollection.cxx:2 AliCounterCollection.cxx:3 AliCounterCollection.cxx:4 AliCounterCollection.cxx:5 AliCounterCollection.cxx:6 AliCounterCollection.cxx:7 AliCounterCollection.cxx:8 AliCounterCollection.cxx:9 AliCounterCollection.cxx:10 AliCounterCollection.cxx:11 AliCounterCollection.cxx:12 AliCounterCollection.cxx:13 AliCounterCollection.cxx:14 AliCounterCollection.cxx:15 AliCounterCollection.cxx:16 AliCounterCollection.cxx:17 AliCounterCollection.cxx:18 AliCounterCollection.cxx:19 AliCounterCollection.cxx:20 AliCounterCollection.cxx:21 AliCounterCollection.cxx:22 AliCounterCollection.cxx:23 AliCounterCollection.cxx:24 AliCounterCollection.cxx:25 AliCounterCollection.cxx:26 AliCounterCollection.cxx:27 AliCounterCollection.cxx:28 AliCounterCollection.cxx:29 AliCounterCollection.cxx:30 AliCounterCollection.cxx:31 AliCounterCollection.cxx:32 AliCounterCollection.cxx:33 AliCounterCollection.cxx:34 AliCounterCollection.cxx:35 AliCounterCollection.cxx:36 AliCounterCollection.cxx:37 AliCounterCollection.cxx:38 AliCounterCollection.cxx:39 AliCounterCollection.cxx:40 AliCounterCollection.cxx:41 AliCounterCollection.cxx:42 AliCounterCollection.cxx:43 AliCounterCollection.cxx:44 AliCounterCollection.cxx:45 AliCounterCollection.cxx:46 AliCounterCollection.cxx:47 AliCounterCollection.cxx:48 AliCounterCollection.cxx:49 AliCounterCollection.cxx:50 AliCounterCollection.cxx:51 AliCounterCollection.cxx:52 AliCounterCollection.cxx:53 AliCounterCollection.cxx:54 AliCounterCollection.cxx:55 AliCounterCollection.cxx:56 AliCounterCollection.cxx:57 AliCounterCollection.cxx:58 AliCounterCollection.cxx:59 AliCounterCollection.cxx:60 AliCounterCollection.cxx:61 AliCounterCollection.cxx:62 AliCounterCollection.cxx:63 AliCounterCollection.cxx:64 AliCounterCollection.cxx:65 AliCounterCollection.cxx:66 AliCounterCollection.cxx:67 AliCounterCollection.cxx:68 AliCounterCollection.cxx:69 AliCounterCollection.cxx:70 AliCounterCollection.cxx:71 AliCounterCollection.cxx:72 AliCounterCollection.cxx:73 AliCounterCollection.cxx:74 AliCounterCollection.cxx:75 AliCounterCollection.cxx:76 AliCounterCollection.cxx:77 AliCounterCollection.cxx:78 AliCounterCollection.cxx:79 AliCounterCollection.cxx:80 AliCounterCollection.cxx:81 AliCounterCollection.cxx:82 AliCounterCollection.cxx:83 AliCounterCollection.cxx:84 AliCounterCollection.cxx:85 AliCounterCollection.cxx:86 AliCounterCollection.cxx:87 AliCounterCollection.cxx:88 AliCounterCollection.cxx:89 AliCounterCollection.cxx:90 AliCounterCollection.cxx:91 AliCounterCollection.cxx:92 AliCounterCollection.cxx:93 AliCounterCollection.cxx:94 AliCounterCollection.cxx:95 AliCounterCollection.cxx:96 AliCounterCollection.cxx:97 AliCounterCollection.cxx:98 AliCounterCollection.cxx:99 AliCounterCollection.cxx:100 AliCounterCollection.cxx:101 AliCounterCollection.cxx:102 AliCounterCollection.cxx:103 AliCounterCollection.cxx:104 AliCounterCollection.cxx:105 AliCounterCollection.cxx:106 AliCounterCollection.cxx:107 AliCounterCollection.cxx:108 AliCounterCollection.cxx:109 AliCounterCollection.cxx:110 AliCounterCollection.cxx:111 AliCounterCollection.cxx:112 AliCounterCollection.cxx:113 AliCounterCollection.cxx:114 AliCounterCollection.cxx:115 AliCounterCollection.cxx:116 AliCounterCollection.cxx:117 AliCounterCollection.cxx:118 AliCounterCollection.cxx:119 AliCounterCollection.cxx:120 AliCounterCollection.cxx:121 AliCounterCollection.cxx:122 AliCounterCollection.cxx:123 AliCounterCollection.cxx:124 AliCounterCollection.cxx:125 AliCounterCollection.cxx:126 AliCounterCollection.cxx:127 AliCounterCollection.cxx:128 AliCounterCollection.cxx:129 AliCounterCollection.cxx:130 AliCounterCollection.cxx:131 AliCounterCollection.cxx:132 AliCounterCollection.cxx:133 AliCounterCollection.cxx:134 AliCounterCollection.cxx:135 AliCounterCollection.cxx:136 AliCounterCollection.cxx:137 AliCounterCollection.cxx:138 AliCounterCollection.cxx:139 AliCounterCollection.cxx:140 AliCounterCollection.cxx:141 AliCounterCollection.cxx:142 AliCounterCollection.cxx:143 AliCounterCollection.cxx:144 AliCounterCollection.cxx:145 AliCounterCollection.cxx:146 AliCounterCollection.cxx:147 AliCounterCollection.cxx:148 AliCounterCollection.cxx:149 AliCounterCollection.cxx:150 AliCounterCollection.cxx:151 AliCounterCollection.cxx:152 AliCounterCollection.cxx:153 AliCounterCollection.cxx:154 AliCounterCollection.cxx:155 AliCounterCollection.cxx:156 AliCounterCollection.cxx:157 AliCounterCollection.cxx:158 AliCounterCollection.cxx:159 AliCounterCollection.cxx:160 AliCounterCollection.cxx:161 AliCounterCollection.cxx:162 AliCounterCollection.cxx:163 AliCounterCollection.cxx:164 AliCounterCollection.cxx:165 AliCounterCollection.cxx:166 AliCounterCollection.cxx:167 AliCounterCollection.cxx:168 AliCounterCollection.cxx:169 AliCounterCollection.cxx:170 AliCounterCollection.cxx:171 AliCounterCollection.cxx:172 AliCounterCollection.cxx:173 AliCounterCollection.cxx:174 AliCounterCollection.cxx:175 AliCounterCollection.cxx:176 AliCounterCollection.cxx:177 AliCounterCollection.cxx:178 AliCounterCollection.cxx:179 AliCounterCollection.cxx:180 AliCounterCollection.cxx:181 AliCounterCollection.cxx:182 AliCounterCollection.cxx:183 AliCounterCollection.cxx:184 AliCounterCollection.cxx:185 AliCounterCollection.cxx:186 AliCounterCollection.cxx:187 AliCounterCollection.cxx:188 AliCounterCollection.cxx:189 AliCounterCollection.cxx:190 AliCounterCollection.cxx:191 AliCounterCollection.cxx:192 AliCounterCollection.cxx:193 AliCounterCollection.cxx:194 AliCounterCollection.cxx:195 AliCounterCollection.cxx:196 AliCounterCollection.cxx:197 AliCounterCollection.cxx:198 AliCounterCollection.cxx:199 AliCounterCollection.cxx:200 AliCounterCollection.cxx:201 AliCounterCollection.cxx:202 AliCounterCollection.cxx:203 AliCounterCollection.cxx:204 AliCounterCollection.cxx:205 AliCounterCollection.cxx:206 AliCounterCollection.cxx:207 AliCounterCollection.cxx:208 AliCounterCollection.cxx:209 AliCounterCollection.cxx:210 AliCounterCollection.cxx:211 AliCounterCollection.cxx:212 AliCounterCollection.cxx:213 AliCounterCollection.cxx:214 AliCounterCollection.cxx:215 AliCounterCollection.cxx:216 AliCounterCollection.cxx:217 AliCounterCollection.cxx:218 AliCounterCollection.cxx:219 AliCounterCollection.cxx:220 AliCounterCollection.cxx:221 AliCounterCollection.cxx:222 AliCounterCollection.cxx:223 AliCounterCollection.cxx:224 AliCounterCollection.cxx:225 AliCounterCollection.cxx:226 AliCounterCollection.cxx:227 AliCounterCollection.cxx:228 AliCounterCollection.cxx:229 AliCounterCollection.cxx:230 AliCounterCollection.cxx:231 AliCounterCollection.cxx:232 AliCounterCollection.cxx:233 AliCounterCollection.cxx:234 AliCounterCollection.cxx:235 AliCounterCollection.cxx:236 AliCounterCollection.cxx:237 AliCounterCollection.cxx:238 AliCounterCollection.cxx:239 AliCounterCollection.cxx:240 AliCounterCollection.cxx:241 AliCounterCollection.cxx:242 AliCounterCollection.cxx:243 AliCounterCollection.cxx:244 AliCounterCollection.cxx:245 AliCounterCollection.cxx:246 AliCounterCollection.cxx:247 AliCounterCollection.cxx:248 AliCounterCollection.cxx:249 AliCounterCollection.cxx:250 AliCounterCollection.cxx:251 AliCounterCollection.cxx:252 AliCounterCollection.cxx:253 AliCounterCollection.cxx:254 AliCounterCollection.cxx:255 AliCounterCollection.cxx:256 AliCounterCollection.cxx:257 AliCounterCollection.cxx:258 AliCounterCollection.cxx:259 AliCounterCollection.cxx:260 AliCounterCollection.cxx:261 AliCounterCollection.cxx:262 AliCounterCollection.cxx:263 AliCounterCollection.cxx:264 AliCounterCollection.cxx:265 AliCounterCollection.cxx:266 AliCounterCollection.cxx:267 AliCounterCollection.cxx:268 AliCounterCollection.cxx:269 AliCounterCollection.cxx:270 AliCounterCollection.cxx:271 AliCounterCollection.cxx:272 AliCounterCollection.cxx:273 AliCounterCollection.cxx:274 AliCounterCollection.cxx:275 AliCounterCollection.cxx:276 AliCounterCollection.cxx:277 AliCounterCollection.cxx:278 AliCounterCollection.cxx:279 AliCounterCollection.cxx:280 AliCounterCollection.cxx:281 AliCounterCollection.cxx:282 AliCounterCollection.cxx:283 AliCounterCollection.cxx:284 AliCounterCollection.cxx:285 AliCounterCollection.cxx:286 AliCounterCollection.cxx:287 AliCounterCollection.cxx:288 AliCounterCollection.cxx:289 AliCounterCollection.cxx:290 AliCounterCollection.cxx:291 AliCounterCollection.cxx:292 AliCounterCollection.cxx:293 AliCounterCollection.cxx:294 AliCounterCollection.cxx:295 AliCounterCollection.cxx:296 AliCounterCollection.cxx:297 AliCounterCollection.cxx:298 AliCounterCollection.cxx:299 AliCounterCollection.cxx:300 AliCounterCollection.cxx:301 AliCounterCollection.cxx:302 AliCounterCollection.cxx:303 AliCounterCollection.cxx:304 AliCounterCollection.cxx:305 AliCounterCollection.cxx:306 AliCounterCollection.cxx:307 AliCounterCollection.cxx:308 AliCounterCollection.cxx:309 AliCounterCollection.cxx:310 AliCounterCollection.cxx:311 AliCounterCollection.cxx:312 AliCounterCollection.cxx:313 AliCounterCollection.cxx:314 AliCounterCollection.cxx:315 AliCounterCollection.cxx:316 AliCounterCollection.cxx:317 AliCounterCollection.cxx:318 AliCounterCollection.cxx:319 AliCounterCollection.cxx:320 AliCounterCollection.cxx:321 AliCounterCollection.cxx:322 AliCounterCollection.cxx:323 AliCounterCollection.cxx:324 AliCounterCollection.cxx:325 AliCounterCollection.cxx:326 AliCounterCollection.cxx:327 AliCounterCollection.cxx:328 AliCounterCollection.cxx:329 AliCounterCollection.cxx:330 AliCounterCollection.cxx:331 AliCounterCollection.cxx:332 AliCounterCollection.cxx:333 AliCounterCollection.cxx:334 AliCounterCollection.cxx:335 AliCounterCollection.cxx:336 AliCounterCollection.cxx:337 AliCounterCollection.cxx:338 AliCounterCollection.cxx:339 AliCounterCollection.cxx:340 AliCounterCollection.cxx:341 AliCounterCollection.cxx:342 AliCounterCollection.cxx:343 AliCounterCollection.cxx:344 AliCounterCollection.cxx:345 AliCounterCollection.cxx:346 AliCounterCollection.cxx:347 AliCounterCollection.cxx:348 AliCounterCollection.cxx:349 AliCounterCollection.cxx:350 AliCounterCollection.cxx:351 AliCounterCollection.cxx:352 AliCounterCollection.cxx:353 AliCounterCollection.cxx:354 AliCounterCollection.cxx:355 AliCounterCollection.cxx:356 AliCounterCollection.cxx:357 AliCounterCollection.cxx:358 AliCounterCollection.cxx:359 AliCounterCollection.cxx:360 AliCounterCollection.cxx:361 AliCounterCollection.cxx:362 AliCounterCollection.cxx:363 AliCounterCollection.cxx:364 AliCounterCollection.cxx:365 AliCounterCollection.cxx:366 AliCounterCollection.cxx:367 AliCounterCollection.cxx:368 AliCounterCollection.cxx:369 AliCounterCollection.cxx:370 AliCounterCollection.cxx:371 AliCounterCollection.cxx:372 AliCounterCollection.cxx:373 AliCounterCollection.cxx:374 AliCounterCollection.cxx:375 AliCounterCollection.cxx:376 AliCounterCollection.cxx:377 AliCounterCollection.cxx:378 AliCounterCollection.cxx:379 AliCounterCollection.cxx:380 AliCounterCollection.cxx:381 AliCounterCollection.cxx:382 AliCounterCollection.cxx:383 AliCounterCollection.cxx:384 AliCounterCollection.cxx:385 AliCounterCollection.cxx:386 AliCounterCollection.cxx:387 AliCounterCollection.cxx:388 AliCounterCollection.cxx:389 AliCounterCollection.cxx:390 AliCounterCollection.cxx:391 AliCounterCollection.cxx:392 AliCounterCollection.cxx:393 AliCounterCollection.cxx:394 AliCounterCollection.cxx:395 AliCounterCollection.cxx:396 AliCounterCollection.cxx:397 AliCounterCollection.cxx:398 AliCounterCollection.cxx:399 AliCounterCollection.cxx:400 AliCounterCollection.cxx:401 AliCounterCollection.cxx:402 AliCounterCollection.cxx:403 AliCounterCollection.cxx:404 AliCounterCollection.cxx:405 AliCounterCollection.cxx:406 AliCounterCollection.cxx:407 AliCounterCollection.cxx:408 AliCounterCollection.cxx:409 AliCounterCollection.cxx:410 AliCounterCollection.cxx:411 AliCounterCollection.cxx:412 AliCounterCollection.cxx:413 AliCounterCollection.cxx:414 AliCounterCollection.cxx:415 AliCounterCollection.cxx:416 AliCounterCollection.cxx:417 AliCounterCollection.cxx:418 AliCounterCollection.cxx:419 AliCounterCollection.cxx:420 AliCounterCollection.cxx:421 AliCounterCollection.cxx:422 AliCounterCollection.cxx:423 AliCounterCollection.cxx:424 AliCounterCollection.cxx:425 AliCounterCollection.cxx:426 AliCounterCollection.cxx:427 AliCounterCollection.cxx:428 AliCounterCollection.cxx:429 AliCounterCollection.cxx:430 AliCounterCollection.cxx:431 AliCounterCollection.cxx:432 AliCounterCollection.cxx:433 AliCounterCollection.cxx:434 AliCounterCollection.cxx:435 AliCounterCollection.cxx:436 AliCounterCollection.cxx:437 AliCounterCollection.cxx:438 AliCounterCollection.cxx:439 AliCounterCollection.cxx:440 AliCounterCollection.cxx:441 AliCounterCollection.cxx:442 AliCounterCollection.cxx:443 AliCounterCollection.cxx:444 AliCounterCollection.cxx:445 AliCounterCollection.cxx:446 AliCounterCollection.cxx:447 AliCounterCollection.cxx:448 AliCounterCollection.cxx:449 AliCounterCollection.cxx:450 AliCounterCollection.cxx:451 AliCounterCollection.cxx:452 AliCounterCollection.cxx:453 AliCounterCollection.cxx:454 AliCounterCollection.cxx:455 AliCounterCollection.cxx:456 AliCounterCollection.cxx:457 AliCounterCollection.cxx:458 AliCounterCollection.cxx:459 AliCounterCollection.cxx:460 AliCounterCollection.cxx:461 AliCounterCollection.cxx:462 AliCounterCollection.cxx:463 AliCounterCollection.cxx:464 AliCounterCollection.cxx:465 AliCounterCollection.cxx:466 AliCounterCollection.cxx:467 AliCounterCollection.cxx:468 AliCounterCollection.cxx:469 AliCounterCollection.cxx:470 AliCounterCollection.cxx:471 AliCounterCollection.cxx:472 AliCounterCollection.cxx:473 AliCounterCollection.cxx:474 AliCounterCollection.cxx:475 AliCounterCollection.cxx:476 AliCounterCollection.cxx:477 AliCounterCollection.cxx:478 AliCounterCollection.cxx:479 AliCounterCollection.cxx:480 AliCounterCollection.cxx:481 AliCounterCollection.cxx:482 AliCounterCollection.cxx:483 AliCounterCollection.cxx:484 AliCounterCollection.cxx:485 AliCounterCollection.cxx:486 AliCounterCollection.cxx:487 AliCounterCollection.cxx:488 AliCounterCollection.cxx:489 AliCounterCollection.cxx:490 AliCounterCollection.cxx:491 AliCounterCollection.cxx:492 AliCounterCollection.cxx:493 AliCounterCollection.cxx:494 AliCounterCollection.cxx:495 AliCounterCollection.cxx:496 AliCounterCollection.cxx:497 AliCounterCollection.cxx:498 AliCounterCollection.cxx:499 AliCounterCollection.cxx:500 AliCounterCollection.cxx:501 AliCounterCollection.cxx:502 AliCounterCollection.cxx:503 AliCounterCollection.cxx:504 AliCounterCollection.cxx:505 AliCounterCollection.cxx:506 AliCounterCollection.cxx:507 AliCounterCollection.cxx:508 AliCounterCollection.cxx:509 AliCounterCollection.cxx:510 AliCounterCollection.cxx:511 AliCounterCollection.cxx:512 AliCounterCollection.cxx:513 AliCounterCollection.cxx:514 AliCounterCollection.cxx:515 AliCounterCollection.cxx:516 AliCounterCollection.cxx:517 AliCounterCollection.cxx:518 AliCounterCollection.cxx:519 AliCounterCollection.cxx:520 AliCounterCollection.cxx:521 AliCounterCollection.cxx:522 AliCounterCollection.cxx:523 AliCounterCollection.cxx:524 AliCounterCollection.cxx:525 AliCounterCollection.cxx:526 AliCounterCollection.cxx:527 AliCounterCollection.cxx:528 AliCounterCollection.cxx:529 AliCounterCollection.cxx:530 AliCounterCollection.cxx:531 AliCounterCollection.cxx:532 AliCounterCollection.cxx:533 AliCounterCollection.cxx:534 AliCounterCollection.cxx:535 AliCounterCollection.cxx:536 AliCounterCollection.cxx:537 AliCounterCollection.cxx:538 AliCounterCollection.cxx:539 AliCounterCollection.cxx:540 AliCounterCollection.cxx:541 AliCounterCollection.cxx:542 AliCounterCollection.cxx:543 AliCounterCollection.cxx:544 AliCounterCollection.cxx:545 AliCounterCollection.cxx:546 AliCounterCollection.cxx:547 AliCounterCollection.cxx:548 AliCounterCollection.cxx:549 AliCounterCollection.cxx:550 AliCounterCollection.cxx:551 AliCounterCollection.cxx:552 AliCounterCollection.cxx:553 AliCounterCollection.cxx:554 AliCounterCollection.cxx:555 AliCounterCollection.cxx:556 AliCounterCollection.cxx:557 AliCounterCollection.cxx:558 AliCounterCollection.cxx:559 AliCounterCollection.cxx:560 AliCounterCollection.cxx:561 AliCounterCollection.cxx:562 AliCounterCollection.cxx:563 AliCounterCollection.cxx:564 AliCounterCollection.cxx:565 AliCounterCollection.cxx:566 AliCounterCollection.cxx:567 AliCounterCollection.cxx:568 AliCounterCollection.cxx:569 AliCounterCollection.cxx:570 AliCounterCollection.cxx:571 AliCounterCollection.cxx:572 AliCounterCollection.cxx:573 AliCounterCollection.cxx:574 AliCounterCollection.cxx:575 AliCounterCollection.cxx:576 AliCounterCollection.cxx:577 AliCounterCollection.cxx:578 AliCounterCollection.cxx:579 AliCounterCollection.cxx:580 AliCounterCollection.cxx:581 AliCounterCollection.cxx:582 AliCounterCollection.cxx:583 AliCounterCollection.cxx:584 AliCounterCollection.cxx:585 AliCounterCollection.cxx:586 AliCounterCollection.cxx:587 AliCounterCollection.cxx:588 AliCounterCollection.cxx:589 AliCounterCollection.cxx:590 AliCounterCollection.cxx:591 AliCounterCollection.cxx:592 AliCounterCollection.cxx:593 AliCounterCollection.cxx:594 AliCounterCollection.cxx:595 AliCounterCollection.cxx:596 AliCounterCollection.cxx:597 AliCounterCollection.cxx:598 AliCounterCollection.cxx:599 AliCounterCollection.cxx:600 AliCounterCollection.cxx:601 AliCounterCollection.cxx:602 AliCounterCollection.cxx:603 AliCounterCollection.cxx:604 AliCounterCollection.cxx:605 AliCounterCollection.cxx:606 AliCounterCollection.cxx:607 AliCounterCollection.cxx:608 AliCounterCollection.cxx:609 AliCounterCollection.cxx:610 AliCounterCollection.cxx:611 AliCounterCollection.cxx:612 AliCounterCollection.cxx:613 AliCounterCollection.cxx:614 AliCounterCollection.cxx:615 AliCounterCollection.cxx:616 AliCounterCollection.cxx:617 AliCounterCollection.cxx:618 AliCounterCollection.cxx:619 AliCounterCollection.cxx:620 AliCounterCollection.cxx:621 AliCounterCollection.cxx:622 AliCounterCollection.cxx:623 AliCounterCollection.cxx:624 AliCounterCollection.cxx:625 AliCounterCollection.cxx:626 AliCounterCollection.cxx:627 AliCounterCollection.cxx:628 AliCounterCollection.cxx:629 AliCounterCollection.cxx:630 AliCounterCollection.cxx:631 AliCounterCollection.cxx:632 AliCounterCollection.cxx:633 AliCounterCollection.cxx:634 AliCounterCollection.cxx:635 AliCounterCollection.cxx:636 AliCounterCollection.cxx:637 AliCounterCollection.cxx:638 AliCounterCollection.cxx:639 AliCounterCollection.cxx:640 AliCounterCollection.cxx:641 AliCounterCollection.cxx:642 AliCounterCollection.cxx:643 AliCounterCollection.cxx:644 AliCounterCollection.cxx:645 AliCounterCollection.cxx:646 AliCounterCollection.cxx:647 AliCounterCollection.cxx:648 AliCounterCollection.cxx:649 AliCounterCollection.cxx:650 AliCounterCollection.cxx:651 AliCounterCollection.cxx:652 AliCounterCollection.cxx:653 AliCounterCollection.cxx:654 AliCounterCollection.cxx:655 AliCounterCollection.cxx:656 AliCounterCollection.cxx:657 AliCounterCollection.cxx:658 AliCounterCollection.cxx:659 AliCounterCollection.cxx:660 AliCounterCollection.cxx:661 AliCounterCollection.cxx:662 AliCounterCollection.cxx:663 AliCounterCollection.cxx:664 AliCounterCollection.cxx:665 AliCounterCollection.cxx:666 AliCounterCollection.cxx:667 AliCounterCollection.cxx:668 AliCounterCollection.cxx:669 AliCounterCollection.cxx:670 AliCounterCollection.cxx:671 AliCounterCollection.cxx:672 AliCounterCollection.cxx:673 AliCounterCollection.cxx:674 AliCounterCollection.cxx:675 AliCounterCollection.cxx:676 AliCounterCollection.cxx:677 AliCounterCollection.cxx:678 AliCounterCollection.cxx:679 AliCounterCollection.cxx:680 AliCounterCollection.cxx:681 AliCounterCollection.cxx:682 AliCounterCollection.cxx:683 AliCounterCollection.cxx:684 AliCounterCollection.cxx:685 AliCounterCollection.cxx:686 AliCounterCollection.cxx:687 AliCounterCollection.cxx:688 AliCounterCollection.cxx:689 AliCounterCollection.cxx:690 AliCounterCollection.cxx:691 AliCounterCollection.cxx:692 AliCounterCollection.cxx:693 AliCounterCollection.cxx:694 AliCounterCollection.cxx:695 AliCounterCollection.cxx:696 AliCounterCollection.cxx:697 AliCounterCollection.cxx:698 AliCounterCollection.cxx:699 AliCounterCollection.cxx:700 AliCounterCollection.cxx:701 AliCounterCollection.cxx:702 AliCounterCollection.cxx:703 AliCounterCollection.cxx:704 AliCounterCollection.cxx:705 AliCounterCollection.cxx:706 AliCounterCollection.cxx:707 AliCounterCollection.cxx:708 AliCounterCollection.cxx:709 AliCounterCollection.cxx:710 AliCounterCollection.cxx:711 AliCounterCollection.cxx:712 AliCounterCollection.cxx:713 AliCounterCollection.cxx:714 AliCounterCollection.cxx:715 AliCounterCollection.cxx:716 AliCounterCollection.cxx:717 AliCounterCollection.cxx:718 AliCounterCollection.cxx:719 AliCounterCollection.cxx:720 AliCounterCollection.cxx:721 AliCounterCollection.cxx:722 AliCounterCollection.cxx:723 AliCounterCollection.cxx:724 AliCounterCollection.cxx:725 AliCounterCollection.cxx:726 AliCounterCollection.cxx:727 AliCounterCollection.cxx:728 AliCounterCollection.cxx:729 AliCounterCollection.cxx:730 AliCounterCollection.cxx:731 AliCounterCollection.cxx:732 AliCounterCollection.cxx:733 AliCounterCollection.cxx:734 AliCounterCollection.cxx:735 AliCounterCollection.cxx:736 AliCounterCollection.cxx:737 AliCounterCollection.cxx:738 AliCounterCollection.cxx:739 AliCounterCollection.cxx:740 AliCounterCollection.cxx:741 AliCounterCollection.cxx:742 AliCounterCollection.cxx:743 AliCounterCollection.cxx:744 AliCounterCollection.cxx:745 AliCounterCollection.cxx:746 AliCounterCollection.cxx:747 AliCounterCollection.cxx:748 AliCounterCollection.cxx:749 AliCounterCollection.cxx:750 AliCounterCollection.cxx:751 AliCounterCollection.cxx:752 AliCounterCollection.cxx:753 AliCounterCollection.cxx:754 AliCounterCollection.cxx:755 AliCounterCollection.cxx:756 AliCounterCollection.cxx:757 AliCounterCollection.cxx:758 AliCounterCollection.cxx:759 AliCounterCollection.cxx:760 AliCounterCollection.cxx:761 AliCounterCollection.cxx:762 AliCounterCollection.cxx:763 AliCounterCollection.cxx:764 AliCounterCollection.cxx:765 AliCounterCollection.cxx:766 AliCounterCollection.cxx:767 AliCounterCollection.cxx:768 AliCounterCollection.cxx:769 AliCounterCollection.cxx:770 AliCounterCollection.cxx:771 AliCounterCollection.cxx:772 AliCounterCollection.cxx:773 AliCounterCollection.cxx:774 AliCounterCollection.cxx:775 AliCounterCollection.cxx:776 AliCounterCollection.cxx:777 AliCounterCollection.cxx:778 AliCounterCollection.cxx:779 AliCounterCollection.cxx:780 AliCounterCollection.cxx:781 AliCounterCollection.cxx:782 AliCounterCollection.cxx:783 AliCounterCollection.cxx:784 AliCounterCollection.cxx:785 AliCounterCollection.cxx:786 AliCounterCollection.cxx:787 AliCounterCollection.cxx:788 AliCounterCollection.cxx:789 AliCounterCollection.cxx:790 AliCounterCollection.cxx:791 AliCounterCollection.cxx:792 AliCounterCollection.cxx:793 AliCounterCollection.cxx:794 AliCounterCollection.cxx:795 AliCounterCollection.cxx:796 AliCounterCollection.cxx:797 AliCounterCollection.cxx:798 AliCounterCollection.cxx:799 AliCounterCollection.cxx:800 AliCounterCollection.cxx:801 AliCounterCollection.cxx:802 AliCounterCollection.cxx:803 AliCounterCollection.cxx:804 AliCounterCollection.cxx:805 AliCounterCollection.cxx:806 AliCounterCollection.cxx:807 AliCounterCollection.cxx:808 AliCounterCollection.cxx:809 AliCounterCollection.cxx:810 AliCounterCollection.cxx:811 AliCounterCollection.cxx:812 AliCounterCollection.cxx:813 AliCounterCollection.cxx:814 AliCounterCollection.cxx:815 AliCounterCollection.cxx:816 AliCounterCollection.cxx:817 AliCounterCollection.cxx:818 AliCounterCollection.cxx:819 AliCounterCollection.cxx:820 AliCounterCollection.cxx:821 AliCounterCollection.cxx:822 AliCounterCollection.cxx:823 AliCounterCollection.cxx:824 AliCounterCollection.cxx:825 AliCounterCollection.cxx:826 AliCounterCollection.cxx:827 AliCounterCollection.cxx:828 AliCounterCollection.cxx:829 AliCounterCollection.cxx:830 AliCounterCollection.cxx:831 AliCounterCollection.cxx:832 AliCounterCollection.cxx:833 AliCounterCollection.cxx:834 AliCounterCollection.cxx:835 AliCounterCollection.cxx:836 AliCounterCollection.cxx:837 AliCounterCollection.cxx:838 AliCounterCollection.cxx:839 AliCounterCollection.cxx:840 AliCounterCollection.cxx:841 AliCounterCollection.cxx:842 AliCounterCollection.cxx:843 AliCounterCollection.cxx:844 AliCounterCollection.cxx:845 AliCounterCollection.cxx:846 AliCounterCollection.cxx:847 AliCounterCollection.cxx:848 AliCounterCollection.cxx:849 AliCounterCollection.cxx:850 AliCounterCollection.cxx:851 AliCounterCollection.cxx:852 AliCounterCollection.cxx:853 AliCounterCollection.cxx:854 AliCounterCollection.cxx:855 AliCounterCollection.cxx:856 AliCounterCollection.cxx:857 AliCounterCollection.cxx:858 AliCounterCollection.cxx:859 AliCounterCollection.cxx:860 AliCounterCollection.cxx:861 AliCounterCollection.cxx:862 AliCounterCollection.cxx:863 AliCounterCollection.cxx:864 AliCounterCollection.cxx:865 AliCounterCollection.cxx:866 AliCounterCollection.cxx:867 AliCounterCollection.cxx:868 AliCounterCollection.cxx:869 AliCounterCollection.cxx:870 AliCounterCollection.cxx:871 AliCounterCollection.cxx:872 AliCounterCollection.cxx:873 AliCounterCollection.cxx:874 AliCounterCollection.cxx:875 AliCounterCollection.cxx:876 AliCounterCollection.cxx:877 AliCounterCollection.cxx:878 AliCounterCollection.cxx:879 AliCounterCollection.cxx:880 AliCounterCollection.cxx:881 AliCounterCollection.cxx:882 AliCounterCollection.cxx:883 AliCounterCollection.cxx:884 AliCounterCollection.cxx:885 AliCounterCollection.cxx:886 AliCounterCollection.cxx:887 AliCounterCollection.cxx:888 AliCounterCollection.cxx:889 AliCounterCollection.cxx:890 AliCounterCollection.cxx:891 AliCounterCollection.cxx:892 AliCounterCollection.cxx:893 AliCounterCollection.cxx:894 AliCounterCollection.cxx:895 AliCounterCollection.cxx:896 AliCounterCollection.cxx:897 AliCounterCollection.cxx:898 AliCounterCollection.cxx:899 AliCounterCollection.cxx:900 AliCounterCollection.cxx:901 AliCounterCollection.cxx:902 AliCounterCollection.cxx:903 AliCounterCollection.cxx:904 AliCounterCollection.cxx:905 AliCounterCollection.cxx:906 AliCounterCollection.cxx:907 AliCounterCollection.cxx:908 AliCounterCollection.cxx:909 AliCounterCollection.cxx:910 AliCounterCollection.cxx:911 AliCounterCollection.cxx:912 AliCounterCollection.cxx:913 AliCounterCollection.cxx:914 AliCounterCollection.cxx:915 AliCounterCollection.cxx:916 AliCounterCollection.cxx:917 AliCounterCollection.cxx:918 AliCounterCollection.cxx:919 AliCounterCollection.cxx:920 AliCounterCollection.cxx:921 AliCounterCollection.cxx:922 AliCounterCollection.cxx:923 AliCounterCollection.cxx:924 AliCounterCollection.cxx:925 AliCounterCollection.cxx:926 AliCounterCollection.cxx:927 AliCounterCollection.cxx:928 AliCounterCollection.cxx:929 AliCounterCollection.cxx:930 AliCounterCollection.cxx:931 AliCounterCollection.cxx:932 AliCounterCollection.cxx:933 AliCounterCollection.cxx:934 AliCounterCollection.cxx:935 AliCounterCollection.cxx:936 AliCounterCollection.cxx:937 AliCounterCollection.cxx:938 AliCounterCollection.cxx:939 AliCounterCollection.cxx:940 AliCounterCollection.cxx:941 AliCounterCollection.cxx:942 AliCounterCollection.cxx:943 AliCounterCollection.cxx:944 AliCounterCollection.cxx:945 AliCounterCollection.cxx:946 AliCounterCollection.cxx:947 AliCounterCollection.cxx:948 AliCounterCollection.cxx:949 AliCounterCollection.cxx:950 AliCounterCollection.cxx:951 AliCounterCollection.cxx:952 AliCounterCollection.cxx:953 AliCounterCollection.cxx:954 AliCounterCollection.cxx:955 AliCounterCollection.cxx:956 AliCounterCollection.cxx:957 AliCounterCollection.cxx:958 AliCounterCollection.cxx:959 AliCounterCollection.cxx:960 AliCounterCollection.cxx:961 AliCounterCollection.cxx:962 AliCounterCollection.cxx:963 AliCounterCollection.cxx:964 AliCounterCollection.cxx:965 AliCounterCollection.cxx:966 AliCounterCollection.cxx:967 AliCounterCollection.cxx:968 AliCounterCollection.cxx:969 AliCounterCollection.cxx:970 AliCounterCollection.cxx:971 AliCounterCollection.cxx:972 AliCounterCollection.cxx:973 AliCounterCollection.cxx:974 AliCounterCollection.cxx:975 AliCounterCollection.cxx:976 AliCounterCollection.cxx:977 AliCounterCollection.cxx:978 AliCounterCollection.cxx:979 AliCounterCollection.cxx:980 AliCounterCollection.cxx:981 AliCounterCollection.cxx:982 AliCounterCollection.cxx:983 AliCounterCollection.cxx:984 AliCounterCollection.cxx:985 AliCounterCollection.cxx:986 AliCounterCollection.cxx:987 AliCounterCollection.cxx:988 AliCounterCollection.cxx:989 AliCounterCollection.cxx:990 AliCounterCollection.cxx:991 AliCounterCollection.cxx:992 AliCounterCollection.cxx:993 AliCounterCollection.cxx:994 AliCounterCollection.cxx:995 AliCounterCollection.cxx:996 AliCounterCollection.cxx:997 AliCounterCollection.cxx:998 AliCounterCollection.cxx:999 AliCounterCollection.cxx:1000 AliCounterCollection.cxx:1001 AliCounterCollection.cxx:1002 AliCounterCollection.cxx:1003 AliCounterCollection.cxx:1004 AliCounterCollection.cxx:1005 AliCounterCollection.cxx:1006 AliCounterCollection.cxx:1007 AliCounterCollection.cxx:1008 AliCounterCollection.cxx:1009 AliCounterCollection.cxx:1010 AliCounterCollection.cxx:1011 AliCounterCollection.cxx:1012 AliCounterCollection.cxx:1013 AliCounterCollection.cxx:1014 AliCounterCollection.cxx:1015 AliCounterCollection.cxx:1016 AliCounterCollection.cxx:1017 AliCounterCollection.cxx:1018 AliCounterCollection.cxx:1019 AliCounterCollection.cxx:1020 AliCounterCollection.cxx:1021 AliCounterCollection.cxx:1022 AliCounterCollection.cxx:1023 AliCounterCollection.cxx:1024 AliCounterCollection.cxx:1025 AliCounterCollection.cxx:1026 AliCounterCollection.cxx:1027 AliCounterCollection.cxx:1028 AliCounterCollection.cxx:1029 AliCounterCollection.cxx:1030 AliCounterCollection.cxx:1031 AliCounterCollection.cxx:1032 AliCounterCollection.cxx:1033 AliCounterCollection.cxx:1034 AliCounterCollection.cxx:1035 AliCounterCollection.cxx:1036 AliCounterCollection.cxx:1037 AliCounterCollection.cxx:1038 AliCounterCollection.cxx:1039 AliCounterCollection.cxx:1040 AliCounterCollection.cxx:1041 AliCounterCollection.cxx:1042 AliCounterCollection.cxx:1043 AliCounterCollection.cxx:1044 AliCounterCollection.cxx:1045 AliCounterCollection.cxx:1046 AliCounterCollection.cxx:1047 AliCounterCollection.cxx:1048 AliCounterCollection.cxx:1049 AliCounterCollection.cxx:1050 AliCounterCollection.cxx:1051 AliCounterCollection.cxx:1052 AliCounterCollection.cxx:1053 AliCounterCollection.cxx:1054 AliCounterCollection.cxx:1055 AliCounterCollection.cxx:1056 AliCounterCollection.cxx:1057 AliCounterCollection.cxx:1058 AliCounterCollection.cxx:1059 AliCounterCollection.cxx:1060 AliCounterCollection.cxx:1061 AliCounterCollection.cxx:1062 AliCounterCollection.cxx:1063 AliCounterCollection.cxx:1064 AliCounterCollection.cxx:1065 AliCounterCollection.cxx:1066 AliCounterCollection.cxx:1067 AliCounterCollection.cxx:1068 AliCounterCollection.cxx:1069 AliCounterCollection.cxx:1070 AliCounterCollection.cxx:1071 AliCounterCollection.cxx:1072 AliCounterCollection.cxx:1073 AliCounterCollection.cxx:1074 AliCounterCollection.cxx:1075 AliCounterCollection.cxx:1076 AliCounterCollection.cxx:1077 AliCounterCollection.cxx:1078 AliCounterCollection.cxx:1079 AliCounterCollection.cxx:1080 AliCounterCollection.cxx:1081 AliCounterCollection.cxx:1082 AliCounterCollection.cxx:1083 AliCounterCollection.cxx:1084 AliCounterCollection.cxx:1085 AliCounterCollection.cxx:1086 AliCounterCollection.cxx:1087 AliCounterCollection.cxx:1088 AliCounterCollection.cxx:1089 AliCounterCollection.cxx:1090 AliCounterCollection.cxx:1091 AliCounterCollection.cxx:1092 AliCounterCollection.cxx:1093 AliCounterCollection.cxx:1094 AliCounterCollection.cxx:1095 AliCounterCollection.cxx:1096 AliCounterCollection.cxx:1097 AliCounterCollection.cxx:1098 AliCounterCollection.cxx:1099 AliCounterCollection.cxx:1100 AliCounterCollection.cxx:1101 AliCounterCollection.cxx:1102 AliCounterCollection.cxx:1103 AliCounterCollection.cxx:1104 AliCounterCollection.cxx:1105 AliCounterCollection.cxx:1106 AliCounterCollection.cxx:1107 AliCounterCollection.cxx:1108 AliCounterCollection.cxx:1109 AliCounterCollection.cxx:1110 AliCounterCollection.cxx:1111 AliCounterCollection.cxx:1112 AliCounterCollection.cxx:1113 AliCounterCollection.cxx:1114 AliCounterCollection.cxx:1115 AliCounterCollection.cxx:1116 AliCounterCollection.cxx:1117 AliCounterCollection.cxx:1118 AliCounterCollection.cxx:1119 AliCounterCollection.cxx:1120 AliCounterCollection.cxx:1121 AliCounterCollection.cxx:1122 AliCounterCollection.cxx:1123 AliCounterCollection.cxx:1124 AliCounterCollection.cxx:1125 AliCounterCollection.cxx:1126 AliCounterCollection.cxx:1127 AliCounterCollection.cxx:1128 AliCounterCollection.cxx:1129 AliCounterCollection.cxx:1130 AliCounterCollection.cxx:1131 AliCounterCollection.cxx:1132 AliCounterCollection.cxx:1133 AliCounterCollection.cxx:1134 AliCounterCollection.cxx:1135 AliCounterCollection.cxx:1136 AliCounterCollection.cxx:1137 AliCounterCollection.cxx:1138 AliCounterCollection.cxx:1139 AliCounterCollection.cxx:1140 AliCounterCollection.cxx:1141 AliCounterCollection.cxx:1142 AliCounterCollection.cxx:1143 AliCounterCollection.cxx:1144 AliCounterCollection.cxx:1145 AliCounterCollection.cxx:1146 AliCounterCollection.cxx:1147 AliCounterCollection.cxx:1148 AliCounterCollection.cxx:1149 AliCounterCollection.cxx:1150 AliCounterCollection.cxx:1151 AliCounterCollection.cxx:1152 AliCounterCollection.cxx:1153 AliCounterCollection.cxx:1154 AliCounterCollection.cxx:1155 AliCounterCollection.cxx:1156 AliCounterCollection.cxx:1157 AliCounterCollection.cxx:1158 AliCounterCollection.cxx:1159 AliCounterCollection.cxx:1160 AliCounterCollection.cxx:1161 AliCounterCollection.cxx:1162 AliCounterCollection.cxx:1163 AliCounterCollection.cxx:1164 AliCounterCollection.cxx:1165 AliCounterCollection.cxx:1166 AliCounterCollection.cxx:1167 AliCounterCollection.cxx:1168 AliCounterCollection.cxx:1169 AliCounterCollection.cxx:1170 AliCounterCollection.cxx:1171 AliCounterCollection.cxx:1172 AliCounterCollection.cxx:1173 AliCounterCollection.cxx:1174 AliCounterCollection.cxx:1175 AliCounterCollection.cxx:1176 AliCounterCollection.cxx:1177 AliCounterCollection.cxx:1178 AliCounterCollection.cxx:1179 AliCounterCollection.cxx:1180 AliCounterCollection.cxx:1181 AliCounterCollection.cxx:1182 AliCounterCollection.cxx:1183 AliCounterCollection.cxx:1184 AliCounterCollection.cxx:1185 AliCounterCollection.cxx:1186 AliCounterCollection.cxx:1187 AliCounterCollection.cxx:1188 AliCounterCollection.cxx:1189 AliCounterCollection.cxx:1190 AliCounterCollection.cxx:1191 AliCounterCollection.cxx:1192 AliCounterCollection.cxx:1193 AliCounterCollection.cxx:1194 AliCounterCollection.cxx:1195 AliCounterCollection.cxx:1196 AliCounterCollection.cxx:1197 AliCounterCollection.cxx:1198 AliCounterCollection.cxx:1199 AliCounterCollection.cxx:1200 AliCounterCollection.cxx:1201 AliCounterCollection.cxx:1202 AliCounterCollection.cxx:1203 AliCounterCollection.cxx:1204 AliCounterCollection.cxx:1205 AliCounterCollection.cxx:1206 AliCounterCollection.cxx:1207 AliCounterCollection.cxx:1208 AliCounterCollection.cxx:1209 AliCounterCollection.cxx:1210 AliCounterCollection.cxx:1211 AliCounterCollection.cxx:1212 AliCounterCollection.cxx:1213 AliCounterCollection.cxx:1214 AliCounterCollection.cxx:1215 AliCounterCollection.cxx:1216 AliCounterCollection.cxx:1217 AliCounterCollection.cxx:1218 AliCounterCollection.cxx:1219 AliCounterCollection.cxx:1220 AliCounterCollection.cxx:1221 AliCounterCollection.cxx:1222 AliCounterCollection.cxx:1223 AliCounterCollection.cxx:1224 AliCounterCollection.cxx:1225 AliCounterCollection.cxx:1226 AliCounterCollection.cxx:1227 AliCounterCollection.cxx:1228 AliCounterCollection.cxx:1229 AliCounterCollection.cxx:1230 AliCounterCollection.cxx:1231 AliCounterCollection.cxx:1232 AliCounterCollection.cxx:1233 AliCounterCollection.cxx:1234 AliCounterCollection.cxx:1235 AliCounterCollection.cxx:1236 AliCounterCollection.cxx:1237 AliCounterCollection.cxx:1238 AliCounterCollection.cxx:1239 AliCounterCollection.cxx:1240 AliCounterCollection.cxx:1241 AliCounterCollection.cxx:1242 AliCounterCollection.cxx:1243 AliCounterCollection.cxx:1244 AliCounterCollection.cxx:1245 AliCounterCollection.cxx:1246 AliCounterCollection.cxx:1247 AliCounterCollection.cxx:1248 AliCounterCollection.cxx:1249 AliCounterCollection.cxx:1250 AliCounterCollection.cxx:1251 AliCounterCollection.cxx:1252 AliCounterCollection.cxx:1253 AliCounterCollection.cxx:1254 AliCounterCollection.cxx:1255 AliCounterCollection.cxx:1256 AliCounterCollection.cxx:1257 AliCounterCollection.cxx:1258 AliCounterCollection.cxx:1259 AliCounterCollection.cxx:1260 AliCounterCollection.cxx:1261 AliCounterCollection.cxx:1262 AliCounterCollection.cxx:1263 AliCounterCollection.cxx:1264 AliCounterCollection.cxx:1265 AliCounterCollection.cxx:1266 AliCounterCollection.cxx:1267 AliCounterCollection.cxx:1268 AliCounterCollection.cxx:1269 AliCounterCollection.cxx:1270 AliCounterCollection.cxx:1271 AliCounterCollection.cxx:1272 AliCounterCollection.cxx:1273 AliCounterCollection.cxx:1274 AliCounterCollection.cxx:1275 AliCounterCollection.cxx:1276 AliCounterCollection.cxx:1277 AliCounterCollection.cxx:1278 AliCounterCollection.cxx:1279 AliCounterCollection.cxx:1280 AliCounterCollection.cxx:1281 AliCounterCollection.cxx:1282 AliCounterCollection.cxx:1283 AliCounterCollection.cxx:1284 AliCounterCollection.cxx:1285 AliCounterCollection.cxx:1286 AliCounterCollection.cxx:1287 AliCounterCollection.cxx:1288 AliCounterCollection.cxx:1289 AliCounterCollection.cxx:1290 AliCounterCollection.cxx:1291 AliCounterCollection.cxx:1292 AliCounterCollection.cxx:1293 AliCounterCollection.cxx:1294 AliCounterCollection.cxx:1295 AliCounterCollection.cxx:1296 AliCounterCollection.cxx:1297 AliCounterCollection.cxx:1298 AliCounterCollection.cxx:1299 AliCounterCollection.cxx:1300 AliCounterCollection.cxx:1301 AliCounterCollection.cxx:1302 AliCounterCollection.cxx:1303 AliCounterCollection.cxx:1304 AliCounterCollection.cxx:1305 AliCounterCollection.cxx:1306 AliCounterCollection.cxx:1307 AliCounterCollection.cxx:1308 AliCounterCollection.cxx:1309 AliCounterCollection.cxx:1310 AliCounterCollection.cxx:1311 AliCounterCollection.cxx:1312 AliCounterCollection.cxx:1313 AliCounterCollection.cxx:1314 AliCounterCollection.cxx:1315 AliCounterCollection.cxx:1316 AliCounterCollection.cxx:1317 AliCounterCollection.cxx:1318 AliCounterCollection.cxx:1319 AliCounterCollection.cxx:1320 AliCounterCollection.cxx:1321 AliCounterCollection.cxx:1322 AliCounterCollection.cxx:1323 AliCounterCollection.cxx:1324 AliCounterCollection.cxx:1325 AliCounterCollection.cxx:1326 AliCounterCollection.cxx:1327 AliCounterCollection.cxx:1328 AliCounterCollection.cxx:1329 AliCounterCollection.cxx:1330 AliCounterCollection.cxx:1331 AliCounterCollection.cxx:1332 AliCounterCollection.cxx:1333 AliCounterCollection.cxx:1334 AliCounterCollection.cxx:1335 AliCounterCollection.cxx:1336 AliCounterCollection.cxx:1337 AliCounterCollection.cxx:1338 AliCounterCollection.cxx:1339 AliCounterCollection.cxx:1340 AliCounterCollection.cxx:1341 AliCounterCollection.cxx:1342 AliCounterCollection.cxx:1343 AliCounterCollection.cxx:1344 AliCounterCollection.cxx:1345 AliCounterCollection.cxx:1346 AliCounterCollection.cxx:1347 AliCounterCollection.cxx:1348 AliCounterCollection.cxx:1349 AliCounterCollection.cxx:1350 AliCounterCollection.cxx:1351 AliCounterCollection.cxx:1352 AliCounterCollection.cxx:1353 AliCounterCollection.cxx:1354 AliCounterCollection.cxx:1355 AliCounterCollection.cxx:1356 AliCounterCollection.cxx:1357 AliCounterCollection.cxx:1358 AliCounterCollection.cxx:1359 AliCounterCollection.cxx:1360 AliCounterCollection.cxx:1361 AliCounterCollection.cxx:1362 AliCounterCollection.cxx:1363 AliCounterCollection.cxx:1364 AliCounterCollection.cxx:1365 AliCounterCollection.cxx:1366 AliCounterCollection.cxx:1367 AliCounterCollection.cxx:1368 AliCounterCollection.cxx:1369 AliCounterCollection.cxx:1370 AliCounterCollection.cxx:1371 AliCounterCollection.cxx:1372 AliCounterCollection.cxx:1373 AliCounterCollection.cxx:1374 AliCounterCollection.cxx:1375 AliCounterCollection.cxx:1376 AliCounterCollection.cxx:1377 AliCounterCollection.cxx:1378 AliCounterCollection.cxx:1379 AliCounterCollection.cxx:1380 AliCounterCollection.cxx:1381 AliCounterCollection.cxx:1382 AliCounterCollection.cxx:1383 AliCounterCollection.cxx:1384 AliCounterCollection.cxx:1385 AliCounterCollection.cxx:1386 AliCounterCollection.cxx:1387 AliCounterCollection.cxx:1388 AliCounterCollection.cxx:1389 AliCounterCollection.cxx:1390 AliCounterCollection.cxx:1391 AliCounterCollection.cxx:1392 AliCounterCollection.cxx:1393 AliCounterCollection.cxx:1394 AliCounterCollection.cxx:1395 AliCounterCollection.cxx:1396 AliCounterCollection.cxx:1397 AliCounterCollection.cxx:1398 AliCounterCollection.cxx:1399 AliCounterCollection.cxx:1400 AliCounterCollection.cxx:1401 AliCounterCollection.cxx:1402 AliCounterCollection.cxx:1403 AliCounterCollection.cxx:1404 AliCounterCollection.cxx:1405 AliCounterCollection.cxx:1406 AliCounterCollection.cxx:1407 AliCounterCollection.cxx:1408 AliCounterCollection.cxx:1409 AliCounterCollection.cxx:1410 AliCounterCollection.cxx:1411 AliCounterCollection.cxx:1412 AliCounterCollection.cxx:1413 AliCounterCollection.cxx:1414 AliCounterCollection.cxx:1415 AliCounterCollection.cxx:1416 AliCounterCollection.cxx:1417 AliCounterCollection.cxx:1418 AliCounterCollection.cxx:1419 AliCounterCollection.cxx:1420 AliCounterCollection.cxx:1421 AliCounterCollection.cxx:1422 AliCounterCollection.cxx:1423 AliCounterCollection.cxx:1424 AliCounterCollection.cxx:1425 AliCounterCollection.cxx:1426 AliCounterCollection.cxx:1427 AliCounterCollection.cxx:1428 AliCounterCollection.cxx:1429 AliCounterCollection.cxx:1430 AliCounterCollection.cxx:1431 AliCounterCollection.cxx:1432 AliCounterCollection.cxx:1433 AliCounterCollection.cxx:1434 AliCounterCollection.cxx:1435 AliCounterCollection.cxx:1436 AliCounterCollection.cxx:1437 AliCounterCollection.cxx:1438 AliCounterCollection.cxx:1439 AliCounterCollection.cxx:1440 AliCounterCollection.cxx:1441 AliCounterCollection.cxx:1442 AliCounterCollection.cxx:1443 AliCounterCollection.cxx:1444 AliCounterCollection.cxx:1445 AliCounterCollection.cxx:1446 AliCounterCollection.cxx:1447 AliCounterCollection.cxx:1448 AliCounterCollection.cxx:1449 AliCounterCollection.cxx:1450 AliCounterCollection.cxx:1451 AliCounterCollection.cxx:1452 AliCounterCollection.cxx:1453 AliCounterCollection.cxx:1454 AliCounterCollection.cxx:1455 AliCounterCollection.cxx:1456 AliCounterCollection.cxx:1457 AliCounterCollection.cxx:1458 AliCounterCollection.cxx:1459 AliCounterCollection.cxx:1460 AliCounterCollection.cxx:1461 AliCounterCollection.cxx:1462 AliCounterCollection.cxx:1463 AliCounterCollection.cxx:1464 AliCounterCollection.cxx:1465 AliCounterCollection.cxx:1466 AliCounterCollection.cxx:1467 AliCounterCollection.cxx:1468 AliCounterCollection.cxx:1469 AliCounterCollection.cxx:1470 AliCounterCollection.cxx:1471 AliCounterCollection.cxx:1472 AliCounterCollection.cxx:1473 AliCounterCollection.cxx:1474 AliCounterCollection.cxx:1475 AliCounterCollection.cxx:1476 AliCounterCollection.cxx:1477 AliCounterCollection.cxx:1478 AliCounterCollection.cxx:1479 AliCounterCollection.cxx:1480 AliCounterCollection.cxx:1481 AliCounterCollection.cxx:1482 AliCounterCollection.cxx:1483 AliCounterCollection.cxx:1484 AliCounterCollection.cxx:1485 AliCounterCollection.cxx:1486 AliCounterCollection.cxx:1487 AliCounterCollection.cxx:1488 AliCounterCollection.cxx:1489 AliCounterCollection.cxx:1490 AliCounterCollection.cxx:1491 AliCounterCollection.cxx:1492 AliCounterCollection.cxx:1493 AliCounterCollection.cxx:1494 AliCounterCollection.cxx:1495 AliCounterCollection.cxx:1496 AliCounterCollection.cxx:1497 AliCounterCollection.cxx:1498 AliCounterCollection.cxx:1499 AliCounterCollection.cxx:1500 AliCounterCollection.cxx:1501 AliCounterCollection.cxx:1502 AliCounterCollection.cxx:1503 AliCounterCollection.cxx:1504 AliCounterCollection.cxx:1505 AliCounterCollection.cxx:1506 AliCounterCollection.cxx:1507 AliCounterCollection.cxx:1508 AliCounterCollection.cxx:1509 AliCounterCollection.cxx:1510 AliCounterCollection.cxx:1511 AliCounterCollection.cxx:1512 AliCounterCollection.cxx:1513 AliCounterCollection.cxx:1514 AliCounterCollection.cxx:1515 AliCounterCollection.cxx:1516 AliCounterCollection.cxx:1517 AliCounterCollection.cxx:1518 AliCounterCollection.cxx:1519 AliCounterCollection.cxx:1520 AliCounterCollection.cxx:1521 AliCounterCollection.cxx:1522 AliCounterCollection.cxx:1523 AliCounterCollection.cxx:1524 AliCounterCollection.cxx:1525 AliCounterCollection.cxx:1526 AliCounterCollection.cxx:1527 AliCounterCollection.cxx:1528 AliCounterCollection.cxx:1529 AliCounterCollection.cxx:1530 AliCounterCollection.cxx:1531 AliCounterCollection.cxx:1532 AliCounterCollection.cxx:1533 AliCounterCollection.cxx:1534 AliCounterCollection.cxx:1535 AliCounterCollection.cxx:1536 AliCounterCollection.cxx:1537 AliCounterCollection.cxx:1538 AliCounterCollection.cxx:1539 AliCounterCollection.cxx:1540 AliCounterCollection.cxx:1541 AliCounterCollection.cxx:1542 AliCounterCollection.cxx:1543 AliCounterCollection.cxx:1544 AliCounterCollection.cxx:1545 AliCounterCollection.cxx:1546 AliCounterCollection.cxx:1547 AliCounterCollection.cxx:1548 AliCounterCollection.cxx:1549 AliCounterCollection.cxx:1550 AliCounterCollection.cxx:1551 AliCounterCollection.cxx:1552 AliCounterCollection.cxx:1553 AliCounterCollection.cxx:1554 AliCounterCollection.cxx:1555 AliCounterCollection.cxx:1556 AliCounterCollection.cxx:1557 AliCounterCollection.cxx:1558 AliCounterCollection.cxx:1559 AliCounterCollection.cxx:1560 AliCounterCollection.cxx:1561 AliCounterCollection.cxx:1562 AliCounterCollection.cxx:1563 AliCounterCollection.cxx:1564 AliCounterCollection.cxx:1565 AliCounterCollection.cxx:1566 AliCounterCollection.cxx:1567 AliCounterCollection.cxx:1568 AliCounterCollection.cxx:1569 AliCounterCollection.cxx:1570 AliCounterCollection.cxx:1571 AliCounterCollection.cxx:1572 AliCounterCollection.cxx:1573 AliCounterCollection.cxx:1574 AliCounterCollection.cxx:1575 AliCounterCollection.cxx:1576 AliCounterCollection.cxx:1577 AliCounterCollection.cxx:1578 AliCounterCollection.cxx:1579 AliCounterCollection.cxx:1580 AliCounterCollection.cxx:1581 AliCounterCollection.cxx:1582 AliCounterCollection.cxx:1583 AliCounterCollection.cxx:1584 AliCounterCollection.cxx:1585 AliCounterCollection.cxx:1586 AliCounterCollection.cxx:1587 AliCounterCollection.cxx:1588 AliCounterCollection.cxx:1589 AliCounterCollection.cxx:1590 AliCounterCollection.cxx:1591 AliCounterCollection.cxx:1592 AliCounterCollection.cxx:1593 AliCounterCollection.cxx:1594 AliCounterCollection.cxx:1595 AliCounterCollection.cxx:1596 AliCounterCollection.cxx:1597 AliCounterCollection.cxx:1598 AliCounterCollection.cxx:1599 AliCounterCollection.cxx:1600 AliCounterCollection.cxx:1601 AliCounterCollection.cxx:1602 AliCounterCollection.cxx:1603 AliCounterCollection.cxx:1604 AliCounterCollection.cxx:1605 AliCounterCollection.cxx:1606 AliCounterCollection.cxx:1607 AliCounterCollection.cxx:1608 AliCounterCollection.cxx:1609 AliCounterCollection.cxx:1610 AliCounterCollection.cxx:1611 AliCounterCollection.cxx:1612 AliCounterCollection.cxx:1613 AliCounterCollection.cxx:1614 AliCounterCollection.cxx:1615 AliCounterCollection.cxx:1616 AliCounterCollection.cxx:1617 AliCounterCollection.cxx:1618 AliCounterCollection.cxx:1619 AliCounterCollection.cxx:1620 AliCounterCollection.cxx:1621 AliCounterCollection.cxx:1622 AliCounterCollection.cxx:1623 AliCounterCollection.cxx:1624 AliCounterCollection.cxx:1625 AliCounterCollection.cxx:1626 AliCounterCollection.cxx:1627 AliCounterCollection.cxx:1628 AliCounterCollection.cxx:1629 AliCounterCollection.cxx:1630 AliCounterCollection.cxx:1631 AliCounterCollection.cxx:1632 AliCounterCollection.cxx:1633 AliCounterCollection.cxx:1634 AliCounterCollection.cxx:1635 AliCounterCollection.cxx:1636 AliCounterCollection.cxx:1637 AliCounterCollection.cxx:1638 AliCounterCollection.cxx:1639 AliCounterCollection.cxx:1640 AliCounterCollection.cxx:1641 AliCounterCollection.cxx:1642 AliCounterCollection.cxx:1643 AliCounterCollection.cxx:1644 AliCounterCollection.cxx:1645 AliCounterCollection.cxx:1646 AliCounterCollection.cxx:1647 AliCounterCollection.cxx:1648 AliCounterCollection.cxx:1649 AliCounterCollection.cxx:1650 AliCounterCollection.cxx:1651 AliCounterCollection.cxx:1652 AliCounterCollection.cxx:1653 AliCounterCollection.cxx:1654 AliCounterCollection.cxx:1655 AliCounterCollection.cxx:1656 AliCounterCollection.cxx:1657 AliCounterCollection.cxx:1658 AliCounterCollection.cxx:1659 AliCounterCollection.cxx:1660 AliCounterCollection.cxx:1661 AliCounterCollection.cxx:1662 AliCounterCollection.cxx:1663 AliCounterCollection.cxx:1664 AliCounterCollection.cxx:1665 AliCounterCollection.cxx:1666 AliCounterCollection.cxx:1667 AliCounterCollection.cxx:1668 AliCounterCollection.cxx:1669 AliCounterCollection.cxx:1670 AliCounterCollection.cxx:1671 AliCounterCollection.cxx:1672 AliCounterCollection.cxx:1673 AliCounterCollection.cxx:1674 AliCounterCollection.cxx:1675 AliCounterCollection.cxx:1676 AliCounterCollection.cxx:1677 AliCounterCollection.cxx:1678 AliCounterCollection.cxx:1679 AliCounterCollection.cxx:1680 AliCounterCollection.cxx:1681 AliCounterCollection.cxx:1682 AliCounterCollection.cxx:1683 AliCounterCollection.cxx:1684 AliCounterCollection.cxx:1685 AliCounterCollection.cxx:1686 AliCounterCollection.cxx:1687 AliCounterCollection.cxx:1688 AliCounterCollection.cxx:1689 AliCounterCollection.cxx:1690 AliCounterCollection.cxx:1691 AliCounterCollection.cxx:1692 AliCounterCollection.cxx:1693 AliCounterCollection.cxx:1694 AliCounterCollection.cxx:1695 AliCounterCollection.cxx:1696 AliCounterCollection.cxx:1697 AliCounterCollection.cxx:1698 AliCounterCollection.cxx:1699 AliCounterCollection.cxx:1700 AliCounterCollection.cxx:1701 AliCounterCollection.cxx:1702 AliCounterCollection.cxx:1703 AliCounterCollection.cxx:1704 AliCounterCollection.cxx:1705 AliCounterCollection.cxx:1706 AliCounterCollection.cxx:1707 AliCounterCollection.cxx:1708 AliCounterCollection.cxx:1709 AliCounterCollection.cxx:1710 AliCounterCollection.cxx:1711 AliCounterCollection.cxx:1712 AliCounterCollection.cxx:1713 AliCounterCollection.cxx:1714 AliCounterCollection.cxx:1715 AliCounterCollection.cxx:1716 AliCounterCollection.cxx:1717 AliCounterCollection.cxx:1718 AliCounterCollection.cxx:1719 AliCounterCollection.cxx:1720 AliCounterCollection.cxx:1721 AliCounterCollection.cxx:1722 AliCounterCollection.cxx:1723 AliCounterCollection.cxx:1724 AliCounterCollection.cxx:1725 AliCounterCollection.cxx:1726 AliCounterCollection.cxx:1727 AliCounterCollection.cxx:1728 AliCounterCollection.cxx:1729 AliCounterCollection.cxx:1730 AliCounterCollection.cxx:1731 AliCounterCollection.cxx:1732 AliCounterCollection.cxx:1733 AliCounterCollection.cxx:1734 AliCounterCollection.cxx:1735 AliCounterCollection.cxx:1736 AliCounterCollection.cxx:1737 AliCounterCollection.cxx:1738 AliCounterCollection.cxx:1739 AliCounterCollection.cxx:1740 AliCounterCollection.cxx:1741 AliCounterCollection.cxx:1742 AliCounterCollection.cxx:1743 AliCounterCollection.cxx:1744 AliCounterCollection.cxx:1745 AliCounterCollection.cxx:1746 AliCounterCollection.cxx:1747 AliCounterCollection.cxx:1748 AliCounterCollection.cxx:1749 AliCounterCollection.cxx:1750 AliCounterCollection.cxx:1751 AliCounterCollection.cxx:1752 AliCounterCollection.cxx:1753 AliCounterCollection.cxx:1754 AliCounterCollection.cxx:1755 AliCounterCollection.cxx:1756 AliCounterCollection.cxx:1757 AliCounterCollection.cxx:1758 AliCounterCollection.cxx:1759 AliCounterCollection.cxx:1760 AliCounterCollection.cxx:1761 AliCounterCollection.cxx:1762 AliCounterCollection.cxx:1763 AliCounterCollection.cxx:1764 AliCounterCollection.cxx:1765 AliCounterCollection.cxx:1766 AliCounterCollection.cxx:1767 AliCounterCollection.cxx:1768 AliCounterCollection.cxx:1769 AliCounterCollection.cxx:1770 AliCounterCollection.cxx:1771 AliCounterCollection.cxx:1772 AliCounterCollection.cxx:1773 AliCounterCollection.cxx:1774 AliCounterCollection.cxx:1775 AliCounterCollection.cxx:1776 AliCounterCollection.cxx:1777 AliCounterCollection.cxx:1778 AliCounterCollection.cxx:1779 AliCounterCollection.cxx:1780 AliCounterCollection.cxx:1781 AliCounterCollection.cxx:1782 AliCounterCollection.cxx:1783 AliCounterCollection.cxx:1784 AliCounterCollection.cxx:1785 AliCounterCollection.cxx:1786 AliCounterCollection.cxx:1787 AliCounterCollection.cxx:1788 AliCounterCollection.cxx:1789 AliCounterCollection.cxx:1790 AliCounterCollection.cxx:1791 AliCounterCollection.cxx:1792 AliCounterCollection.cxx:1793 AliCounterCollection.cxx:1794 AliCounterCollection.cxx:1795 AliCounterCollection.cxx:1796 AliCounterCollection.cxx:1797 AliCounterCollection.cxx:1798 AliCounterCollection.cxx:1799 AliCounterCollection.cxx:1800 AliCounterCollection.cxx:1801 AliCounterCollection.cxx:1802 AliCounterCollection.cxx:1803 AliCounterCollection.cxx:1804 AliCounterCollection.cxx:1805 AliCounterCollection.cxx:1806 AliCounterCollection.cxx:1807 AliCounterCollection.cxx:1808 AliCounterCollection.cxx:1809 AliCounterCollection.cxx:1810 AliCounterCollection.cxx:1811 AliCounterCollection.cxx:1812 AliCounterCollection.cxx:1813 AliCounterCollection.cxx:1814 AliCounterCollection.cxx:1815 AliCounterCollection.cxx:1816 AliCounterCollection.cxx:1817