#include "AliFMDHistCollector.h"
#include <AliESDFMD.h>
#include <TAxis.h>
#include <TList.h>
#include <TMath.h>
#include "AliForwardCorrectionManager.h"
#include "AliFMDCorrSecondaryMap.h"
#include "AliLog.h"
#include <TH2D.h>
#include <TH3D.h>
#include <TH1I.h>
#include <TProfile.h>
#include <TProfile2D.h>
#include <TObjArray.h>
#include <TArrayI.h>
#include <TROOT.h>
#include <iostream>
#include <iomanip>
ClassImp(AliFMDHistCollector)
#if 0
;
#endif
AliFMDHistCollector::AliFMDHistCollector()
: fNCutBins(0),
fCorrectionCut(0),
fDebug(0),
fList(0),
fSumRings(0),
fCoverage(0),
fSkipped(0),
fMergeMethod(kStraightMean),
fFiducialMethod(kByCut),
fSkipFMDRings(0),
fBgAndHitMaps(false),
fVtxList(0),
fByCent(0),
fDoByCent(false)
{
DGUARD(fDebug, 3, "Default CTOR of AliFMDHistCollector");
}
AliFMDHistCollector::AliFMDHistCollector(const char* title)
: TNamed("fmdHistCollector", title),
fNCutBins(2),
fCorrectionCut(0.5),
fDebug(0),
fList(0),
fSumRings(0),
fCoverage(0),
fSkipped(0),
fMergeMethod(kStraightMean),
fFiducialMethod(kByCut),
fSkipFMDRings(0),
fBgAndHitMaps(false),
fVtxList(0),
fByCent(0),
fDoByCent(false)
{
DGUARD(fDebug, 3, "Named CTOR of AliFMDHistCollector: %s", title);
}
AliFMDHistCollector::AliFMDHistCollector(const AliFMDHistCollector& o)
: TNamed(o),
fNCutBins(o.fNCutBins),
fCorrectionCut(o.fCorrectionCut),
fDebug(o.fDebug),
fList(o.fList),
fSumRings(o.fSumRings),
fCoverage(o.fCoverage),
fSkipped(o.fSkipped),
fMergeMethod(o.fMergeMethod),
fFiducialMethod(o.fFiducialMethod),
fSkipFMDRings(o.fSkipFMDRings),
fBgAndHitMaps(o.fBgAndHitMaps),
fVtxList(o.fVtxList),
fByCent(o.fByCent),
fDoByCent(o.fDoByCent)
{
DGUARD(fDebug, 3, "Copy CTOR of AliFMDHistCollector");
}
AliFMDHistCollector::~AliFMDHistCollector()
{
DGUARD(fDebug, 3, "DTOR of AliFMDHistCollector");
}
AliFMDHistCollector&
AliFMDHistCollector::operator=(const AliFMDHistCollector& o)
{
DGUARD(fDebug, 3, "Assignment of AliFMDHistCollector");
if (&o == this) return *this;
TNamed::operator=(o);
fNCutBins = o.fNCutBins;
fCorrectionCut = o.fCorrectionCut;
fDebug = o.fDebug;
fList = o.fList;
fSumRings = o.fSumRings;
fCoverage = o.fCoverage;
fSkipped = o.fSkipped;
fMergeMethod = o.fMergeMethod;
fFiducialMethod = o.fFiducialMethod;
fSkipFMDRings = o.fSkipFMDRings;
fBgAndHitMaps = o.fBgAndHitMaps;
fVtxList = o.fVtxList;
fByCent = o.fByCent;
fDoByCent = o.fDoByCent;
return *this;
}
void
AliFMDHistCollector::SetupForData(const TAxis& vtxAxis,
const TAxis& etaAxis)
{
DGUARD(fDebug, 1, "Initialization of AliFMDHistCollector");
fSumRings = new TH2D("sumRings", "Sum in individual rings",
etaAxis.GetNbins(), etaAxis.GetXmin(), etaAxis.GetXmax(),
5, 1, 6);
fSumRings->Sumw2();
fSumRings->SetDirectory(0);
fSumRings->SetXTitle("#eta");
fSumRings->GetYaxis()->SetBinLabel(1,"FMD1i");
fSumRings->GetYaxis()->SetBinLabel(2,"FMD2i");
fSumRings->GetYaxis()->SetBinLabel(3,"FMD2o");
fSumRings->GetYaxis()->SetBinLabel(4,"FMD3i");
fSumRings->GetYaxis()->SetBinLabel(5,"FMD3o");
fList->Add(fSumRings);
fCoverage = new TH2D("coverage", "#eta coverage per v_{z}",
etaAxis.GetNbins(),etaAxis.GetXmin(),etaAxis.GetXmax(),
vtxAxis.GetNbins(),vtxAxis.GetXmin(),vtxAxis.GetXmax());
fCoverage->SetDirectory(0);
fCoverage->SetXTitle("#eta");
fCoverage->SetYTitle("v_{z} [cm]");
fCoverage->SetZTitle("n_{bins}");
fList->Add(fCoverage);
fSkipped = new TH1D("skipped", "Rings skipped", 5, 1, 6);
fSkipped->SetDirectory(0);
fSkipped->SetFillColor(kRed+1);
fSkipped->SetFillStyle(3001);
fSkipped->SetYTitle("Events");
fSkipped->GetXaxis()->SetBinLabel(1,"FMD1i");
fSkipped->GetXaxis()->SetBinLabel(2,"FMD2i");
fSkipped->GetXaxis()->SetBinLabel(3,"FMD2o");
fSkipped->GetXaxis()->SetBinLabel(4,"FMD3i");
fSkipped->GetXaxis()->SetBinLabel(5,"FMD3o");
fList->Add(fSkipped);
fList->Add(AliForwardUtil::MakeParameter("nCutBins",fNCutBins));
fList->Add(AliForwardUtil::MakeParameter("skipRings",fSkipFMDRings));
fList->Add(AliForwardUtil::MakeParameter("bgAndHits",fBgAndHitMaps));
fList->Add(AliForwardUtil::MakeParameter("fiducial",Int_t(fFiducialMethod)));
fList->Add(AliForwardUtil::MakeParameter("fiducialCut",fCorrectionCut));
fList->Add(AliForwardUtil::MakeParameter("merge",Int_t(fMergeMethod)));
UShort_t nVz = vtxAxis.GetNbins();
fVtxList = new TObjArray(nVz, 1);
fVtxList->SetName("histCollectorVtxBins");
fVtxList->SetOwner();
for (UShort_t iVz = 1; iVz <= nVz; iVz++) {
Double_t vMin = vtxAxis.GetBinLowEdge(iVz);
Double_t vMax = vtxAxis.GetBinUpEdge(iVz);
VtxBin* bin = new VtxBin(iVz, vMin, vMax, fNCutBins);
fVtxList->AddAt(bin, iVz);
bin->SetupForData(fCoverage, fSkipFMDRings, fFiducialMethod,
fCorrectionCut, fList, etaAxis,
fBgAndHitMaps, fBgAndHitMaps);
}
if (!fDoByCent) return;
fByCent = new TList;
fByCent->SetName("byCentrality");
fByCent->SetOwner();
fList->Add(fByCent);
Int_t nCent = 101;
Double_t minCent = -.5;
Double_t maxCent = 100.5;
for (Int_t i = 0; i < 5; i++) {
UShort_t d;
Char_t r;
GetDetRing(i, d, r);
TH3* h = new TH3D(Form("FMD%d%c", d, r),
Form("dN/d#eta per centrality for FMD%d%c", d, r),
etaAxis.GetNbins(), etaAxis.GetXmin(), etaAxis.GetXmax(),
nCent, minCent, maxCent, 1, 0, 1);
h->SetXTitle("#eta");
h->SetYTitle("Centrality [%]");
h->SetZTitle("dN/d#eta");
h->SetDirectory(0);
h->SetMarkerColor(AliForwardUtil::RingColor(d, r));
h->SetMarkerStyle(20);
fByCent->Add(h);
}
}
Bool_t
AliFMDHistCollector::CheckCorrection(FiducialMethod m,
Double_t cut,
const TH2D* bg,
Int_t ie,
Int_t ip)
{
Double_t c = bg->GetBinContent(ie,ip);
switch (m) {
case kByCut:
return c >= cut;
case kDistance:
if (2 * c < bg->GetBinContent(ie+1,ip) ||
2 * c < bg->GetBinContent(ie-1,ip)) return false;
return true;
default:
AliErrorClass("No fiducal cut method defined");
}
return false;
}
void
AliFMDHistCollector::CreateOutputObjects(TList* dir)
{
DGUARD(fDebug, 1, "Define output of AliFMDHistCollector");
fList = new TList;
fList->SetOwner();
fList->SetName(GetName());
dir->Add(fList);
}
Bool_t
AliFMDHistCollector::CheckSkip(UShort_t d, Char_t r, UShort_t skips)
{
UShort_t q = (r == 'I' || r == 'i' ? 0 : 1);
UShort_t c = 1 << (d-1);
UShort_t t = 1 << (c+q-1);
return (t & skips) == t;
}
Int_t
AliFMDHistCollector::GetIdx(UShort_t d, Char_t r)
{
Int_t idx = -1;
switch (d) {
case 1: idx = 0; break;
case 2: idx = 1 + (r == 'I' || r == 'i' ? 0 : 1); break;
case 3: idx = 3 + (r == 'I' || r == 'i' ? 0 : 1); break;
}
return idx;
}
void
AliFMDHistCollector::GetDetRing(Int_t idx, UShort_t& d, Char_t& r)
{
d = 0;
r = '\0';
switch (idx) {
case 0: d = 1; r = 'I'; break;
case 1: d = 2; r = 'I'; break;
case 2: d = 2; r = 'O'; break;
case 3: d = 3; r = 'I'; break;
case 4: d = 3; r = 'O'; break;
}
}
AliFMDHistCollector::VtxBin*
AliFMDHistCollector::GetVtxBin(Int_t ivtx)
{
if (!fVtxList) return 0;
if (ivtx < 1 || ivtx > fVtxList->GetEntriesFast()) return 0;
VtxBin* bin = static_cast<VtxBin*>(fVtxList->At(ivtx));
return bin;
}
const AliFMDHistCollector::VtxBin*
AliFMDHistCollector::GetVtxBin(Int_t ivtx) const
{
if (!fVtxList) return 0;
if (ivtx < 1 || ivtx > fVtxList->GetEntriesFast()) return 0;
VtxBin* bin = static_cast<VtxBin*>(fVtxList->At(ivtx));
return bin;
}
void
AliFMDHistCollector::MergeBins(MergeMethod m,
Double_t c, Double_t e,
Double_t oc, Double_t oe,
Double_t& rc, Double_t& re)
{
rc = re = 0;
switch (m) {
case kStraightMean:
case kPreferInner:
case kPreferOuter:
rc = oc + c/2;
re = TMath::Sqrt(oe*oe+(e*e)/4);
break;
case kStraightMeanNoZero:
if (oe > 0) {
rc = (oc + c)/2;
re = TMath::Sqrt(oe*oe + e*e)/2;
}
else {
rc = c;
re = e;
}
break;
case kWeightedMean: {
Double_t w = 1/(e*e);
Double_t sc = w * c;
Double_t sw = w;
if (oe > 0) {
Double_t ow = 1/(oe*oe);
sc += ow * oc;
sw += ow;
}
rc = sc / sw;
re = TMath::Sqrt(1 / sw);
}
break;
case kLeastError:
if (e < oe) {
rc = c;
re = e;
}
else {
rc = oc;
re = oe;
}
break;
case kSum:
rc = c + oc;
re = TMath::Sqrt(oe * oe + e * e);
break;
default:
AliErrorClass("No method for defining content of overlapping bins defined");
return;
}
}
Bool_t
AliFMDHistCollector::Collect(const AliForwardUtil::Histos& hists,
AliForwardUtil::Histos& sums,
UShort_t vtxbin,
TH2D& out,
Double_t cent,
Bool_t eta2phi,
Bool_t add)
{
DGUARD(fDebug, 1, "Collect final histogram of AliFMDHistCollector");
VtxBin* bin = GetVtxBin(vtxbin);
if (!bin) return false;
Bool_t ret = bin->Collect(hists, sums, out, fSumRings, fSkipped, cent,
fMergeMethod, fSkipFMDRings,
fByCent, eta2phi, add);
return ret;
}
#define PF(N,V,...) \
AliForwardUtil::PrintField(N,V, ## __VA_ARGS__)
#define PFB(N,FLAG) \
do { \
AliForwardUtil::PrintName(N); \
std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \
} while(false)
#define PFV(N,VALUE) \
do { \
AliForwardUtil::PrintName(N); \
std::cout << (VALUE) << std::endl; } while(false)
void
AliFMDHistCollector::Print(Option_t* ) const
{
TString merge("unknown");
switch (fMergeMethod) {
case kStraightMean: merge = "straight mean"; break;
case kStraightMeanNoZero: merge = "straight mean (no zeros)"; break;
case kWeightedMean: merge = "weighted mean"; break;
case kLeastError: merge = "least error"; break;
case kSum: merge = "straight sum"; break;
case kPreferInner: merge = "prefer inners"; break;
case kPreferOuter: merge = "prefer outers"; break;
}
AliForwardUtil::PrintTask(*this);
gROOT->IncreaseDirLevel();
PFV("# of cut bins", fNCutBins );
PFV("Fiducal method", (fFiducialMethod == kByCut ? "cut" : "distance"));
PFV("Fiducial cut", fCorrectionCut );
PFV("Merge method", merge);
if (!fVtxList) {
gROOT->DecreaseDirLevel();
return;
}
char ind[64];
for (Int_t i = 0; i < gROOT->GetDirLevel(); i++) ind[i] = ' ';
ind[gROOT->GetDirLevel()] = '\0';
std::cout << ind << "Bin ranges:\n" << ind << " rings | Range ";
Int_t nVz = fVtxList->GetEntriesFast();
for (Int_t iIdx = 0; iIdx < 5; iIdx++) {
UShort_t d = 0;
Char_t r = 0;
GetDetRing(iIdx, d, r);
std::cout << ind << " | FMD" << d << r << " ";
}
std::cout << '\n' << ind << " /vz_bin |-----------";
for (Int_t iIdx = 0; iIdx < 5; iIdx++)
std::cout << "-+--------";
std::cout << std::endl;
for (UShort_t iVz = 1; iVz <= nVz; iVz++) {
const VtxBin* bin = GetVtxBin(iVz);
if (!bin) continue;
std::cout << " " << std::right << std::setw(6) << iVz << " | "
<< std::setw(3) << bin->fLow << " - " << std::left
<< std::setw(3) << bin->fHigh << " ";
for (Int_t iIdx = 0; iIdx < 5; iIdx++) {
Int_t first, last;
bin->GetFirstAndLast(iIdx, first, last);
std::cout << " | " << std::setw(3) << first << "-"
<< std::setw(3) << last;
}
std::cout << std::endl;
}
gROOT->DecreaseDirLevel();
}
AliFMDHistCollector::VtxBin::VtxBin(Int_t idx, Double_t minIpZ, Double_t maxIpZ,
Int_t nCutBins)
: fIndex(idx),
fLow(minIpZ),
fHigh(maxIpZ),
fHitMap(0),
fFirstBin(1),
fLastBin(1),
fNCutBins(nCutBins)
{
}
AliFMDHistCollector::VtxBin::VtxBin(const VtxBin& o)
: TObject(o),
fIndex(o.fIndex),
fLow(o.fLow),
fHigh(o.fHigh),
fHitMap(o.fHitMap),
fFirstBin(o.fFirstBin),
fLastBin(o.fLastBin),
fNCutBins(o.fNCutBins)
{
}
AliFMDHistCollector::VtxBin&
AliFMDHistCollector::VtxBin::operator=(const VtxBin& o)
{
if (&o == this) return *this;
fIndex = o.fIndex;
fLow = o.fLow;
fHigh = o.fHigh;
fHitMap = o.fHitMap;
fFirstBin = o.fFirstBin;
fLastBin = o.fLastBin;
fNCutBins = o.fNCutBins;
return *this;
}
const Char_t*
AliFMDHistCollector::VtxBin::GetName() const
{
return Form("%c%03d_%c%03d",
(fLow >= 0 ? 'p' : 'm'), Int_t(TMath::Abs(fLow)),
(fHigh >= 0 ? 'p' : 'm'), Int_t(TMath::Abs(fHigh)));
}
void
AliFMDHistCollector::VtxBin::SetupForData(TH2* coverage,
UShort_t skips,
FiducialMethod fiducial,
Double_t cut,
TList* l,
const TAxis& etaAxis,
Bool_t doHitMaps,
Bool_t storeSecMap)
{
TList* out = 0;
if (doHitMaps || storeSecMap) {
out = new TList;
out->SetName(GetName());
out->SetOwner();
l->Add(out);
}
if (doHitMaps) {
fHitMap = new AliForwardUtil::Histos();
fHitMap->Init(etaAxis);
}
fFirstBin.Set(5);
fLastBin.Set(5);
AliForwardCorrectionManager& fcm = AliForwardCorrectionManager::Instance();
for (Int_t iIdx = 0; iIdx < 5; iIdx++) {
UShort_t d = 0;
Char_t r = 0;
GetDetRing(iIdx, d, r);
if (CheckSkip(d, r, skips)) continue;
TH2D* bg = fcm.GetSecondaryMap()->GetCorrection(d,r,UShort_t(fIndex));
Int_t nEta = bg->GetNbinsX();
Int_t first = nEta+1;
Int_t last = 0;
for (Int_t ie = 1; ie <= nEta; ie++) {
bool ok = true;
for (Int_t ip = 1; ip <= bg->GetNbinsY(); ip++) {
if (!CheckCorrection(fiducial, cut, bg, ie, ip)) {
ok = false;
continue;
}
}
if (!ok) continue;
first = TMath::Min(ie, first);
last = TMath::Max(ie, last);
}
fFirstBin[iIdx] = first;
fLastBin[iIdx] = last;
if (fHitMap) {
TH2* h = fHitMap->Get(d, r);
h->SetDirectory(0);
h->SetName(Form("hitMapFMD%d%c", d, r));
out->Add(h);
}
TH2D* obg=0;
if(storeSecMap) {
obg = static_cast<TH2D*>(bg->Clone(Form("secMapFMD%d%c", d, r)));
obg->SetDirectory(0);
obg->Reset();
out->Add(obg);
}
for (Int_t ie = first+fNCutBins; ie <= last-fNCutBins; ie++) {
Double_t old = coverage->GetBinContent(ie, fIndex);
coverage->SetBinContent(ie, fIndex, old+1);
if(obg) {
for (Int_t ip = 1; ip <= bg->GetNbinsY(); ip++) {
obg->SetBinContent(ie, ip, bg->GetBinContent(ie, ip));
obg->SetBinError(ie, ip, bg->GetBinError(ie, ip));
}
}
}
}
}
void
AliFMDHistCollector::VtxBin::GetFirstAndLast(Int_t idx,
Int_t& first,
Int_t& last) const
{
first = 0;
last = 0;
if (idx < 0 || idx >= fFirstBin.GetSize()) return;
first = fFirstBin.At(idx)+fNCutBins;
last = fLastBin.At(idx)-fNCutBins;
}
Int_t
AliFMDHistCollector::VtxBin::GetFirst(Int_t idx) const
{
Int_t first, last;
GetFirstAndLast(idx, first , last);
return first;
}
Int_t
AliFMDHistCollector::VtxBin::GetLast(Int_t idx) const
{
Int_t first, last;
GetFirstAndLast(idx, first , last);
return last;
}
#define PRINT_OVERFLOW(D,R,T,H) do { \
printf("Content of FMD%d%c overflow %s rebinning", D, R, T); \
Int_t i = 0; \
for (Int_t ix = 1; ix <= t->GetNbinsX(); ix++) { \
Double_t c = t->GetBinContent(ix, t->GetNbinsY()+1); \
if (c <= 1e-9) continue; \
if ((i % 10) == 0) printf("\n "); \
printf("%3d: %5.2f ", ix, c); \
i++; \
} \
printf("\n"); \
} while (false)
Bool_t
AliFMDHistCollector::VtxBin::Collect(const AliForwardUtil::Histos& hists,
AliForwardUtil::Histos& sums,
TH2D& out,
TH2D* sumRings,
TH1D* skipped,
Double_t cent,
MergeMethod m,
UShort_t skips,
TList* byCent,
Bool_t eta2phi,
Bool_t add)
{
for (UShort_t d=1; d<=3; d++) {
UShort_t nr = (d == 1 ? 1 : 2);
for (UShort_t q=0; q<nr; q++) {
Char_t r = (q == 0 ? 'I' : 'O');
Int_t i = (d == 1 ? 1 : 2*d + (q == 0 ? -2 : -1));
TH2D* h = hists.Get(d,r);
if (CheckSkip(d, r, skips) || !h ||
h->TestBit(AliForwardUtil::kSkipRing)) {
skipped->Fill(i);
continue;
}
TH2D* o = sums.Get(d, r);
TH2D* t = static_cast<TH2D*>(h->Clone(Form("FMD%d%c_tmp",d,r)));
Int_t first = 0;
Int_t last = 0;
GetFirstAndLast(d, r, first, last);
Int_t nY = t->GetNbinsY();
Int_t nX = t->GetNbinsX();
for (Int_t iPhi = 0; iPhi <= nY+1; iPhi++) {
for (Int_t iEta = 1; iEta < first; iEta++) {
t->SetBinContent(iEta,iPhi,0);
t->SetBinError(iEta,iPhi,0);
}
for (Int_t iEta = last+1; iEta <= nX; iEta++) {
t->SetBinContent(iEta,iPhi,0);
t->SetBinError(iEta,iPhi,0);
}
}
for (Int_t iEta = first; iEta <= last; iEta++)
t->SetBinContent(iEta,0,1);
if (eta2phi) {
for (Int_t iEta = first; iEta <= last; iEta++)
t->SetBinContent(iEta,nY+1,1);
}
if (add) {
o->Add(t);
if (fHitMap && !eta2phi) fHitMap->Get(d, r)->Add(t);
if (byCent) {
TH3* dNdetaCent = static_cast<TH3*>(byCent->At(i-1));
if (cent >= 0 && dNdetaCent) {
Int_t iCent = dNdetaCent->GetYaxis()->FindBin(cent);
if (iCent > 0 && iCent <= dNdetaCent->GetNbinsY()) {
TH1* proj = static_cast<TH1*>(t->ProjectionX("tmp", 1, nY));
proj->SetDirectory(0);
for (Int_t iEta = 1; iEta <= nX; iEta++) {
Double_t v1 = proj->GetBinContent(iEta);
Double_t e1 = proj->GetBinError(iEta);
Double_t v2 = dNdetaCent->GetBinContent(iEta, iCent, 1);
Double_t e2 = dNdetaCent->GetBinError(iEta, iCent, 1);
dNdetaCent->SetBinContent(iEta,iCent,1, v1+v2);
dNdetaCent->SetBinError(iEta,iCent,1, TMath::Sqrt(e1*e1+e2*e2));
Double_t uF = t->GetBinContent(iEta, 0);
Double_t oF = t->GetBinContent(iEta, nY+1);
if (uF > 0) {
Double_t old = dNdetaCent->GetBinContent(iEta, iCent, 0);
dNdetaCent->SetBinContent(iEta, iCent, 0, old + uF);
}
if (oF > 0) {
Double_t old = dNdetaCent->GetBinContent(iEta, iCent, 2);
dNdetaCent->SetBinContent(iEta, iCent, 2, old + oF);
}
}
delete proj;
}
}
}
}
if (q == 1) {
t->RebinY(2);
}
nY = t->GetNbinsY();
for (Int_t iEta = first; iEta <= last; iEta++) {
Int_t overlap = GetOverlap(d,r,iEta);
MergeMethod mm = m;
Float_t fac = 1;
if (m != kSum && overlap >= 0) {
fac = 0.5;
if (m == kPreferInner) {
if ((r == 'o' || r == 'O') &&
(overlap == 0 || overlap == 1 || overlap == 3))
fac = 0;
else if ((r == 'i' || r == 'I') && (overlap == 2 || overlap == 4))
fac = 1;
else
mm = kStraightMean;
}
else if (m == kPreferOuter) {
if ((r == 'i' || r == 'I') && (overlap == 2 || overlap == 4))
fac = 0;
else if ((r == 'O' || r == 'o') &&
(overlap == 0 || overlap == 1 || overlap == 3))
fac = 1;
else
mm = kStraightMean;
}
}
Float_t ooc = out.GetBinContent(iEta,0);
out.SetBinContent(iEta, 0, ooc + fac);
Float_t oop = out.GetBinContent(iEta,nY+1);
Float_t nop = t->GetBinContent(iEta,nY+1);
#if 0
Info("", "etaBin=%3d Setting phi acceptance to %f(%f+%f)=%f",
iEta, fac, oop, nop, fac*(oop+nop));
#endif
out.SetBinContent(iEta, nY+1, fac * nop + oop);
for (Int_t iPhi = 1; iPhi <= nY; iPhi++) {
Double_t c = t->GetBinContent(iEta,iPhi);
Double_t e = t->GetBinError(iEta,iPhi);
Double_t ee = t->GetXaxis()->GetBinCenter(iEta);
sumRings->Fill(ee, i, c);
if (fac <= 0 || c <= 0 || e <= 0) continue;
if (overlap < 0 || fac >= 1) {
out.SetBinContent(iEta,iPhi,c);
out.SetBinError(iEta,iPhi,e);
continue;
}
Double_t oc = out.GetBinContent(iEta,iPhi);
Double_t oe = out.GetBinError(iEta,iPhi);
Double_t rc, re;
MergeBins(mm, c, e, oc, oe, rc, re);
out.SetBinContent(iEta,iPhi, rc);
out.SetBinError(iEta,iPhi, re);
}
}
delete t;
}
}
return true;
}
Int_t
AliFMDHistCollector::VtxBin::GetOverlap(UShort_t d, Char_t r,
Int_t bin) const
{
Int_t other = -1;
if (d == 1) {
if (bin <= GetLast(2,'I')) other = GetIdx(2,'I');
}
else if (d == 2 && r == 'I') {
if (bin <= GetLast(2, 'O')) other = GetIdx(2, 'O');
else if (bin >= GetFirst(1, 'I')) other = GetIdx(1, 'I');
}
else if (d == 2 && r == 'O') {
if (bin >= GetFirst(2, 'I')) other = GetIdx(2,'I');
}
else if (d == 3 && r == 'O') {
if (bin <= GetLast(3, 'I')) other = GetIdx(3, 'I');
}
else if (d == 3 && r == 'I') {
if (bin >= GetFirst(3, 'O')) other = GetIdx(3, 'O');
}
return other;
}
AliFMDHistCollector.cxx:1 AliFMDHistCollector.cxx:2 AliFMDHistCollector.cxx:3 AliFMDHistCollector.cxx:4 AliFMDHistCollector.cxx:5 AliFMDHistCollector.cxx:6 AliFMDHistCollector.cxx:7 AliFMDHistCollector.cxx:8 AliFMDHistCollector.cxx:9 AliFMDHistCollector.cxx:10 AliFMDHistCollector.cxx:11 AliFMDHistCollector.cxx:12 AliFMDHistCollector.cxx:13 AliFMDHistCollector.cxx:14 AliFMDHistCollector.cxx:15 AliFMDHistCollector.cxx:16 AliFMDHistCollector.cxx:17 AliFMDHistCollector.cxx:18 AliFMDHistCollector.cxx:19 AliFMDHistCollector.cxx:20 AliFMDHistCollector.cxx:21 AliFMDHistCollector.cxx:22 AliFMDHistCollector.cxx:23 AliFMDHistCollector.cxx:24 AliFMDHistCollector.cxx:25 AliFMDHistCollector.cxx:26 AliFMDHistCollector.cxx:27 AliFMDHistCollector.cxx:28 AliFMDHistCollector.cxx:29 AliFMDHistCollector.cxx:30 AliFMDHistCollector.cxx:31 AliFMDHistCollector.cxx:32 AliFMDHistCollector.cxx:33 AliFMDHistCollector.cxx:34 AliFMDHistCollector.cxx:35 AliFMDHistCollector.cxx:36 AliFMDHistCollector.cxx:37 AliFMDHistCollector.cxx:38 AliFMDHistCollector.cxx:39 AliFMDHistCollector.cxx:40 AliFMDHistCollector.cxx:41 AliFMDHistCollector.cxx:42 AliFMDHistCollector.cxx:43 AliFMDHistCollector.cxx:44 AliFMDHistCollector.cxx:45 AliFMDHistCollector.cxx:46 AliFMDHistCollector.cxx:47 AliFMDHistCollector.cxx:48 AliFMDHistCollector.cxx:49 AliFMDHistCollector.cxx:50 AliFMDHistCollector.cxx:51 AliFMDHistCollector.cxx:52 AliFMDHistCollector.cxx:53 AliFMDHistCollector.cxx:54 AliFMDHistCollector.cxx:55 AliFMDHistCollector.cxx:56 AliFMDHistCollector.cxx:57 AliFMDHistCollector.cxx:58 AliFMDHistCollector.cxx:59 AliFMDHistCollector.cxx:60 AliFMDHistCollector.cxx:61 AliFMDHistCollector.cxx:62 AliFMDHistCollector.cxx:63 AliFMDHistCollector.cxx:64 AliFMDHistCollector.cxx:65 AliFMDHistCollector.cxx:66 AliFMDHistCollector.cxx:67 AliFMDHistCollector.cxx:68 AliFMDHistCollector.cxx:69 AliFMDHistCollector.cxx:70 AliFMDHistCollector.cxx:71 AliFMDHistCollector.cxx:72 AliFMDHistCollector.cxx:73 AliFMDHistCollector.cxx:74 AliFMDHistCollector.cxx:75 AliFMDHistCollector.cxx:76 AliFMDHistCollector.cxx:77 AliFMDHistCollector.cxx:78 AliFMDHistCollector.cxx:79 AliFMDHistCollector.cxx:80 AliFMDHistCollector.cxx:81 AliFMDHistCollector.cxx:82 AliFMDHistCollector.cxx:83 AliFMDHistCollector.cxx:84 AliFMDHistCollector.cxx:85 AliFMDHistCollector.cxx:86 AliFMDHistCollector.cxx:87 AliFMDHistCollector.cxx:88 AliFMDHistCollector.cxx:89 AliFMDHistCollector.cxx:90 AliFMDHistCollector.cxx:91 AliFMDHistCollector.cxx:92 AliFMDHistCollector.cxx:93 AliFMDHistCollector.cxx:94 AliFMDHistCollector.cxx:95 AliFMDHistCollector.cxx:96 AliFMDHistCollector.cxx:97 AliFMDHistCollector.cxx:98 AliFMDHistCollector.cxx:99 AliFMDHistCollector.cxx:100 AliFMDHistCollector.cxx:101 AliFMDHistCollector.cxx:102 AliFMDHistCollector.cxx:103 AliFMDHistCollector.cxx:104 AliFMDHistCollector.cxx:105 AliFMDHistCollector.cxx:106 AliFMDHistCollector.cxx:107 AliFMDHistCollector.cxx:108 AliFMDHistCollector.cxx:109 AliFMDHistCollector.cxx:110 AliFMDHistCollector.cxx:111 AliFMDHistCollector.cxx:112 AliFMDHistCollector.cxx:113 AliFMDHistCollector.cxx:114 AliFMDHistCollector.cxx:115 AliFMDHistCollector.cxx:116 AliFMDHistCollector.cxx:117 AliFMDHistCollector.cxx:118 AliFMDHistCollector.cxx:119 AliFMDHistCollector.cxx:120 AliFMDHistCollector.cxx:121 AliFMDHistCollector.cxx:122 AliFMDHistCollector.cxx:123 AliFMDHistCollector.cxx:124 AliFMDHistCollector.cxx:125 AliFMDHistCollector.cxx:126 AliFMDHistCollector.cxx:127 AliFMDHistCollector.cxx:128 AliFMDHistCollector.cxx:129 AliFMDHistCollector.cxx:130 AliFMDHistCollector.cxx:131 AliFMDHistCollector.cxx:132 AliFMDHistCollector.cxx:133 AliFMDHistCollector.cxx:134 AliFMDHistCollector.cxx:135 AliFMDHistCollector.cxx:136 AliFMDHistCollector.cxx:137 AliFMDHistCollector.cxx:138 AliFMDHistCollector.cxx:139 AliFMDHistCollector.cxx:140 AliFMDHistCollector.cxx:141 AliFMDHistCollector.cxx:142 AliFMDHistCollector.cxx:143 AliFMDHistCollector.cxx:144 AliFMDHistCollector.cxx:145 AliFMDHistCollector.cxx:146 AliFMDHistCollector.cxx:147 AliFMDHistCollector.cxx:148 AliFMDHistCollector.cxx:149 AliFMDHistCollector.cxx:150 AliFMDHistCollector.cxx:151 AliFMDHistCollector.cxx:152 AliFMDHistCollector.cxx:153 AliFMDHistCollector.cxx:154 AliFMDHistCollector.cxx:155 AliFMDHistCollector.cxx:156 AliFMDHistCollector.cxx:157 AliFMDHistCollector.cxx:158 AliFMDHistCollector.cxx:159 AliFMDHistCollector.cxx:160 AliFMDHistCollector.cxx:161 AliFMDHistCollector.cxx:162 AliFMDHistCollector.cxx:163 AliFMDHistCollector.cxx:164 AliFMDHistCollector.cxx:165 AliFMDHistCollector.cxx:166 AliFMDHistCollector.cxx:167 AliFMDHistCollector.cxx:168 AliFMDHistCollector.cxx:169 AliFMDHistCollector.cxx:170 AliFMDHistCollector.cxx:171 AliFMDHistCollector.cxx:172 AliFMDHistCollector.cxx:173 AliFMDHistCollector.cxx:174 AliFMDHistCollector.cxx:175 AliFMDHistCollector.cxx:176 AliFMDHistCollector.cxx:177 AliFMDHistCollector.cxx:178 AliFMDHistCollector.cxx:179 AliFMDHistCollector.cxx:180 AliFMDHistCollector.cxx:181 AliFMDHistCollector.cxx:182 AliFMDHistCollector.cxx:183 AliFMDHistCollector.cxx:184 AliFMDHistCollector.cxx:185 AliFMDHistCollector.cxx:186 AliFMDHistCollector.cxx:187 AliFMDHistCollector.cxx:188 AliFMDHistCollector.cxx:189 AliFMDHistCollector.cxx:190 AliFMDHistCollector.cxx:191 AliFMDHistCollector.cxx:192 AliFMDHistCollector.cxx:193 AliFMDHistCollector.cxx:194 AliFMDHistCollector.cxx:195 AliFMDHistCollector.cxx:196 AliFMDHistCollector.cxx:197 AliFMDHistCollector.cxx:198 AliFMDHistCollector.cxx:199 AliFMDHistCollector.cxx:200 AliFMDHistCollector.cxx:201 AliFMDHistCollector.cxx:202 AliFMDHistCollector.cxx:203 AliFMDHistCollector.cxx:204 AliFMDHistCollector.cxx:205 AliFMDHistCollector.cxx:206 AliFMDHistCollector.cxx:207 AliFMDHistCollector.cxx:208 AliFMDHistCollector.cxx:209 AliFMDHistCollector.cxx:210 AliFMDHistCollector.cxx:211 AliFMDHistCollector.cxx:212 AliFMDHistCollector.cxx:213 AliFMDHistCollector.cxx:214 AliFMDHistCollector.cxx:215 AliFMDHistCollector.cxx:216 AliFMDHistCollector.cxx:217 AliFMDHistCollector.cxx:218 AliFMDHistCollector.cxx:219 AliFMDHistCollector.cxx:220 AliFMDHistCollector.cxx:221 AliFMDHistCollector.cxx:222 AliFMDHistCollector.cxx:223 AliFMDHistCollector.cxx:224 AliFMDHistCollector.cxx:225 AliFMDHistCollector.cxx:226 AliFMDHistCollector.cxx:227 AliFMDHistCollector.cxx:228 AliFMDHistCollector.cxx:229 AliFMDHistCollector.cxx:230 AliFMDHistCollector.cxx:231 AliFMDHistCollector.cxx:232 AliFMDHistCollector.cxx:233 AliFMDHistCollector.cxx:234 AliFMDHistCollector.cxx:235 AliFMDHistCollector.cxx:236 AliFMDHistCollector.cxx:237 AliFMDHistCollector.cxx:238 AliFMDHistCollector.cxx:239 AliFMDHistCollector.cxx:240 AliFMDHistCollector.cxx:241 AliFMDHistCollector.cxx:242 AliFMDHistCollector.cxx:243 AliFMDHistCollector.cxx:244 AliFMDHistCollector.cxx:245 AliFMDHistCollector.cxx:246 AliFMDHistCollector.cxx:247 AliFMDHistCollector.cxx:248 AliFMDHistCollector.cxx:249 AliFMDHistCollector.cxx:250 AliFMDHistCollector.cxx:251 AliFMDHistCollector.cxx:252 AliFMDHistCollector.cxx:253 AliFMDHistCollector.cxx:254 AliFMDHistCollector.cxx:255 AliFMDHistCollector.cxx:256 AliFMDHistCollector.cxx:257 AliFMDHistCollector.cxx:258 AliFMDHistCollector.cxx:259 AliFMDHistCollector.cxx:260 AliFMDHistCollector.cxx:261 AliFMDHistCollector.cxx:262 AliFMDHistCollector.cxx:263 AliFMDHistCollector.cxx:264 AliFMDHistCollector.cxx:265 AliFMDHistCollector.cxx:266 AliFMDHistCollector.cxx:267 AliFMDHistCollector.cxx:268 AliFMDHistCollector.cxx:269 AliFMDHistCollector.cxx:270 AliFMDHistCollector.cxx:271 AliFMDHistCollector.cxx:272 AliFMDHistCollector.cxx:273 AliFMDHistCollector.cxx:274 AliFMDHistCollector.cxx:275 AliFMDHistCollector.cxx:276 AliFMDHistCollector.cxx:277 AliFMDHistCollector.cxx:278 AliFMDHistCollector.cxx:279 AliFMDHistCollector.cxx:280 AliFMDHistCollector.cxx:281 AliFMDHistCollector.cxx:282 AliFMDHistCollector.cxx:283 AliFMDHistCollector.cxx:284 AliFMDHistCollector.cxx:285 AliFMDHistCollector.cxx:286 AliFMDHistCollector.cxx:287 AliFMDHistCollector.cxx:288 AliFMDHistCollector.cxx:289 AliFMDHistCollector.cxx:290 AliFMDHistCollector.cxx:291 AliFMDHistCollector.cxx:292 AliFMDHistCollector.cxx:293 AliFMDHistCollector.cxx:294 AliFMDHistCollector.cxx:295 AliFMDHistCollector.cxx:296 AliFMDHistCollector.cxx:297 AliFMDHistCollector.cxx:298 AliFMDHistCollector.cxx:299 AliFMDHistCollector.cxx:300 AliFMDHistCollector.cxx:301 AliFMDHistCollector.cxx:302 AliFMDHistCollector.cxx:303 AliFMDHistCollector.cxx:304 AliFMDHistCollector.cxx:305 AliFMDHistCollector.cxx:306 AliFMDHistCollector.cxx:307 AliFMDHistCollector.cxx:308 AliFMDHistCollector.cxx:309 AliFMDHistCollector.cxx:310 AliFMDHistCollector.cxx:311 AliFMDHistCollector.cxx:312 AliFMDHistCollector.cxx:313 AliFMDHistCollector.cxx:314 AliFMDHistCollector.cxx:315 AliFMDHistCollector.cxx:316 AliFMDHistCollector.cxx:317 AliFMDHistCollector.cxx:318 AliFMDHistCollector.cxx:319 AliFMDHistCollector.cxx:320 AliFMDHistCollector.cxx:321 AliFMDHistCollector.cxx:322 AliFMDHistCollector.cxx:323 AliFMDHistCollector.cxx:324 AliFMDHistCollector.cxx:325 AliFMDHistCollector.cxx:326 AliFMDHistCollector.cxx:327 AliFMDHistCollector.cxx:328 AliFMDHistCollector.cxx:329 AliFMDHistCollector.cxx:330 AliFMDHistCollector.cxx:331 AliFMDHistCollector.cxx:332 AliFMDHistCollector.cxx:333 AliFMDHistCollector.cxx:334 AliFMDHistCollector.cxx:335 AliFMDHistCollector.cxx:336 AliFMDHistCollector.cxx:337 AliFMDHistCollector.cxx:338 AliFMDHistCollector.cxx:339 AliFMDHistCollector.cxx:340 AliFMDHistCollector.cxx:341 AliFMDHistCollector.cxx:342 AliFMDHistCollector.cxx:343 AliFMDHistCollector.cxx:344 AliFMDHistCollector.cxx:345 AliFMDHistCollector.cxx:346 AliFMDHistCollector.cxx:347 AliFMDHistCollector.cxx:348 AliFMDHistCollector.cxx:349 AliFMDHistCollector.cxx:350 AliFMDHistCollector.cxx:351 AliFMDHistCollector.cxx:352 AliFMDHistCollector.cxx:353 AliFMDHistCollector.cxx:354 AliFMDHistCollector.cxx:355 AliFMDHistCollector.cxx:356 AliFMDHistCollector.cxx:357 AliFMDHistCollector.cxx:358 AliFMDHistCollector.cxx:359 AliFMDHistCollector.cxx:360 AliFMDHistCollector.cxx:361 AliFMDHistCollector.cxx:362 AliFMDHistCollector.cxx:363 AliFMDHistCollector.cxx:364 AliFMDHistCollector.cxx:365 AliFMDHistCollector.cxx:366 AliFMDHistCollector.cxx:367 AliFMDHistCollector.cxx:368 AliFMDHistCollector.cxx:369 AliFMDHistCollector.cxx:370 AliFMDHistCollector.cxx:371 AliFMDHistCollector.cxx:372 AliFMDHistCollector.cxx:373 AliFMDHistCollector.cxx:374 AliFMDHistCollector.cxx:375 AliFMDHistCollector.cxx:376 AliFMDHistCollector.cxx:377 AliFMDHistCollector.cxx:378 AliFMDHistCollector.cxx:379 AliFMDHistCollector.cxx:380 AliFMDHistCollector.cxx:381 AliFMDHistCollector.cxx:382 AliFMDHistCollector.cxx:383 AliFMDHistCollector.cxx:384 AliFMDHistCollector.cxx:385 AliFMDHistCollector.cxx:386 AliFMDHistCollector.cxx:387 AliFMDHistCollector.cxx:388 AliFMDHistCollector.cxx:389 AliFMDHistCollector.cxx:390 AliFMDHistCollector.cxx:391 AliFMDHistCollector.cxx:392 AliFMDHistCollector.cxx:393 AliFMDHistCollector.cxx:394 AliFMDHistCollector.cxx:395 AliFMDHistCollector.cxx:396 AliFMDHistCollector.cxx:397 AliFMDHistCollector.cxx:398 AliFMDHistCollector.cxx:399 AliFMDHistCollector.cxx:400 AliFMDHistCollector.cxx:401 AliFMDHistCollector.cxx:402 AliFMDHistCollector.cxx:403 AliFMDHistCollector.cxx:404 AliFMDHistCollector.cxx:405 AliFMDHistCollector.cxx:406 AliFMDHistCollector.cxx:407 AliFMDHistCollector.cxx:408 AliFMDHistCollector.cxx:409 AliFMDHistCollector.cxx:410 AliFMDHistCollector.cxx:411 AliFMDHistCollector.cxx:412 AliFMDHistCollector.cxx:413 AliFMDHistCollector.cxx:414 AliFMDHistCollector.cxx:415 AliFMDHistCollector.cxx:416 AliFMDHistCollector.cxx:417 AliFMDHistCollector.cxx:418 AliFMDHistCollector.cxx:419 AliFMDHistCollector.cxx:420 AliFMDHistCollector.cxx:421 AliFMDHistCollector.cxx:422 AliFMDHistCollector.cxx:423 AliFMDHistCollector.cxx:424 AliFMDHistCollector.cxx:425 AliFMDHistCollector.cxx:426 AliFMDHistCollector.cxx:427 AliFMDHistCollector.cxx:428 AliFMDHistCollector.cxx:429 AliFMDHistCollector.cxx:430 AliFMDHistCollector.cxx:431 AliFMDHistCollector.cxx:432 AliFMDHistCollector.cxx:433 AliFMDHistCollector.cxx:434 AliFMDHistCollector.cxx:435 AliFMDHistCollector.cxx:436 AliFMDHistCollector.cxx:437 AliFMDHistCollector.cxx:438 AliFMDHistCollector.cxx:439 AliFMDHistCollector.cxx:440 AliFMDHistCollector.cxx:441 AliFMDHistCollector.cxx:442 AliFMDHistCollector.cxx:443 AliFMDHistCollector.cxx:444 AliFMDHistCollector.cxx:445 AliFMDHistCollector.cxx:446 AliFMDHistCollector.cxx:447 AliFMDHistCollector.cxx:448 AliFMDHistCollector.cxx:449 AliFMDHistCollector.cxx:450 AliFMDHistCollector.cxx:451 AliFMDHistCollector.cxx:452 AliFMDHistCollector.cxx:453 AliFMDHistCollector.cxx:454 AliFMDHistCollector.cxx:455 AliFMDHistCollector.cxx:456 AliFMDHistCollector.cxx:457 AliFMDHistCollector.cxx:458 AliFMDHistCollector.cxx:459 AliFMDHistCollector.cxx:460 AliFMDHistCollector.cxx:461 AliFMDHistCollector.cxx:462 AliFMDHistCollector.cxx:463 AliFMDHistCollector.cxx:464 AliFMDHistCollector.cxx:465 AliFMDHistCollector.cxx:466 AliFMDHistCollector.cxx:467 AliFMDHistCollector.cxx:468 AliFMDHistCollector.cxx:469 AliFMDHistCollector.cxx:470 AliFMDHistCollector.cxx:471 AliFMDHistCollector.cxx:472 AliFMDHistCollector.cxx:473 AliFMDHistCollector.cxx:474 AliFMDHistCollector.cxx:475 AliFMDHistCollector.cxx:476 AliFMDHistCollector.cxx:477 AliFMDHistCollector.cxx:478 AliFMDHistCollector.cxx:479 AliFMDHistCollector.cxx:480 AliFMDHistCollector.cxx:481 AliFMDHistCollector.cxx:482 AliFMDHistCollector.cxx:483 AliFMDHistCollector.cxx:484 AliFMDHistCollector.cxx:485 AliFMDHistCollector.cxx:486 AliFMDHistCollector.cxx:487 AliFMDHistCollector.cxx:488 AliFMDHistCollector.cxx:489 AliFMDHistCollector.cxx:490 AliFMDHistCollector.cxx:491 AliFMDHistCollector.cxx:492 AliFMDHistCollector.cxx:493 AliFMDHistCollector.cxx:494 AliFMDHistCollector.cxx:495 AliFMDHistCollector.cxx:496 AliFMDHistCollector.cxx:497 AliFMDHistCollector.cxx:498 AliFMDHistCollector.cxx:499 AliFMDHistCollector.cxx:500 AliFMDHistCollector.cxx:501 AliFMDHistCollector.cxx:502 AliFMDHistCollector.cxx:503 AliFMDHistCollector.cxx:504 AliFMDHistCollector.cxx:505 AliFMDHistCollector.cxx:506 AliFMDHistCollector.cxx:507 AliFMDHistCollector.cxx:508 AliFMDHistCollector.cxx:509 AliFMDHistCollector.cxx:510 AliFMDHistCollector.cxx:511 AliFMDHistCollector.cxx:512 AliFMDHistCollector.cxx:513 AliFMDHistCollector.cxx:514 AliFMDHistCollector.cxx:515 AliFMDHistCollector.cxx:516 AliFMDHistCollector.cxx:517 AliFMDHistCollector.cxx:518 AliFMDHistCollector.cxx:519 AliFMDHistCollector.cxx:520 AliFMDHistCollector.cxx:521 AliFMDHistCollector.cxx:522 AliFMDHistCollector.cxx:523 AliFMDHistCollector.cxx:524 AliFMDHistCollector.cxx:525 AliFMDHistCollector.cxx:526 AliFMDHistCollector.cxx:527 AliFMDHistCollector.cxx:528 AliFMDHistCollector.cxx:529 AliFMDHistCollector.cxx:530 AliFMDHistCollector.cxx:531 AliFMDHistCollector.cxx:532 AliFMDHistCollector.cxx:533 AliFMDHistCollector.cxx:534 AliFMDHistCollector.cxx:535 AliFMDHistCollector.cxx:536 AliFMDHistCollector.cxx:537 AliFMDHistCollector.cxx:538 AliFMDHistCollector.cxx:539 AliFMDHistCollector.cxx:540 AliFMDHistCollector.cxx:541 AliFMDHistCollector.cxx:542 AliFMDHistCollector.cxx:543 AliFMDHistCollector.cxx:544 AliFMDHistCollector.cxx:545 AliFMDHistCollector.cxx:546 AliFMDHistCollector.cxx:547 AliFMDHistCollector.cxx:548 AliFMDHistCollector.cxx:549 AliFMDHistCollector.cxx:550 AliFMDHistCollector.cxx:551 AliFMDHistCollector.cxx:552 AliFMDHistCollector.cxx:553 AliFMDHistCollector.cxx:554 AliFMDHistCollector.cxx:555 AliFMDHistCollector.cxx:556 AliFMDHistCollector.cxx:557 AliFMDHistCollector.cxx:558 AliFMDHistCollector.cxx:559 AliFMDHistCollector.cxx:560 AliFMDHistCollector.cxx:561 AliFMDHistCollector.cxx:562 AliFMDHistCollector.cxx:563 AliFMDHistCollector.cxx:564 AliFMDHistCollector.cxx:565 AliFMDHistCollector.cxx:566 AliFMDHistCollector.cxx:567 AliFMDHistCollector.cxx:568 AliFMDHistCollector.cxx:569 AliFMDHistCollector.cxx:570 AliFMDHistCollector.cxx:571 AliFMDHistCollector.cxx:572 AliFMDHistCollector.cxx:573 AliFMDHistCollector.cxx:574 AliFMDHistCollector.cxx:575 AliFMDHistCollector.cxx:576 AliFMDHistCollector.cxx:577 AliFMDHistCollector.cxx:578 AliFMDHistCollector.cxx:579 AliFMDHistCollector.cxx:580 AliFMDHistCollector.cxx:581 AliFMDHistCollector.cxx:582 AliFMDHistCollector.cxx:583 AliFMDHistCollector.cxx:584 AliFMDHistCollector.cxx:585 AliFMDHistCollector.cxx:586 AliFMDHistCollector.cxx:587 AliFMDHistCollector.cxx:588 AliFMDHistCollector.cxx:589 AliFMDHistCollector.cxx:590 AliFMDHistCollector.cxx:591 AliFMDHistCollector.cxx:592 AliFMDHistCollector.cxx:593 AliFMDHistCollector.cxx:594 AliFMDHistCollector.cxx:595 AliFMDHistCollector.cxx:596 AliFMDHistCollector.cxx:597 AliFMDHistCollector.cxx:598 AliFMDHistCollector.cxx:599 AliFMDHistCollector.cxx:600 AliFMDHistCollector.cxx:601 AliFMDHistCollector.cxx:602 AliFMDHistCollector.cxx:603 AliFMDHistCollector.cxx:604 AliFMDHistCollector.cxx:605 AliFMDHistCollector.cxx:606 AliFMDHistCollector.cxx:607 AliFMDHistCollector.cxx:608 AliFMDHistCollector.cxx:609 AliFMDHistCollector.cxx:610 AliFMDHistCollector.cxx:611 AliFMDHistCollector.cxx:612 AliFMDHistCollector.cxx:613 AliFMDHistCollector.cxx:614 AliFMDHistCollector.cxx:615 AliFMDHistCollector.cxx:616 AliFMDHistCollector.cxx:617 AliFMDHistCollector.cxx:618 AliFMDHistCollector.cxx:619 AliFMDHistCollector.cxx:620 AliFMDHistCollector.cxx:621 AliFMDHistCollector.cxx:622 AliFMDHistCollector.cxx:623 AliFMDHistCollector.cxx:624 AliFMDHistCollector.cxx:625 AliFMDHistCollector.cxx:626 AliFMDHistCollector.cxx:627 AliFMDHistCollector.cxx:628 AliFMDHistCollector.cxx:629 AliFMDHistCollector.cxx:630 AliFMDHistCollector.cxx:631 AliFMDHistCollector.cxx:632 AliFMDHistCollector.cxx:633 AliFMDHistCollector.cxx:634 AliFMDHistCollector.cxx:635 AliFMDHistCollector.cxx:636 AliFMDHistCollector.cxx:637 AliFMDHistCollector.cxx:638 AliFMDHistCollector.cxx:639 AliFMDHistCollector.cxx:640 AliFMDHistCollector.cxx:641 AliFMDHistCollector.cxx:642 AliFMDHistCollector.cxx:643 AliFMDHistCollector.cxx:644 AliFMDHistCollector.cxx:645 AliFMDHistCollector.cxx:646 AliFMDHistCollector.cxx:647 AliFMDHistCollector.cxx:648 AliFMDHistCollector.cxx:649 AliFMDHistCollector.cxx:650 AliFMDHistCollector.cxx:651 AliFMDHistCollector.cxx:652 AliFMDHistCollector.cxx:653 AliFMDHistCollector.cxx:654 AliFMDHistCollector.cxx:655 AliFMDHistCollector.cxx:656 AliFMDHistCollector.cxx:657 AliFMDHistCollector.cxx:658 AliFMDHistCollector.cxx:659 AliFMDHistCollector.cxx:660 AliFMDHistCollector.cxx:661 AliFMDHistCollector.cxx:662 AliFMDHistCollector.cxx:663 AliFMDHistCollector.cxx:664 AliFMDHistCollector.cxx:665 AliFMDHistCollector.cxx:666 AliFMDHistCollector.cxx:667 AliFMDHistCollector.cxx:668 AliFMDHistCollector.cxx:669 AliFMDHistCollector.cxx:670 AliFMDHistCollector.cxx:671 AliFMDHistCollector.cxx:672 AliFMDHistCollector.cxx:673 AliFMDHistCollector.cxx:674 AliFMDHistCollector.cxx:675 AliFMDHistCollector.cxx:676 AliFMDHistCollector.cxx:677 AliFMDHistCollector.cxx:678 AliFMDHistCollector.cxx:679 AliFMDHistCollector.cxx:680 AliFMDHistCollector.cxx:681 AliFMDHistCollector.cxx:682 AliFMDHistCollector.cxx:683 AliFMDHistCollector.cxx:684 AliFMDHistCollector.cxx:685 AliFMDHistCollector.cxx:686 AliFMDHistCollector.cxx:687 AliFMDHistCollector.cxx:688 AliFMDHistCollector.cxx:689 AliFMDHistCollector.cxx:690 AliFMDHistCollector.cxx:691 AliFMDHistCollector.cxx:692 AliFMDHistCollector.cxx:693 AliFMDHistCollector.cxx:694 AliFMDHistCollector.cxx:695 AliFMDHistCollector.cxx:696 AliFMDHistCollector.cxx:697 AliFMDHistCollector.cxx:698 AliFMDHistCollector.cxx:699 AliFMDHistCollector.cxx:700 AliFMDHistCollector.cxx:701 AliFMDHistCollector.cxx:702 AliFMDHistCollector.cxx:703 AliFMDHistCollector.cxx:704 AliFMDHistCollector.cxx:705 AliFMDHistCollector.cxx:706 AliFMDHistCollector.cxx:707 AliFMDHistCollector.cxx:708 AliFMDHistCollector.cxx:709 AliFMDHistCollector.cxx:710 AliFMDHistCollector.cxx:711 AliFMDHistCollector.cxx:712 AliFMDHistCollector.cxx:713 AliFMDHistCollector.cxx:714 AliFMDHistCollector.cxx:715 AliFMDHistCollector.cxx:716 AliFMDHistCollector.cxx:717 AliFMDHistCollector.cxx:718 AliFMDHistCollector.cxx:719 AliFMDHistCollector.cxx:720 AliFMDHistCollector.cxx:721 AliFMDHistCollector.cxx:722 AliFMDHistCollector.cxx:723 AliFMDHistCollector.cxx:724 AliFMDHistCollector.cxx:725 AliFMDHistCollector.cxx:726 AliFMDHistCollector.cxx:727 AliFMDHistCollector.cxx:728 AliFMDHistCollector.cxx:729 AliFMDHistCollector.cxx:730 AliFMDHistCollector.cxx:731 AliFMDHistCollector.cxx:732 AliFMDHistCollector.cxx:733 AliFMDHistCollector.cxx:734 AliFMDHistCollector.cxx:735 AliFMDHistCollector.cxx:736 AliFMDHistCollector.cxx:737 AliFMDHistCollector.cxx:738 AliFMDHistCollector.cxx:739 AliFMDHistCollector.cxx:740 AliFMDHistCollector.cxx:741 AliFMDHistCollector.cxx:742 AliFMDHistCollector.cxx:743 AliFMDHistCollector.cxx:744 AliFMDHistCollector.cxx:745 AliFMDHistCollector.cxx:746 AliFMDHistCollector.cxx:747 AliFMDHistCollector.cxx:748 AliFMDHistCollector.cxx:749 AliFMDHistCollector.cxx:750 AliFMDHistCollector.cxx:751 AliFMDHistCollector.cxx:752 AliFMDHistCollector.cxx:753 AliFMDHistCollector.cxx:754 AliFMDHistCollector.cxx:755 AliFMDHistCollector.cxx:756 AliFMDHistCollector.cxx:757 AliFMDHistCollector.cxx:758 AliFMDHistCollector.cxx:759 AliFMDHistCollector.cxx:760 AliFMDHistCollector.cxx:761 AliFMDHistCollector.cxx:762 AliFMDHistCollector.cxx:763 AliFMDHistCollector.cxx:764 AliFMDHistCollector.cxx:765 AliFMDHistCollector.cxx:766 AliFMDHistCollector.cxx:767 AliFMDHistCollector.cxx:768 AliFMDHistCollector.cxx:769 AliFMDHistCollector.cxx:770 AliFMDHistCollector.cxx:771 AliFMDHistCollector.cxx:772 AliFMDHistCollector.cxx:773 AliFMDHistCollector.cxx:774 AliFMDHistCollector.cxx:775 AliFMDHistCollector.cxx:776 AliFMDHistCollector.cxx:777 AliFMDHistCollector.cxx:778 AliFMDHistCollector.cxx:779 AliFMDHistCollector.cxx:780 AliFMDHistCollector.cxx:781 AliFMDHistCollector.cxx:782 AliFMDHistCollector.cxx:783 AliFMDHistCollector.cxx:784 AliFMDHistCollector.cxx:785 AliFMDHistCollector.cxx:786 AliFMDHistCollector.cxx:787 AliFMDHistCollector.cxx:788 AliFMDHistCollector.cxx:789 AliFMDHistCollector.cxx:790 AliFMDHistCollector.cxx:791 AliFMDHistCollector.cxx:792 AliFMDHistCollector.cxx:793 AliFMDHistCollector.cxx:794 AliFMDHistCollector.cxx:795 AliFMDHistCollector.cxx:796 AliFMDHistCollector.cxx:797 AliFMDHistCollector.cxx:798 AliFMDHistCollector.cxx:799 AliFMDHistCollector.cxx:800 AliFMDHistCollector.cxx:801 AliFMDHistCollector.cxx:802 AliFMDHistCollector.cxx:803 AliFMDHistCollector.cxx:804 AliFMDHistCollector.cxx:805 AliFMDHistCollector.cxx:806 AliFMDHistCollector.cxx:807 AliFMDHistCollector.cxx:808 AliFMDHistCollector.cxx:809 AliFMDHistCollector.cxx:810 AliFMDHistCollector.cxx:811 AliFMDHistCollector.cxx:812 AliFMDHistCollector.cxx:813 AliFMDHistCollector.cxx:814 AliFMDHistCollector.cxx:815 AliFMDHistCollector.cxx:816 AliFMDHistCollector.cxx:817 AliFMDHistCollector.cxx:818 AliFMDHistCollector.cxx:819 AliFMDHistCollector.cxx:820 AliFMDHistCollector.cxx:821 AliFMDHistCollector.cxx:822 AliFMDHistCollector.cxx:823 AliFMDHistCollector.cxx:824 AliFMDHistCollector.cxx:825 AliFMDHistCollector.cxx:826 AliFMDHistCollector.cxx:827 AliFMDHistCollector.cxx:828 AliFMDHistCollector.cxx:829 AliFMDHistCollector.cxx:830 AliFMDHistCollector.cxx:831 AliFMDHistCollector.cxx:832 AliFMDHistCollector.cxx:833 AliFMDHistCollector.cxx:834 AliFMDHistCollector.cxx:835 AliFMDHistCollector.cxx:836 AliFMDHistCollector.cxx:837 AliFMDHistCollector.cxx:838 AliFMDHistCollector.cxx:839 AliFMDHistCollector.cxx:840 AliFMDHistCollector.cxx:841 AliFMDHistCollector.cxx:842 AliFMDHistCollector.cxx:843 AliFMDHistCollector.cxx:844 AliFMDHistCollector.cxx:845 AliFMDHistCollector.cxx:846 AliFMDHistCollector.cxx:847 AliFMDHistCollector.cxx:848 AliFMDHistCollector.cxx:849 AliFMDHistCollector.cxx:850 AliFMDHistCollector.cxx:851 AliFMDHistCollector.cxx:852 AliFMDHistCollector.cxx:853 AliFMDHistCollector.cxx:854 AliFMDHistCollector.cxx:855 AliFMDHistCollector.cxx:856 AliFMDHistCollector.cxx:857 AliFMDHistCollector.cxx:858 AliFMDHistCollector.cxx:859 AliFMDHistCollector.cxx:860 AliFMDHistCollector.cxx:861 AliFMDHistCollector.cxx:862 AliFMDHistCollector.cxx:863 AliFMDHistCollector.cxx:864 AliFMDHistCollector.cxx:865 AliFMDHistCollector.cxx:866 AliFMDHistCollector.cxx:867 AliFMDHistCollector.cxx:868 AliFMDHistCollector.cxx:869 AliFMDHistCollector.cxx:870 AliFMDHistCollector.cxx:871 AliFMDHistCollector.cxx:872 AliFMDHistCollector.cxx:873 AliFMDHistCollector.cxx:874 AliFMDHistCollector.cxx:875 AliFMDHistCollector.cxx:876 AliFMDHistCollector.cxx:877 AliFMDHistCollector.cxx:878 AliFMDHistCollector.cxx:879 AliFMDHistCollector.cxx:880 AliFMDHistCollector.cxx:881 AliFMDHistCollector.cxx:882 AliFMDHistCollector.cxx:883 AliFMDHistCollector.cxx:884 AliFMDHistCollector.cxx:885 AliFMDHistCollector.cxx:886 AliFMDHistCollector.cxx:887 AliFMDHistCollector.cxx:888 AliFMDHistCollector.cxx:889 AliFMDHistCollector.cxx:890 AliFMDHistCollector.cxx:891 AliFMDHistCollector.cxx:892 AliFMDHistCollector.cxx:893 AliFMDHistCollector.cxx:894 AliFMDHistCollector.cxx:895 AliFMDHistCollector.cxx:896 AliFMDHistCollector.cxx:897 AliFMDHistCollector.cxx:898 AliFMDHistCollector.cxx:899 AliFMDHistCollector.cxx:900 AliFMDHistCollector.cxx:901 AliFMDHistCollector.cxx:902 AliFMDHistCollector.cxx:903 AliFMDHistCollector.cxx:904 AliFMDHistCollector.cxx:905 AliFMDHistCollector.cxx:906 AliFMDHistCollector.cxx:907 AliFMDHistCollector.cxx:908 AliFMDHistCollector.cxx:909 AliFMDHistCollector.cxx:910 AliFMDHistCollector.cxx:911 AliFMDHistCollector.cxx:912 AliFMDHistCollector.cxx:913 AliFMDHistCollector.cxx:914 AliFMDHistCollector.cxx:915 AliFMDHistCollector.cxx:916 AliFMDHistCollector.cxx:917 AliFMDHistCollector.cxx:918 AliFMDHistCollector.cxx:919 AliFMDHistCollector.cxx:920 AliFMDHistCollector.cxx:921 AliFMDHistCollector.cxx:922 AliFMDHistCollector.cxx:923 AliFMDHistCollector.cxx:924 AliFMDHistCollector.cxx:925 AliFMDHistCollector.cxx:926 AliFMDHistCollector.cxx:927 AliFMDHistCollector.cxx:928 AliFMDHistCollector.cxx:929 AliFMDHistCollector.cxx:930 AliFMDHistCollector.cxx:931 AliFMDHistCollector.cxx:932 AliFMDHistCollector.cxx:933 AliFMDHistCollector.cxx:934 AliFMDHistCollector.cxx:935 AliFMDHistCollector.cxx:936 AliFMDHistCollector.cxx:937 AliFMDHistCollector.cxx:938 AliFMDHistCollector.cxx:939 AliFMDHistCollector.cxx:940 AliFMDHistCollector.cxx:941 AliFMDHistCollector.cxx:942 AliFMDHistCollector.cxx:943 AliFMDHistCollector.cxx:944 AliFMDHistCollector.cxx:945 AliFMDHistCollector.cxx:946 AliFMDHistCollector.cxx:947 AliFMDHistCollector.cxx:948 AliFMDHistCollector.cxx:949 AliFMDHistCollector.cxx:950 AliFMDHistCollector.cxx:951 AliFMDHistCollector.cxx:952 AliFMDHistCollector.cxx:953 AliFMDHistCollector.cxx:954 AliFMDHistCollector.cxx:955 AliFMDHistCollector.cxx:956 AliFMDHistCollector.cxx:957 AliFMDHistCollector.cxx:958 AliFMDHistCollector.cxx:959 AliFMDHistCollector.cxx:960 AliFMDHistCollector.cxx:961 AliFMDHistCollector.cxx:962 AliFMDHistCollector.cxx:963 AliFMDHistCollector.cxx:964 AliFMDHistCollector.cxx:965 AliFMDHistCollector.cxx:966 AliFMDHistCollector.cxx:967 AliFMDHistCollector.cxx:968 AliFMDHistCollector.cxx:969 AliFMDHistCollector.cxx:970 AliFMDHistCollector.cxx:971 AliFMDHistCollector.cxx:972 AliFMDHistCollector.cxx:973 AliFMDHistCollector.cxx:974 AliFMDHistCollector.cxx:975 AliFMDHistCollector.cxx:976 AliFMDHistCollector.cxx:977 AliFMDHistCollector.cxx:978 AliFMDHistCollector.cxx:979 AliFMDHistCollector.cxx:980 AliFMDHistCollector.cxx:981 AliFMDHistCollector.cxx:982 AliFMDHistCollector.cxx:983 AliFMDHistCollector.cxx:984 AliFMDHistCollector.cxx:985 AliFMDHistCollector.cxx:986 AliFMDHistCollector.cxx:987 AliFMDHistCollector.cxx:988 AliFMDHistCollector.cxx:989 AliFMDHistCollector.cxx:990 AliFMDHistCollector.cxx:991 AliFMDHistCollector.cxx:992 AliFMDHistCollector.cxx:993 AliFMDHistCollector.cxx:994 AliFMDHistCollector.cxx:995 AliFMDHistCollector.cxx:996 AliFMDHistCollector.cxx:997 AliFMDHistCollector.cxx:998 AliFMDHistCollector.cxx:999 AliFMDHistCollector.cxx:1000 AliFMDHistCollector.cxx:1001 AliFMDHistCollector.cxx:1002 AliFMDHistCollector.cxx:1003 AliFMDHistCollector.cxx:1004 AliFMDHistCollector.cxx:1005 AliFMDHistCollector.cxx:1006 AliFMDHistCollector.cxx:1007 AliFMDHistCollector.cxx:1008 AliFMDHistCollector.cxx:1009 AliFMDHistCollector.cxx:1010 AliFMDHistCollector.cxx:1011 AliFMDHistCollector.cxx:1012