From 03331da1e42ee649ab4d79581a497774743970e4 Mon Sep 17 00:00:00 2001 From: Arvind Khuntia Date: Tue, 15 Jul 2025 12:00:34 +0530 Subject: [PATCH 1/7] [PWGJE] Added TOF veto for PID --- PWGJE/Tasks/nucleiInJets.cxx | 154 +++++++++++++++++++++++++++++++---- 1 file changed, 139 insertions(+), 15 deletions(-) diff --git a/PWGJE/Tasks/nucleiInJets.cxx b/PWGJE/Tasks/nucleiInJets.cxx index 6f96263f3a2..4873e892054 100644 --- a/PWGJE/Tasks/nucleiInJets.cxx +++ b/PWGJE/Tasks/nucleiInJets.cxx @@ -150,6 +150,7 @@ struct nucleiInJets { Configurable useLeadingJetDetLevelValue{"useLeadingJetDetLevelValue", false, "true: use det level value for leading jet, false: use part level value"}; Configurable useDcaxyPtDepCut{"useDcaxyPtDepCut", true, "true: use pt dependent DCAxy cut, false: use constant DCAxy cut"}; Configurable useTOFNsigmaPreSel{"useTOFNsigmaPreSel", true, "true: use TOF nsgma preselection, false: no TOF nsgma preselection"}; + Configurable useTOFVeto{"useTOFVeto", false, "true: use TOF veto, false: no TOF veto"}; Configurable isRequireHitsInITSLayers{"isRequireHitsInITSLayers", true, "true: at least one hit in the its inner layes"}; Configurable useMcC{"useMcC", true, "use mcC"}; @@ -225,14 +226,12 @@ struct nucleiInJets { const AxisSpec massTrAxis{binsMassTr, ""}; const AxisSpec massHeAxis{binsMassHe, ""}; - if (applySkim) { - jetHist.add("hNEvents", "hNEvents", {HistType::kTH1D, {{6, 0.f, 6.f}}}); - jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(1, "All"); - jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(2, "Skimmed"); - jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(3, "|Vz|<10"); - jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(4, "Sel8+|Vz|<10"); - jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(5, "nJets>0"); - } + jetHist.add("hNEvents", "hNEvents", {HistType::kTH1D, {{6, 0.f, 6.f}}}); + jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(1, "All"); + jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(2, "Skimmed"); + jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(3, "|Vz|<10"); + jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(4, "Sel8+|Vz|<10"); + jetHist.get(HIST("hNEvents"))->GetXaxis()->SetBinLabel(5, "nJets>0"); // jet property jetHist.add("jet/h1JetPt", "jet_{p_{T}}", kTH1F, {PtJetAxis}); @@ -713,12 +712,42 @@ struct nucleiInJets { jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); - } else if (!useTOFNsigmaPreSel) { + } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } else if (!useTOFNsigmaPreSel && useTOFVeto) { + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } } + if (cEnableProtonQA && std::abs(trk.tpcNSigmaPr()) < cfgnTPCPIDPr) { jetHist.fill(HIST("tracks/proton/dca/after/hDCAxyVsPtProton_jet"), trk.dcaXY(), trk.pt()); jetHist.fill(HIST("tracks/proton/dca/after/hDCAzVsPtProton_jet"), trk.dcaZ(), trk.pt()); @@ -799,11 +828,40 @@ struct nucleiInJets { jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); - } else if (!useTOFNsigmaPreSel) { + } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } else if (!useTOFNsigmaPreSel && useTOFVeto) { + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } + } else { + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + } } if (cEnableProtonQA && std::abs(trk.tpcNSigmaPr()) < cfgnTPCPIDPr) { @@ -908,11 +966,40 @@ struct nucleiInJets { jetHist.fill(HIST("tracks/perpCone/helium/h3PtVsHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) jetHist.fill(HIST("tracks/perpCone/triton/h3PtVsTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr - } else if (!useTOFNsigmaPreSel) { + } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/perpCone/proton/h3PtVsProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr jetHist.fill(HIST("tracks/perpCone/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De jetHist.fill(HIST("tracks/perpCone/helium/h3PtVsHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He jetHist.fill(HIST("tracks/perpCone/triton/h3PtVsTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } else if (!useTOFNsigmaPreSel && useTOFVeto) { + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { + jetHist.fill(HIST("tracks/perpCone/proton/h3PtVsProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr + } + } else { + jetHist.fill(HIST("tracks/perpCone/proton/h3PtVsProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { + jetHist.fill(HIST("tracks/perpCone/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De + } + } else { + jetHist.fill(HIST("tracks/perpCone/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { + jetHist.fill(HIST("tracks/perpCone/helium/h3PtVsHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He + } + } else { + jetHist.fill(HIST("tracks/perpCone/helium/h3PtVsHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { + jetHist.fill(HIST("tracks/perpCone/triton/h3PtVsTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } + } else { + jetHist.fill(HIST("tracks/perpCone/triton/h3PtVsTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } } } @@ -997,11 +1084,40 @@ struct nucleiInJets { jetHist.fill(HIST("tracks/perpCone/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) jetHist.fill(HIST("tracks/perpCone/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr - } else if (!useTOFNsigmaPreSel) { + } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/perpCone/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr jetHist.fill(HIST("tracks/perpCone/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De jetHist.fill(HIST("tracks/perpCone/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He jetHist.fill(HIST("tracks/perpCone/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } else if (!useTOFNsigmaPreSel && useTOFVeto) { + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { + jetHist.fill(HIST("tracks/perpCone/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr + } + } else { + jetHist.fill(HIST("tracks/perpCone/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); // Pr + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { + jetHist.fill(HIST("tracks/perpCone/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De + } + } else { + jetHist.fill(HIST("tracks/perpCone/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); // De + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { + jetHist.fill(HIST("tracks/perpCone/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He + } + } else { + jetHist.fill(HIST("tracks/perpCone/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); // He + } + if (trk.hasTOF()) { + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { + jetHist.fill(HIST("tracks/perpCone/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } + } else { + jetHist.fill(HIST("tracks/perpCone/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); // Tr + } } } @@ -1142,6 +1258,7 @@ struct nucleiInJets { if (std::abs(collision.posZ()) > 10) return; jetHist.fill(HIST("hNEvents"), 2.5); + if (!jetderiveddatautilities::selectCollision(collision, jetderiveddatautilities::initialiseEventSelectionBits("sel8"))) return; jetHist.fill(HIST("hNEvents"), 3.5); @@ -1468,8 +1585,12 @@ struct nucleiInJets { jetHist.fill(HIST("eff/recmatched/pt/PtParticleTypeTPC"), mcTrack.pt(), jetFlag, mapPDGToValue(mcTrack.pdgCode())); if (isTof) jetHist.fill(HIST("eff/recmatched/pt/PtParticleTypeTOF"), mcTrack.pt(), jetFlag, mapPDGToValue(mcTrack.pdgCode())); - if (isTOFAndTPCPreSel) + if (isTOFAndTPCPreSel) { jetHist.fill(HIST("eff/recmatched/pt/PtParticleTypeTPCTOF"), mcTrack.pt(), jetFlag, mapPDGToValue(mcTrack.pdgCode())); + jetHist.fill(HIST("eff/recmatched/pt/PtParticleTypeTPCTOFVeto"), mcTrack.pt(), jetFlag, mapPDGToValue(mcTrack.pdgCode())); + } else { + jetHist.fill(HIST("eff/recmatched/pt/PtParticleTypeTPCTOFVeto"), mcTrack.pt(), jetFlag, mapPDGToValue(mcTrack.pdgCode())); + } if (jetFlagPerpCone) { jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleType"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); @@ -1483,8 +1604,12 @@ struct nucleiInJets { jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleTypeTPC"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); if (isTof) jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleTypeTOF"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); - if (isTOFAndTPCPreSel) + if (isTOFAndTPCPreSel) { jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleTypeTPCTOF"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); + jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleTypeTPCTOFVeto"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); + } + } else { + jetHist.fill(HIST("eff/recmatched/perpCone/pt/PtParticleTypeTPCTOFVeto"), mcTrack.pt(), mapPDGToValue(mcTrack.pdgCode())); } } } // tracks @@ -1531,7 +1656,6 @@ struct nucleiInJets { jetHist.fill(HIST("eff/recmatched/gen/perpCone/pt/PtParticleType"), mcParticle.pt(), mapPDGToValue(mcParticle.pdgCode())); } } - } // mcParticle } // process From 4604b76f895679dc6746fd95614c1aa44ec7a81e Mon Sep 17 00:00:00 2001 From: Arvind Khuntia Date: Thu, 17 Jul 2025 00:00:56 +0530 Subject: [PATCH 2/7] [PWGMM] FV0 info added to Lumi task --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 147 +++++++++++++++++++++----------- 1 file changed, 95 insertions(+), 52 deletions(-) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index 878e0482f7c..cf5f26d5f52 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -10,41 +10,38 @@ // or submit itself to any jurisdiction. // author: akhuntia@cern.ch -#include -#include -#include -#include - #include "Common/Core/TrackSelection.h" #include "Common/Core/trackUtilities.h" #include "Common/DataModel/EventSelection.h" -#include "Common/DataModel/TrackSelectionTables.h" #include "Common/DataModel/Multiplicity.h" -#include "CommonUtils/NameConf.h" +#include "Common/DataModel/TrackSelectionTables.h" +#include "CCDB/BasicCCDBManager.h" +#include "CCDB/CcdbApi.h" +#include "CommonConstants/GeomConstants.h" +#include "CommonUtils/NameConf.h" +#include "DataFormatsCalibration/MeanVertexObject.h" +#include "DataFormatsFDD/Digit.h" +#include "DataFormatsFIT/Triggers.h" +#include "DataFormatsParameters/GRPMagField.h" +#include "DataFormatsParameters/GRPObject.h" +#include "DetectorsBase/GeometryManager.h" +#include "DetectorsBase/Propagator.h" +#include "DetectorsVertexing/PVertexer.h" #include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisDataModel.h" #include "Framework/AnalysisTask.h" #include "Framework/HistogramRegistry.h" #include "Framework/RunningWorkflowInfo.h" #include "Framework/runDataProcessing.h" -#include "Framework/AnalysisDataModel.h" - -#include "DetectorsVertexing/PVertexer.h" #include "ReconstructionDataFormats/DCA.h" #include "ReconstructionDataFormats/PrimaryVertex.h" #include "ReconstructionDataFormats/Vertex.h" -#include "DataFormatsFDD/Digit.h" -#include "DataFormatsFIT/Triggers.h" -#include "DataFormatsParameters/GRPObject.h" -#include "DataFormatsParameters/GRPMagField.h" - -#include "DetectorsBase/GeometryManager.h" -#include "DetectorsBase/Propagator.h" -#include "CommonConstants/GeomConstants.h" -#include "CCDB/BasicCCDBManager.h" -#include "CCDB/CcdbApi.h" -#include "DataFormatsCalibration/MeanVertexObject.h" +#include +#include +#include +#include using namespace o2; using namespace o2::framework; @@ -85,6 +82,12 @@ DECLARE_SOA_COLUMN(TimeCFT0, timeCft0, double); DECLARE_SOA_COLUMN(ChargeAFT0, chargeAft0, double); DECLARE_SOA_COLUMN(ChargeCFT0, chargeCft0, double); +// information for FV0 +DECLARE_SOA_COLUMN(isFV0, isfv0, bool); +DECLARE_SOA_COLUMN(TCMTriggerFV0, tcmTriggerfv0, uint8_t); +DECLARE_SOA_COLUMN(TimeAFV0, timeAfv0, double); // Only FV0-A time +DECLARE_SOA_COLUMN(ChargeAFV0, chargeAfv0, double); // Only FV0-A charge + } // namespace full DECLARE_SOA_TABLE(EventInfo, "AOD", "EventInfo", full::TimeStamp, full::VertexX, full::VertexY, full::VertexZ, full::GlobalBC, @@ -94,7 +97,8 @@ DECLARE_SOA_TABLE(EventInfo, "AOD", "EventInfo", full::TimeStamp, full::VertexX, full::ChargeAFDD, full::ChargeCFDD, full::isFT0, full::TCMTriggerFT0, full::TimeAFT0, full::TimeCFT0, - full::ChargeAFT0, full::ChargeCFT0); + full::ChargeAFT0, full::ChargeCFT0, full::isFV0, + full::TCMTriggerFV0, full::TimeAFV0, full::ChargeAFV0); DECLARE_SOA_TABLE(EventInfoFDD, "AOD", "EventInfoFDD", full::TimeStamp, full::GlobalBC, @@ -109,12 +113,18 @@ DECLARE_SOA_TABLE(EventInfoFT0, "AOD", "EventInfoFT0", full::TimeCFT0, full::ChargeAFT0, full::ChargeCFT0); +DECLARE_SOA_TABLE(EventInfoFV0, "AOD", "EventInfoFV0", + full::TimeStamp, full::GlobalBC, + full::TCMTriggerFV0, full::TimeAFV0, + full::ChargeAFV0); + } // namespace o2::aod struct LumiFDDFT0 { Produces rowEventInfo; Produces rowEventInfofdd; Produces rowEventInfoft0; + Produces rowEventInfofv0; Service ccdb; const char* ccdbpath_grp = "GLO/Config/GRPMagField"; const char* ccdburl = "http://alice-ccdb.cern.ch"; @@ -147,6 +157,7 @@ struct LumiFDDFT0 { { {"BCFDD", "", {HistType::kTH1F, {{nBCsPerOrbit + 1, -0.5f, nBCsPerOrbit + 0.5f, "x"}}}}, // {"BCFT0", "", {HistType::kTH1F, {{nBCsPerOrbit + 1, -0.5f, nBCsPerOrbit + 0.5f, "x"}}}}, // + {"BCFV0", "", {HistType::kTH1F, {{nBCsPerOrbit + 1, -0.5f, nBCsPerOrbit + 0.5f, "x"}}}}, // }}; bool doPVrefit = true; @@ -165,7 +176,7 @@ struct LumiFDDFT0 { mRunNumber = 0; } - void processFull(soa::Join::iterator const& collision, aod::FDDs const& /*fdds*/, aod::FT0s const& /*ft0s*/, aod::BCsWithTimestamps const&, + void processFull(soa::Join::iterator const& collision, aod::FDDs const& /*fdds*/, aod::FT0s const& /*ft0s*/, aod::FV0As const& /*fv0s*/, aod::BCsWithTimestamps const&, o2::soa::Join const& unfiltered_tracks) { @@ -239,6 +250,10 @@ struct LumiFDDFT0 { double chargecFT0 = 0.; uint8_t mTriggerFT0 = 0; + double timeaFV0 = -999.; + double chargeaFV0 = 0.; + uint8_t mTriggerFV0 = 0; + if (doPVrefit && PVrefit_doable) { auto Pvtx_refitted = vertexer.refitVertex(vec_useTrk_PVrefit, Pvtx); chi2 = Pvtx_refitted.getChi2(); @@ -249,38 +264,49 @@ struct LumiFDDFT0 { // refitYY = Pvtx_refitted.getSigmaY2(); // refitXY = Pvtx_refitted.getSigmaXY(); - // now get information for FDD - if (collision.has_foundFDD()) { - auto fdd = collision.foundFDD(); - mTriggerFDD = fdd.triggerMask(); - timeaFDD = fdd.timeA(); - timecFDD = fdd.timeC(); - for (auto amplitude : fdd.chargeA()) { - chargeaFDD += amplitude; - } - for (auto amplitude : fdd.chargeC()) { - chargecFDD += amplitude; - } - } // fdd - - if (collision.has_foundFT0()) { - auto ft0 = collision.foundFT0(); - mTriggerFT0 = ft0.triggerMask(); - timeaFT0 = ft0.timeA(); - timecFT0 = ft0.timeC(); - for (auto amplitude : ft0.amplitudeA()) { - chargeaFT0 += amplitude; - } + } // pv refit - for (auto amplitude : ft0.amplitudeC()) { - chargecFT0 += amplitude; - } - } // ft0 + // now get information for FDD + if (collision.has_foundFDD()) { + auto fdd = collision.foundFDD(); + mTriggerFDD = fdd.triggerMask(); + timeaFDD = fdd.timeA(); + timecFDD = fdd.timeC(); + for (auto amplitude : fdd.chargeA()) { + chargeaFDD += amplitude; + } + for (auto amplitude : fdd.chargeC()) { + chargecFDD += amplitude; + } + } // fdd + + if (collision.has_foundFT0()) { + auto ft0 = collision.foundFT0(); + mTriggerFT0 = ft0.triggerMask(); + timeaFT0 = ft0.timeA(); + timecFT0 = ft0.timeC(); + for (auto amplitude : ft0.amplitudeA()) { + chargeaFT0 += amplitude; + } + + for (auto amplitude : ft0.amplitudeC()) { + chargecFT0 += amplitude; + } + } // ft0 + + // FV0 + if (collision.has_foundFV0()) { + auto fv0 = collision.foundFV0(); + mTriggerFV0 = fv0.triggerMask(); + timeaFV0 = fv0.time(); + for (auto amplitude : fv0.amplitude()) { + chargeaFV0 += amplitude; + } + } // fv0 - } // pv refit rowEventInfo(relTS, refitX, refitY, refitZ, globalBC, chi2, nContrib, collision.has_foundFDD(), mTriggerFDD, timeaFDD, timecFDD, chargeaFDD, chargecFDD, collision.has_foundFT0(), mTriggerFT0, timeaFT0, - timecFT0, chargeaFT0, chargecFT0); + timecFT0, chargeaFT0, chargecFT0, collision.has_foundFV0(), mTriggerFV0, timeaFV0, chargeaFV0); histos.fill(HIST("chisquare_Refitted"), chi2); if (nContrib > nContribMin && nContrib < nContribMax && @@ -313,7 +339,7 @@ struct LumiFDDFT0 { }; PROCESS_SWITCH(LumiFDDFT0, processFull, "Process FDD", true); - void processLite(aod::FDDs const& fdds, aod::FT0s const& ft0s, aod::BCsWithTimestamps const&) + void processLite(aod::FDDs const& fdds, aod::FT0s const& ft0s, aod::FV0As const& fv0s, aod::BCsWithTimestamps const&) { // Scan over the FDD table and store charge and time along with globalBC @@ -384,6 +410,23 @@ struct LumiFDDFT0 { } rowEventInfoft0(relTS, globalBC, ft0.triggerMask(), ft0.timeA(), ft0.timeC(), chargeaFT0, chargecFT0); } // end of ft0 table + + // Scan over the FV0 table and store charge and time along with globalBC + for (auto& fv0 : fv0s) { + auto bc = fv0.bc_as(); + if (!bc.timestamp()) + continue; + Long64_t relTS = bc.timestamp() - fttimestamp; + Long64_t globalBC = bc.globalBC(); + int localBC = globalBC % nBCsPerOrbit; + histoslite.fill(HIST("BCFV0"), localBC); + + double chargeaFV0 = 0.; + for (auto amplitude : fv0.amplitude()) { + chargeaFV0 += amplitude; + } + rowEventInfofv0(relTS, globalBC, fv0.triggerMask(), fv0.time(), chargeaFV0); + } // end of fv0 table }; PROCESS_SWITCH(LumiFDDFT0, processLite, "Process FDD and FT0 info", false); From 30932b540f119632963d2294e3404b4a97ce37e9 Mon Sep 17 00:00:00 2001 From: arvindkhuntia <31609955+arvindkhuntia@users.noreply.github.com> Date: Thu, 17 Jul 2025 09:08:31 +0530 Subject: [PATCH 3/7] Update LumiFDDFT0.cxx --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index cf5f26d5f52..3cb4bd9b84e 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -42,6 +42,7 @@ #include #include #include +#include using namespace o2; using namespace o2::framework; From f4e9d432d6e74e5a15c39ff5a664447966810d22 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 17 Jul 2025 03:39:00 +0000 Subject: [PATCH 4/7] Please consider the following formatting changes --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index 3cb4bd9b84e..afbdd2fc9f6 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -41,8 +41,8 @@ #include #include #include -#include #include +#include using namespace o2; using namespace o2::framework; From 18f682c76bd806905a5108e37a85cfac29a24811 Mon Sep 17 00:00:00 2001 From: arvindkhuntia <31609955+arvindkhuntia@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:49:23 +0530 Subject: [PATCH 5/7] Update LumiFDDFT0.cxx --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index afbdd2fc9f6..c67e36672b8 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -162,7 +162,6 @@ struct LumiFDDFT0 { }}; bool doPVrefit = true; - void init(InitContext&) { if (doprocessLite == true && doprocessFull == true) { From fd3fa470f3f154e07c71c2d10df776e505ac7fd2 Mon Sep 17 00:00:00 2001 From: arvindkhuntia <31609955+arvindkhuntia@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:20:52 +0530 Subject: [PATCH 6/7] Update LumiFDDFT0.cxx --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index c67e36672b8..228bd6677c7 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -44,6 +44,7 @@ #include #include + using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; From 5000a1ff46e224415ec31392ae70c56b48e48f21 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Wed, 23 Jul 2025 10:51:25 +0000 Subject: [PATCH 7/7] Please consider the following formatting changes --- PWGMM/Lumi/Tasks/LumiFDDFT0.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx index 228bd6677c7..c67e36672b8 100644 --- a/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx +++ b/PWGMM/Lumi/Tasks/LumiFDDFT0.cxx @@ -44,7 +44,6 @@ #include #include - using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions;