Skip to content
Merged
Show file tree
Hide file tree
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
11 changes: 9 additions & 2 deletions PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@

#include "Common/DataModel/Multiplicity.h"

#include "Framework/ASoA.h"
#include "Framework/AnalysisDataModel.h"
#include <Framework/ASoA.h>
#include <Framework/AnalysisDataModel.h>

#include <cstdint>

namespace o2::aod
{
Expand All @@ -39,7 +41,7 @@

namespace lrcorrmctrktable
{
DECLARE_SOA_INDEX_COLUMN(LRMcCollision, lrMcCollision);

Check failure on line 44 in PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(Pt, pt, float);
DECLARE_SOA_COLUMN(Eta, eta, float);
DECLARE_SOA_COLUMN(Phi, phi, float);
Expand Down Expand Up @@ -82,7 +84,7 @@

namespace lrcorrcolltable
{
DECLARE_SOA_INDEX_COLUMN(LRMcCollision, lrMcCollision);

Check failure on line 87 in PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, float);
DECLARE_SOA_COLUMN(Centrality, centrality, float);
DECLARE_SOA_COLUMN(TotalFT0AmplitudeA, totalFT0AmplitudeA, float); //! sum of amplitudes on A side of FT0
Expand Down Expand Up @@ -136,13 +138,14 @@

namespace lrcorrtrktable
{
DECLARE_SOA_INDEX_COLUMN(LRCollision, lrCollision);

Check failure on line 141 in PWGCF/TwoParticleCorrelations/DataModel/LongRangeDerived.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_INDEX_COLUMN(UpcLRCollision, upcLRCollision);
DECLARE_SOA_COLUMN(Pt, pt, float);
DECLARE_SOA_COLUMN(Eta, eta, float);
DECLARE_SOA_COLUMN(Phi, phi, float);
DECLARE_SOA_COLUMN(ChannelID, channelID, int);
DECLARE_SOA_COLUMN(Amplitude, amplitude, float);
DECLARE_SOA_COLUMN(GainAmplitude, gainAmplitude, float);
DECLARE_SOA_COLUMN(InvMass, invMass, float);
DECLARE_SOA_COLUMN(IdPos, idPos, int64_t);
DECLARE_SOA_COLUMN(IdNeg, idNeg, int64_t);
Expand Down Expand Up @@ -176,6 +179,7 @@
lrcorrtrktable::LRCollisionId,
lrcorrtrktable::ChannelID,
lrcorrtrktable::Amplitude,
lrcorrtrktable::GainAmplitude,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi);
using LRFt0aTrack = LRFt0aTracks::iterator;
Expand All @@ -185,6 +189,7 @@
lrcorrtrktable::LRCollisionId,
lrcorrtrktable::ChannelID,
lrcorrtrktable::Amplitude,
lrcorrtrktable::GainAmplitude,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi);
using LRFt0cTrack = LRFt0cTracks::iterator;
Expand Down Expand Up @@ -231,6 +236,7 @@
lrcorrtrktable::UpcLRCollisionId,
lrcorrtrktable::ChannelID,
lrcorrtrktable::Amplitude,
lrcorrtrktable::GainAmplitude,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi);
using UpcLRFt0aTrack = UpcLRFt0aTracks::iterator;
Expand All @@ -240,6 +246,7 @@
lrcorrtrktable::UpcLRCollisionId,
lrcorrtrktable::ChannelID,
lrcorrtrktable::Amplitude,
lrcorrtrktable::GainAmplitude,
lrcorrtrktable::Eta,
lrcorrtrktable::Phi);
using UpcLRFt0cTrack = UpcLRFt0cTracks::iterator;
Expand Down
60 changes: 52 additions & 8 deletions PWGCF/TwoParticleCorrelations/TableProducer/longrangeMaker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@

