Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions PWGCF/EbyEFluctuations/Tasks/FactorialMomentsTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -170,19 +170,18 @@ struct FactorialMomentsTask {
const double dcaxyMaxTrackPar0 = 0.0105;
const double dcaxyMaxTrackPar1 = 0.035;
const double dcaxyMaxTrackPar2 = 1.1;
const double dcazMaxTrack = 2.0;
static const int nBins = 52;
double kMinCharge = 1e-6;
static const int nfqOrder = 6;
int countSamples = 0;
int testc1 = 0, testc2 = 0, testc3 = 0;
std::array<int, nBins> binningM;
std::array<int, nBins> binningM{};
std::array<int, 5> countTracks{0, 0, 0, 0, 0};
std::array<std::array<std::array<double, nBins>, 5>, 6> fqEvent;
std::array<std::array<std::array<double, nBins>, 5>, 6> fqEventSampled;
std::array<std::array<double, nBins>, 5> binConEvent;
std::array<std::array<std::array<double, nBins>, 5>, 6> binConEventSampled;
std::array<std::array<std::array<double, nBins>, 5>, 6> errorFq = {{{{{0, 0, 0, 0, 0}}}}};
std::array<std::array<std::array<double, nBins>, 5>, 6> fqEvent{};
std::array<std::array<std::array<double, nBins>, 5>, 6> fqEventSampled{};
std::array<std::array<double, nBins>, 5> binConEvent{};
std::array<std::array<std::array<double, nBins>, 5>, 6> binConEventSampled{};
std::array<std::array<std::array<int, nBins>, 5>, nfqOrder> nSubsamples{};
std::vector<std::shared_ptr<TH2>> mHistArrReset;
std::vector<std::shared_ptr<TH1>> mHistArrQA;
std::vector<std::shared_ptr<TH3>> mHistArrEff;
Expand All @@ -191,9 +190,7 @@ struct FactorialMomentsTask {
std::vector<std::shared_ptr<TH1>> mFqBinFinalSampled;
std::vector<std::shared_ptr<TH1>> mBinConFinalSampled;
std::vector<std::shared_ptr<TH1>> mFqError;
// max number of bins restricted to 5
static constexpr std::array<std::string_view, 5>
mbinNames{"bin1/", "bin2/", "bin3/", "bin4/", "bin5/"};

void init(o2::framework::InitContext&)
{
// NOTE: check to make number of pt and the vector consistent
Expand Down Expand Up @@ -307,23 +304,28 @@ struct FactorialMomentsTask {
}
binConEvent[iPt][iM] = binContent / (std::pow(binningM[iM], 2));
for (int iq = 0; iq < nfqOrder; ++iq) {
if (sumfqBin[iq] > 0) {
fqEvent[iq][iPt][iM] = sumfqBin[iq] / (std::pow(binningM[iM], 2));
fqEventSampled[iq][iPt][iM] += fqEvent[iq][iPt][iM];
}
// Always accumulate raw fq numerator and binCon unconditionally so
// both sums run over exactly the same set of events.
fqEvent[iq][iPt][iM] = sumfqBin[iq] / (std::pow(binningM[iM], 2));
fqEventSampled[iq][iPt][iM] += fqEvent[iq][iPt][iM];
binConEventSampled[iq][iPt][iM] += binConEvent[iPt][iM];
mFqBinFinal[iPt * 6 + iq]->Fill(iM, fqEvent[iq][iPt][iM]);
mBinConFinal[iPt * 6 + iq]->Fill(iM, binConEvent[iPt][iM]);
if (compSample) {
mBinConFinalSampled[iPt * 6 + iq]->Fill(iM, binConEventSampled[iq][iPt][iM] / samplesize);
const double avM = binConEventSampled[iq][iPt][iM] / samplesize;
mBinConFinalSampled[iPt * 6 + iq]->Fill(iM, avM);
const double den = std::pow(avM, iq + 2);
const double fqM = ((fqEventSampled[iq][iPt][iM]) / samplesize);

double tmp = (fqEventSampled[iq][iPt][iM] / (samplesize)) / (std::pow(binConEventSampled[iq][iPt][iM] / (samplesize), (iq + 2)));
const double tmp = (den > 0.) ? fqM / den : 0.;
mFqBinFinalSampled[iPt * 6 + iq]->Fill(iM, tmp);
tmpFqErr[iq][iPt][iM]->Fill(tmp);
errorFq[iq][iPt][iM] += std::pow(fqEventSampled[iq][iPt][iM] / (samplesize), 2);
mFqError[iPt * 6 + iq]->SetBinContent(iM + 1, 0);
mFqError[iPt * 6 + iq]->Fill(iM, tmpFqErr[iq][iPt][iM]->GetStdDev());

tmpFqErr[iq][iPt][iM]->Fill(tmp);
++nSubsamples[iq][iPt][iM];
const double stdErr = (nSubsamples[iq][iPt][iM] > 1)
? tmpFqErr[iq][iPt][iM]->GetStdDev() / std::sqrt(static_cast<double>(nSubsamples[iq][iPt][iM]))
: 0.;
mFqError[iPt * 6 + iq]->SetBinContent(iM + 1, stdErr);
fqEventSampled[iq][iPt][iM] = 0;
binConEventSampled[iq][iPt][iM] = 0;
}
Expand Down
Loading