diff --git a/PWGCF/Flow/Tasks/flowZdcTask.cxx b/PWGCF/Flow/Tasks/flowZdcTask.cxx index d1bfeb049b4..5bfa4c09495 100644 --- a/PWGCF/Flow/Tasks/flowZdcTask.cxx +++ b/PWGCF/Flow/Tasks/flowZdcTask.cxx @@ -21,20 +21,15 @@ #include "Common/DataModel/TrackSelectionTables.h" #include "CommonConstants/MathConstants.h" -#include "Framework/ASoAHelpers.h" #include "Framework/AnalysisTask.h" #include "Framework/HistogramRegistry.h" #include "Framework/RunningWorkflowInfo.h" #include "Framework/runDataProcessing.h" #include -#include "TList.h" -#include #include #include #include -#include -#include #include #include @@ -54,12 +49,12 @@ struct FlowZdcTask { O2_DEFINE_CONFIGURABLE(cfgCutVertex, float, 10.0f, "Accepted z-vertex range") Configurable eventSelection{"eventSelection", 1, "event selection"}; - Configurable maxZp{"maxZp", 125.5, "Max ZP signal"}; Configurable maxZem{"maxZem", 3099.5, "Max ZEM signal"}; // for ZDC info and analysis Configurable nBinsAmp{"nBinsAmp", 1025, "nbinsAmp"}; Configurable nBinsADC{"nBinsADC", 1000, "nbinsADC"}; Configurable maxZn{"maxZn", 125.5, "Max ZN signal"}; + Configurable maxZp{"maxZp", 125.5, "Max ZP signal"}; // configs for process QA Configurable nBinsNch{"nBinsNch", 2501, "N bins Nch (|eta|<0.8)"}; Configurable nBinsAmpFT0{"nBinsAmpFT0", 100, "N bins FT0 amp"}; @@ -71,14 +66,20 @@ struct FlowZdcTask { Configurable minNch{"minNch", 0, "Min Nch (|eta|<0.8)"}; Configurable maxNch{"maxNch", 2500, "Max Nch (|eta|<0.8)"}; Configurable nBinsTDC{"nBinsTDC", 150, "nbinsTDC"}; - Configurable minTdcZn{"minTdcZn", -4.0, "minimum TDC for ZN"}; - Configurable maxTdcZn{"maxTdcZn", -4.0, "maximum TDC for ZN"}; + Configurable minTdcZn{"minTdcZn", 4.0, "minimum TDC for ZN"}; + Configurable maxTdcZn{"maxTdcZn", 4.0, "maximum TDC for ZN"}; Configurable minTdcZp{"minTdcZp", -4.0, "minimum TDC for ZP"}; Configurable maxTdcZp{"maxTdcZp", -4.0, "maximum TDC for ZP"}; - Configurable cfgCollisionEnergy{"cfgCollisionEnergy", 2.68, "cfgCollisionEnergy"}; Configurable applyZdcCorrection{"applyZdcCorrection", false, "Apply ZP correction?"}; Configurable zpaCoeff{"zpaCoeff", 0.021f, "Coefficient a in zpa correction"}; Configurable zpcCoeff{"zpcCoeff", 0.021f, "Coefficient b in zpc correction"}; + Configurable posZcut{"posZcut", +10.0, "z-vertex position cut"}; + Configurable posYcut{"posYcut", +10.0, "y-vertex position cut"}; + Configurable posXcut{"posXcut", +10.0, "x-vertex position cut"}; + Configurable minEta{"minEta", -0.8, "minimum eta"}; + Configurable maxEta{"maxEta", +0.8, "maximum eta"}; + Configurable minT0CcentCut{"minT0CcentCut", 0.0, "Min T0C Cent. cut"}; + Configurable maxT0CcentCut{"maxT0CcentCut", 90.0, "Max T0C Cent. cut"}; // event selection Configurable isNoCollInTimeRangeStrict{"isNoCollInTimeRangeStrict", true, "isNoCollInTimeRangeStrict?"}; Configurable isNoCollInTimeRangeStandard{"isNoCollInTimeRangeStandard", false, "isNoCollInTimeRangeStandard?"}; @@ -102,17 +103,8 @@ struct FlowZdcTask { Configurable maxPtSpectra{"maxPtSpectra", 50., "maximum pt of the tracks"}; Configurable zemCut{"zemCut", 100., "ZEM cut"}; // axis configs - ConfigurableAxis axisZN{"axisZN", {5000, 0, 500}, "axisZN"}; - ConfigurableAxis axisZP{"axisZP", {5000, 0, 500}, "axisZP"}; ConfigurableAxis axisCent{"axisCent", {10, 0, 100}, "axisCent"}; ConfigurableAxis binsPt{"binsPt", {VARIABLE_WIDTH, 0.0, 0.1, 0.12}, "pT binning"}; - Configurable posZcut{"posZcut", +10.0, "z-vertex position cut"}; - Configurable posYcut{"posYcut", +10.0, "y-vertex position cut"}; - Configurable posXcut{"posXcut", +10.0, "x-vertex position cut"}; - Configurable minEta{"minEta", -0.8, "minimum eta"}; - Configurable maxEta{"maxEta", +0.8, "maximum eta"}; - Configurable minT0CcentCut{"minT0CcentCut", 0.0, "Min T0C Cent. cut"}; - Configurable maxT0CcentCut{"maxT0CcentCut", 90.0, "Max T0C Cent. cut"}; using ColEvents = soa::Join; Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex; @@ -237,10 +229,10 @@ struct FlowZdcTask { histos.add("ZPAVsZPC", ";ZPC;ZPA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZp}}}); histos.add("ZNAVsZPA", ";ZPA;ZNA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); histos.add("ZNCVsZPC", ";ZPC;ZNC;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); - histos.add("SectorZNAVsZNC", ";Sector ZNC;Sector ZNA", kTH2F, {{{nBinsZDC, -0.5, maxZn}, {nBinsZDC, -0.5, maxZn}}}); - histos.add("SectorZPAVsZPC", ";Sector ZPC;Sector ZPA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZp}}}); - histos.add("SectorZNAVsZPA", ";Sector ZPA;Sector ZNA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); - histos.add("SectorZNCVsZPC", ";Sector ZPC;Sector ZNC;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); + histos.add("CommonZNAVsZNC", ";Common ZNC;Common ZNA", kTH2F, {{{nBinsZDC, -0.5, maxZn}, {nBinsZDC, -0.5, maxZn}}}); + histos.add("CommonZPAVsZPC", ";Common ZPC;Common ZPA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZp}}}); + histos.add("CommonZNAVsZPA", ";Common ZPA;Common ZNA;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); + histos.add("CommonZNCVsZPC", ";Common ZPC;Common ZNC;", kTH2F, {{{nBinsZDC, -0.5, maxZp}, {nBinsZDC, -0.5, maxZn}}}); histos.add("ZNASector", ";ZNA;Entries;", kTH1F, {{nBinsZDC, -0.5, maxZn}}); histos.add("ZPASector", ";ZPA;Entries;", kTH1F, {{nBinsZDC, -0.5, maxZp}}); histos.add("ZNCSector", ";ZNC;Entries;", kTH1F, {{nBinsZDC, -0.5, maxZn}}); @@ -276,14 +268,6 @@ struct FlowZdcTask { histos.add("ZNAVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}}); histos.add("ZNVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA+ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}}); histos.add("ZNDifVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA-ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {100, -50., 50.}}}); - histos.add("ZPAvsCent", ";centFT0C;ZPA", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}}); - histos.add("ZPCvsCent", ";centFT0C;ZPC", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}}); - histos.add("hZPASectorvsGlbTrack", ";Global Tracks (ITS + TPC);ZPA Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZp}}}); - histos.add("hZPCSectorvsGlbTrack", ";Global Tracks (ITS + TPC);ZPC Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZp}}}); - histos.add("hZNASectorvsGlbTrack", ";Global Tracks (ITS + TPC);ZNA Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}}); - histos.add("hZNCSectorvsGlbTrack", ";Global Tracks (ITS + TPC);ZNC Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}}); - histos.add("hZPSectorvsGlbTrack", ";Global Tracks (ITS + TPC);(ZPA + ZPC) Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZp}}}); - histos.add("hZNSectorvsGlbTrack", ";Global Tracks (ITS + TPC);(ZNA + ZNC) Sector Energy", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}}); } if (doprocessZdc) { histos.add("ampZna", ";ZNA Amplitude;Entries;", kTH1F, {{nBinsZDC, -0.5, maxZn}}); @@ -417,7 +401,6 @@ struct FlowZdcTask { void processQA(ColEvSels::iterator const& collision, BCsRun3 const& /*bcs*/, aod::Zdcs const& /*zdcsData*/, aod::FV0As const& /*fv0as*/, aod::FT0s const& /*ft0s*/, TheFilteredTracks const& tracks) { const auto& foundBC = collision.foundBC_as(); - const auto cent = collision.centFT0C(); if (!isEventSelected(collision)) { return; } @@ -447,18 +430,18 @@ struct FlowZdcTask { float tZPA{zdc.timeZPA()}; float tZPC{zdc.timeZPC()}; const double normT0M{(aT0A + aT0C) / 100.}; - float znA = zdc.amplitudeZNA() / cfgCollisionEnergy; - float znC = zdc.amplitudeZNC() / cfgCollisionEnergy; - float zpA = zdc.amplitudeZPA() / cfgCollisionEnergy; - float zpC = zdc.amplitudeZPC() / cfgCollisionEnergy; - float commonSumZnc = zdc.energyCommonZNC() / cfgCollisionEnergy; - float commonSumZna = zdc.energyCommonZNA() / cfgCollisionEnergy; - float commonSumZpc = zdc.energyCommonZPC() / cfgCollisionEnergy; - float commonSumZpa = zdc.energyCommonZPA() / cfgCollisionEnergy; - float sumZNC = ((zdc.energySectorZNC())[0] + (zdc.energySectorZNC())[1] + (zdc.energySectorZNC())[2] + (zdc.energySectorZNC())[3]) / cfgCollisionEnergy; - float sumZNA = ((zdc.energySectorZNA())[0] + (zdc.energySectorZNA())[1] + (zdc.energySectorZNA())[2] + (zdc.energySectorZNA())[3]) / cfgCollisionEnergy; - float sumZPC = ((zdc.energySectorZPC())[0] + (zdc.energySectorZPC())[1] + (zdc.energySectorZPC())[2] + (zdc.energySectorZPC())[3]) / cfgCollisionEnergy; - float sumZPA = ((zdc.energySectorZPA())[0] + (zdc.energySectorZPA())[1] + (zdc.energySectorZPA())[2] + (zdc.energySectorZPA())[3]) / cfgCollisionEnergy; + float znA = zdc.amplitudeZNA(); + float znC = zdc.amplitudeZNC(); + float zpA = zdc.amplitudeZPA(); + float zpC = zdc.amplitudeZPC(); + float commonSumZnc = zdc.energyCommonZNC(); + float commonSumZna = zdc.energyCommonZNA(); + float commonSumZpc = zdc.energyCommonZPC(); + float commonSumZpa = zdc.energyCommonZPA(); + float sumZNC = ((zdc.energySectorZNC())[0] + (zdc.energySectorZNC())[1] + (zdc.energySectorZNC())[2] + (zdc.energySectorZNC())[3]); + float sumZNA = ((zdc.energySectorZNA())[0] + (zdc.energySectorZNA())[1] + (zdc.energySectorZNA())[2] + (zdc.energySectorZNA())[3]); + float sumZPC = ((zdc.energySectorZPC())[0] + (zdc.energySectorZPC())[1] + (zdc.energySectorZPC())[2] + (zdc.energySectorZPC())[3]); + float sumZPA = ((zdc.energySectorZPA())[0] + (zdc.energySectorZPA())[1] + (zdc.energySectorZPA())[2] + (zdc.energySectorZPA())[3]); if (applyZdcCorrection) { const float a = zpaCoeff; const float b = zpcCoeff; @@ -475,8 +458,6 @@ struct FlowZdcTask { float tZEM1{zdc.timeZEM1()}; float tZEM2{zdc.timeZEM2()}; float sumZNs{znA + znC}; - float sumSectZN = (sumZNC + sumZNA); - float sumSectZP = (sumZPC + sumZPA); if (sumZEMs > zemCut) { if (isTDCcut) { @@ -516,7 +497,7 @@ struct FlowZdcTask { histos.fill(HIST("ZNVsZEM"), sumZEMs, sumZNs); if (((tZNA >= minTdcZn) && (tZNA <= maxTdcZn)) && ((tZNC >= minTdcZn) && (tZNC <= maxTdcZn))) { histos.fill(HIST("ZNAVsZNC"), znC, znA); - histos.fill(HIST("SectorZNAVsZNC"), sumZNC, sumZNA); + histos.fill(HIST("CommonZNAVsZNC"), commonSumZnc, commonSumZna); histos.fill(HIST("ZN"), znA + znC); histos.fill(HIST("ZNVsFT0C"), aT0C / 100., znA + znC); histos.fill(HIST("ZNVsFT0M"), (aT0A + aT0C) / 100., znA + znC); @@ -525,7 +506,7 @@ struct FlowZdcTask { } if (((tZPA >= minTdcZp) && (tZPA <= maxTdcZp)) && ((tZPC >= minTdcZp) && (tZPC <= maxTdcZp))) { histos.fill(HIST("ZPAVsZPC"), zpC, zpA); - histos.fill(HIST("SectorZPAVsZPC"), sumZPC, sumZPA); + histos.fill(HIST("CommonZPAVsZPC"), commonSumZpc, commonSumZpa); histos.fill(HIST("ZPVsFT0A"), aT0A / 100., zpA + zpC); histos.fill(HIST("ZPVsFT0C"), aT0C / 100., zpA + zpC); histos.fill(HIST("ZPVsFT0M"), (aT0A + aT0C) / 100., zpA + zpC); @@ -534,11 +515,11 @@ struct FlowZdcTask { } if (((tZNA >= minTdcZn) && (tZNA <= maxTdcZn)) && ((tZPA >= minTdcZp) && (tZPA <= maxTdcZp))) { histos.fill(HIST("ZNAVsZPA"), zpA, znA); - histos.fill(HIST("SectorZNAVsZPA"), sumZPA, sumZNA); + histos.fill(HIST("CommonZNAVsZPA"), commonSumZpa, commonSumZna); } if (((tZNC >= minTdcZn) && (tZNC <= maxTdcZn)) && ((tZPC >= minTdcZp) && (tZPC <= maxTdcZp))) { histos.fill(HIST("ZNCVsZPC"), zpC, znC); - histos.fill(HIST("SectorZNCVsZPC"), sumZPC, sumZNC); + histos.fill(HIST("CommonZNCVsZPC"), commonSumZpc, commonSumZnc); } } else { histos.fill(HIST("ZNA"), znA); @@ -550,10 +531,10 @@ struct FlowZdcTask { histos.fill(HIST("ZNAVsZPA"), zpA, znA); histos.fill(HIST("ZNCVsZPC"), zpC, znC); histos.fill(HIST("ZPAVsZPC"), zpC, zpA); - histos.fill(HIST("SectorZPAVsZPC"), sumZPC, sumZPA); - histos.fill(HIST("SectorZNAVsZNC"), sumZNC, sumZNA); - histos.fill(HIST("SectorZNAVsZPA"), sumZPA, sumZNA); - histos.fill(HIST("SectorZNCVsZPC"), sumZPC, sumZNC); + histos.fill(HIST("CommonZPAVsZPC"), commonSumZpc, commonSumZpa); + histos.fill(HIST("CommonZNAVsZNC"), commonSumZnc, commonSumZna); + histos.fill(HIST("CommonZNAVsZPA"), commonSumZpa, commonSumZna); + histos.fill(HIST("CommonZNCVsZPC"), commonSumZpc, commonSumZnc); histos.fill(HIST("ZNACommon"), commonSumZna); histos.fill(HIST("ZNASector"), sumZNA); histos.fill(HIST("ZNCCommon"), commonSumZnc); @@ -666,18 +647,6 @@ struct FlowZdcTask { histos.fill(HIST("GlbTracks"), glbTracks); if (sumZEMs > zemCut) { - histos.fill(HIST("ZPAvsCent"), cent, zpA); - histos.fill(HIST("ZPCvsCent"), cent, zpC); - if (std::isfinite(zpA) && !std::isnan(zpA) && cent >= minT0CcentCut && cent < maxT0CcentCut && glbTracks >= minNch && glbTracks < maxNch) { - histos.fill(HIST("hZPASectorvsGlbTrack"), glbTracks, sumZPA); - } - if (std::isfinite(zpC) && !std::isnan(zpC) && cent >= minT0CcentCut && cent < maxT0CcentCut && glbTracks >= minNch && glbTracks < maxNch) { - histos.fill(HIST("hZPCSectorvsGlbTrack"), glbTracks, sumZPC); - } - histos.fill(HIST("hZNASectorvsGlbTrack"), glbTracks, sumZNA); - histos.fill(HIST("hZNCSectorvsGlbTrack"), glbTracks, sumZNC); - histos.fill(HIST("hZPSectorvsGlbTrack"), glbTracks, sumSectZP); - histos.fill(HIST("hZNSectorvsGlbTrack"), glbTracks, sumSectZN); // ZDC Correlations histos.fill(HIST("ZNAVsNch"), glbTracks, znA); histos.fill(HIST("ZNCVsNch"), glbTracks, znC); @@ -715,18 +684,18 @@ struct FlowZdcTask { const auto& foundBC = collision.foundBC_as(); if (foundBC.has_zdc()) { const auto& zdc = foundBC.zdc(); - auto znA = zdc.amplitudeZNA() / cfgCollisionEnergy; - auto znC = zdc.amplitudeZNC() / cfgCollisionEnergy; - auto zpA = zdc.amplitudeZPA() / cfgCollisionEnergy; - auto zpC = zdc.amplitudeZPC() / cfgCollisionEnergy; - float sectorSumZNC = ((zdc.energySectorZNC())[0] + (zdc.energySectorZNC())[1] + (zdc.energySectorZNC())[2] + (zdc.energySectorZNC())[3]) / cfgCollisionEnergy; - float sectorSumZNA = ((zdc.energySectorZNA())[0] + (zdc.energySectorZNA())[1] + (zdc.energySectorZNA())[2] + (zdc.energySectorZNA())[3]) / cfgCollisionEnergy; - float sectorSumZPC = ((zdc.energySectorZPC())[0] + (zdc.energySectorZPC())[1] + (zdc.energySectorZPC())[2] + (zdc.energySectorZPC())[3]) / cfgCollisionEnergy; - float sectorSumZPA = ((zdc.energySectorZPA())[0] + (zdc.energySectorZPA())[1] + (zdc.energySectorZPA())[2] + (zdc.energySectorZPA())[3]) / cfgCollisionEnergy; - float commonSumZnc = zdc.energyCommonZNC() / cfgCollisionEnergy; - float commonSumZna = zdc.energyCommonZNA() / cfgCollisionEnergy; - float commonSumZpc = zdc.energyCommonZPC() / cfgCollisionEnergy; - float commonSumZpa = zdc.energyCommonZPA() / cfgCollisionEnergy; + auto znA = zdc.amplitudeZNA(); + auto znC = zdc.amplitudeZNC(); + auto zpA = zdc.amplitudeZPA(); + auto zpC = zdc.amplitudeZPC(); + float sectorSumZNC = ((zdc.energySectorZNC())[0] + (zdc.energySectorZNC())[1] + (zdc.energySectorZNC())[2] + (zdc.energySectorZNC())[3]); + float sectorSumZNA = ((zdc.energySectorZNA())[0] + (zdc.energySectorZNA())[1] + (zdc.energySectorZNA())[2] + (zdc.energySectorZNA())[3]); + float sectorSumZPC = ((zdc.energySectorZPC())[0] + (zdc.energySectorZPC())[1] + (zdc.energySectorZPC())[2] + (zdc.energySectorZPC())[3]); + float sectorSumZPA = ((zdc.energySectorZPA())[0] + (zdc.energySectorZPA())[1] + (zdc.energySectorZPA())[2] + (zdc.energySectorZPA())[3]); + float commonSumZnc = zdc.energyCommonZNC(); + float commonSumZna = zdc.energyCommonZNA(); + float commonSumZpc = zdc.energyCommonZPC(); + float commonSumZpa = zdc.energyCommonZPA(); float aZEM1 = zdc.amplitudeZEM1(); float aZEM2 = zdc.amplitudeZEM2(); float sumZEMs = aZEM1 + aZEM2;