auto static constexpr CintZero = 0;
auto static constexpr KminFt0cCell = 96;
auto static constexpr TotFt0Channels = 208;
AxisSpec axisEvent{15, 0.5, 15.5, "#Event", "EventAxis"};
auto static constexpr KminCharge = 3.0f;
static constexpr std::string_view species[] = {"Pi", "Ka", "Pr", "K0s", "L0s"};
Expand Down Expand Up @@ -141,6 +142,8 @@
Configurable<float> cfigFt0aEtaMin{"cfigFt0aEtaMin", 3.5f, "Minimum FT0A eta cut"};
Configurable<float> cfigFt0cEtaMax{"cfigFt0cEtaMax", -2.1f, "Maximum FT0C eta cut"};
Configurable<float> cfigFt0cEtaMin{"cfigFt0cEtaMin", -3.3f, "Minimum FT0C eta cut"};
Configurable<bool> useGainCallib{"useGainCallib", true, "use gain calibration"};
Configurable<std::string> ConfGainPath{"ConfGainPath", "Analysis/EventPlane/GainEq/FT0", "Path to gain calibration"};

Check failure on line 146 in PWGCF/TwoParticleCorrelations/TableProducer/longrangeMaker.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/configurable]

Use lowerCamelCase for names of configurables and use the same name for the struct member as for the JSON string. (Declare the type and names on the same line.)
} cfgfittrksel;

struct : ConfigurableGroup {
Expand Down Expand Up @@ -303,6 +306,9 @@
using MftTrkTable = aod::MFTTracks;
using BCs = soa::Join<aod::BCsWithTimestamps, aod::BcSels, aod::Run3MatchedToBCSparse>;

int currentRunNumber = -999;
int lastRunNumber = -999;
std::vector<float> ft0gainvalues{};
void processData(CollTable::iterator const& col, TrksTable const& tracks,
aod::FT0s const&, MftTrkTable const& mfttracks,
soa::SmallGroups<aod::BestCollisionsFwd3d> const& besttracks,
Expand All @@ -311,11 +317,20 @@
if (!isEventSelected(col)) {
return;
}

auto multiplicity = countNTracks(tracks);
auto centrality = selColCent(col);
auto bc = col.bc_as<aod::BCsWithTimestamps>();

currentRunNumber = bc.runNumber();
if (cfgfittrksel.useGainCallib && (currentRunNumber != lastRunNumber)) {
const auto ft0GainObj = ccdb->getForTimeStamp<std::vector<float>>(cfgfittrksel.ConfGainPath.value, bc.timestamp());
if (!ft0GainObj) {
for (auto i{0u}; i < TotFt0Channels; i++) {
ft0gainvalues.push_back(1.);
}
} else {
ft0gainvalues = *(ft0GainObj);
}
}
lrcollision(bc.runNumber(), col.posZ(), multiplicity, centrality, bc.timestamp());

// track loop
Expand All @@ -339,14 +354,22 @@
float ampl = ft0.amplitudeA()[iCh];
auto phi = getPhiFT0(chanelid, 0);
auto eta = getEtaFT0(chanelid, 0);
lrft0atracks(lrcollision.lastIndex(), chanelid, ampl, eta, phi);
auto gainampl = 1.0;
if (cfgfittrksel.useGainCallib) {
gainampl = ampl / ft0gainvalues[chanelid];
}
lrft0atracks(lrcollision.lastIndex(), chanelid, ampl, gainampl, eta, phi);
}
for (std::size_t iCh = 0; iCh < ft0.channelC().size(); iCh++) {
auto chanelid = ft0.channelC()[iCh] + KminFt0cCell;
float ampl = ft0.amplitudeC()[iCh];
auto phi = getPhiFT0(chanelid, 1);
auto eta = getEtaFT0(chanelid, 1);
lrft0ctracks(lrcollision.lastIndex(), chanelid, ampl, eta, phi);
auto gainampl = 1.0;
if (cfgfittrksel.useGainCallib) {
gainampl = ampl / ft0gainvalues[chanelid];
}
lrft0ctracks(lrcollision.lastIndex(), chanelid, ampl, gainampl, eta, phi);
}
}

Expand Down Expand Up @@ -404,6 +427,7 @@
v0.pt(), v0.eta(), v0.phi(), massV0, aod::lrcorrtrktable::kSpALambda);
} // end of Lambda and Anti-Lambda processing
}
lastRunNumber = currentRunNumber;
} // process function

void processUpc(CollTable::iterator const& col, BCs const& bcs,
Expand Down Expand Up @@ -468,14 +492,14 @@
float ampl = ft0.amplitudeA()[iCh];
auto phi = getPhiFT0(chanelid, 0);
auto eta = getEtaFT0(chanelid, 0);
upclrft0atracks(upclrcollision.lastIndex(), chanelid, ampl, eta, phi);
upclrft0atracks(upclrcollision.lastIndex(), chanelid, ampl, ampl, eta, phi);
}
for (std::size_t iCh = 0; iCh < ft0.channelC().size(); iCh++) {
auto chanelid = ft0.channelC()[iCh] + KminFt0cCell;
float ampl = ft0.amplitudeC()[iCh];
auto phi = getPhiFT0(chanelid, 1);
auto eta = getEtaFT0(chanelid, 1);
upclrft0ctracks(upclrcollision.lastIndex(), chanelid, ampl, eta, phi);
upclrft0ctracks(upclrcollision.lastIndex(), chanelid, ampl, ampl, eta, phi);
}
}

Expand Down Expand Up @@ -567,6 +591,17 @@
auto multiplicity = countNTracks(recTracksPart);
auto centrality = selColCent(RecCol);
auto bc = RecCol.bc_as<aod::BCsWithTimestamps>();
currentRunNumber = bc.runNumber();
if (cfgfittrksel.useGainCallib && (currentRunNumber != lastRunNumber)) {
const auto ft0GainObj = ccdb->getForTimeStamp<std::vector<float>>(cfgfittrksel.ConfGainPath.value, bc.timestamp());
if (!ft0GainObj) {
for (auto i{0u}; i < TotFt0Channels; i++) {
ft0gainvalues.push_back(1.);
}
} else {
ft0gainvalues = *(ft0GainObj);
}
}
lrcollision(bc.runNumber(), RecCol.posZ(), multiplicity, centrality, bc.timestamp());
lrcollisionMcLabel(RecCol.mcCollisionId());

Expand Down Expand Up @@ -596,14 +631,22 @@
float ampl = ft0.amplitudeA()[iCh];
auto phi = getPhiFT0(chanelid, 0);
auto eta = getEtaFT0(chanelid, 0);
lrft0atracks(lrcollision.lastIndex(), chanelid, ampl, eta, phi);
auto gainampl = 1.0;
if (cfgfittrksel.useGainCallib) {
gainampl = ampl / ft0gainvalues[chanelid];
}
lrft0atracks(lrcollision.lastIndex(), chanelid, ampl, gainampl, eta, phi);
}
for (std::size_t iCh = 0; iCh < ft0.channelC().size(); iCh++) {
auto chanelid = ft0.channelC()[iCh] + KminFt0cCell;
float ampl = ft0.amplitudeC()[iCh];
auto phi = getPhiFT0(chanelid, 1);
auto eta = getEtaFT0(chanelid, 1);
lrft0ctracks(lrcollision.lastIndex(), chanelid, ampl, eta, phi);
auto gainampl = 1.0;
if (cfgfittrksel.useGainCallib) {
gainampl = ampl / ft0gainvalues[chanelid];
}
lrft0ctracks(lrcollision.lastIndex(), chanelid, ampl, gainampl, eta, phi);
}
}

Expand Down Expand Up @@ -653,6 +696,7 @@
if (cfgmfttrksel.cfigMftEtaMin < particle.eta() && particle.eta() < cfgmfttrksel.cfigMftEtaMax)
lrmftmctracks(lrmccollision.lastIndex(), particle.pt(), particle.eta(), particle.phi());
}
lastRunNumber = currentRunNumber;
}
}

Expand Down
17 changes: 13 additions & 4 deletions PWGCF/TwoParticleCorrelations/Tasks/longrangecorrDerived.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ struct LongrangecorrDerived {
ConfigurableAxis axisInvMass{"axisInvMass", {VARIABLE_WIDTH, 1.7, 1.75, 1.8, 1.85, 1.9, 1.95, 2.0}, "invariant mass axis"};
ConfigurableAxis axisInvMassQA{"axisInvMassQA", {20, 0.45, 0.55}, "invariant mass axis for QA"};
ConfigurableAxis axisAmplitude{"axisAmplitude", {5000, 0, 10000}, "FT0 amplitude"};
ConfigurableAxis axisChannel{"axisChannel", {208, 0, 208}, "FT0 channel"};
ConfigurableAxis axisMultME{"axisMultME", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 1000}, "Mixing bins - multiplicity"};
ConfigurableAxis axisVtxZME{"axisVtxZME", {VARIABLE_WIDTH, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10}, "Mixing bins - z-vertex"};

Expand Down Expand Up @@ -170,6 +171,9 @@ struct LongrangecorrDerived {
histos.add("Assoc_etavsphi", "Assoc_etavsphi", kTH2D, {axisPhi, axisEtaAssoc});
histos.add("Assoc_pt", "Assoc_pt", kTH1D, {axisPtAssoc});
histos.add("Assoc_amp", "Assoc_amp", kTH1D, {axisAmplitude});
histos.add("Assoc_amp_gaincorrected", "Assoc_amp_gaincorrected", kTH1D, {axisAmplitude});
histos.add("Channel_vs_Assoc_amp", "Channel_vs_Assoc_amp", kTH2D, {axisChannel, axisAmplitude});
histos.add("Channel_vs_Assoc_amp_gaincorrected", "Channel_vs_Assoc_amp_gaincorrected", kTH2D, {axisChannel, axisAmplitude});

histos.add("deltaEta_deltaPhi_same", "", kTH2D, {axisDeltaPhi, axisDeltaEta});
histos.add("deltaEta_deltaPhi_mixed", "", kTH2D, {axisDeltaPhi, axisDeltaEta});
Expand Down Expand Up @@ -205,6 +209,9 @@ struct LongrangecorrDerived {
histos.fill(HIST("Assoc_phi"), track.phi());
if constexpr (std::experimental::is_detected<HasFt0, TTrack>::value) {
histos.fill(HIST("Assoc_amp"), track.amplitude());
histos.fill(HIST("Channel_vs_Assoc_amp"), track.channelID(), track.amplitude());
histos.fill(HIST("Assoc_amp_gaincorrected"), track.gainAmplitude());
histos.fill(HIST("Channel_vs_Assoc_amp_gaincorrected"), track.channelID(), track.gainAmplitude());
} else {
histos.fill(HIST("Assoc_pt"), track.pt());
}
Expand Down Expand Up @@ -260,23 +267,25 @@ struct LongrangecorrDerived {
histos.fill(HIST("Trig_hist"), vz, multiplicity, triggerTrack.pt(), 1.0, eventWeight);
}
}
auto ampl = 1.0f;
for (auto const& assoTrack : assocs) {
if constexpr (std::experimental::is_detected<HasFt0, typename TAssocs::iterator>::value) {
if (isApplyAmpCut && (assoTrack.amplitude() < cfgLowAmpCut))
continue;
ampl *= assoTrack.gainAmplitude();
}
float deltaPhi = RecoDecay::constrainAngle(triggerTrack.phi() - assoTrack.phi(), -PIHalf);
float deltaEta = triggerTrack.eta() - assoTrack.eta();
if (!mixing) {
fillAssocTrackQA(assoTrack);
histos.fill(HIST("deltaEta_deltaPhi_same"), deltaPhi, deltaEta);
histos.fill(HIST("deltaEta_deltaPhi_same"), deltaPhi, deltaEta, eventWeight * ampl);
} else {
histos.fill(HIST("deltaEta_deltaPhi_mixed"), deltaPhi, deltaEta);
histos.fill(HIST("deltaEta_deltaPhi_mixed"), deltaPhi, deltaEta, eventWeight * ampl);
}
if constexpr (std::experimental::is_detected<HasInvMass, typename TTriggers::iterator>::value) {
target->getPairHist()->Fill(step, vz, multiplicity, triggerTrack.pt(), triggerTrack.pt(), deltaPhi, deltaEta, triggerTrack.invMass(), eventWeight);
target->getPairHist()->Fill(step, vz, multiplicity, triggerTrack.pt(), triggerTrack.pt(), deltaPhi, deltaEta, triggerTrack.invMass(), eventWeight * ampl);
} else {
target->getPairHist()->Fill(step, vz, multiplicity, triggerTrack.pt(), triggerTrack.pt(), deltaPhi, deltaEta, 1.0, eventWeight);
target->getPairHist()->Fill(step, vz, multiplicity, triggerTrack.pt(), triggerTrack.pt(), deltaPhi, deltaEta, 1.0, eventWeight * ampl);
}
} // associated tracks
} // trigger tracks
Expand Down
Loading