From 7ddff6359928a322092d009f0608539bfa9601d3 Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 17:44:26 +0530 Subject: [PATCH 1/8] Add files via upload This is the task for analysing the multiplicity distributions in Pb-Pb --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 235 ++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 PWGMM/Mult/Tasks/heavy-ion-mult.cxx diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx new file mode 100644 index 00000000000..ca577523ace --- /dev/null +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -0,0 +1,235 @@ +// Copyright 2019-2020 CERN and copyright holders of ALICE O2. +// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. +// All rights not expressly granted are reserved. +// +// This software is distributed under the terms of the GNU General Public +// License v3 (GPL Version 3), copied verbatim in the file "COPYING". +// +// In applying this license CERN does not waive the privileges and immunities +// granted to it by virtue of its status as an Intergovernmental Organization +// or submit itself to any jurisdiction. +/// +/// \brief This task is an empty skeleton that fills a simple eta histogram. +/// it is meant to be a blank page for further developments. +/// \author Abhi Modak (contact: abhi.modak@cern.ch) +/// \help: To develop this code, I took help from the following codes and O2 analysis tutorial +// 1. https://github.com/AliceO2Group/O2Physics/blob/master/PWGMM/Mult/Tasks/dndeta.cxx +// 2. https://github.com/AliceO2Group/O2Physics/blob/master/PWGMM/Mult/Tasks/dndeta-hi.cxx +// 3. https://github.com/AliceO2Group/O2Physics/blob/master/PWGLF/Mult/Tasks/puremc-dndeta.cxx +// 4. O2 analysis tutorial: https://indico.cern.ch/event/1267433/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bestCollisionTable.h" +#include "CCDB/BasicCCDBManager.h" +#include "Common/Core/RecoDecay.h" +#include "Common/Core/trackUtilities.h" +#include "Common/CCDB/EventSelectionParams.h" +#include "Common/Core/TrackSelection.h" +#include "Common/DataModel/PIDResponse.h" +#include "Common/DataModel/Centrality.h" +#include "Common/DataModel/EventSelection.h" +#include "Common/DataModel/Multiplicity.h" +#include "Common/DataModel/TrackSelectionTables.h" +#include "CommonConstants/MathConstants.h" +#include "Framework/ASoAHelpers.h" +#include "Framework/AnalysisDataModel.h" +#include "Framework/AnalysisTask.h" +#include "Framework/Configurable.h" +#include "Framework/HistogramRegistry.h" +#include "Framework/O2DatabasePDGPlugin.h" +#include "Framework/RuntimeError.h" +#include "Framework/runDataProcessing.h" +#include "Index.h" +#include "ReconstructionDataFormats/GlobalTrackID.h" +#include "ReconstructionDataFormats/Track.h" + +using namespace o2; +using namespace o2::framework; +using namespace o2::framework::expressions; +using namespace o2::aod::track; + +using CollisionDataTable = soa::Join; +using TrackDataTable = soa::Join; +using FilTrackDataTable = soa::Filtered; + +using CollisionMCTrueTable = aod::McCollisions; +using TrackMCTrueTable = aod::McParticles; +using CollisionMCRecTable = soa::SmallGroups>; +using TrackMCRecTable = soa::Join; +using FilTrackMCRecTable = soa::Filtered; + +static constexpr TrackSelectionFlags::flagtype trackSelectionITS = + TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF | + TrackSelectionFlags::kITSHits; + +static constexpr TrackSelectionFlags::flagtype trackSelectionTPC = + TrackSelectionFlags::kTPCNCls | + TrackSelectionFlags::kTPCCrossedRowsOverNCls | + TrackSelectionFlags::kTPCChi2NDF; + +static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = + TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy; + +struct HeavyIonMultiplicity { + + HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; + Service pdg; + Preslice perCollision = aod::track::collisionId; + + Configurable isMC{"isMC", true, "only for MC"}; + Configurable isData{"isData", true, "only for Data"}; + + void init(InitContext const&){ + + const AxisSpec axisEvent{4, -0.5, 3.5, "#Event"}; + const AxisSpec axisVtxZ{800, -20, 20, "Vertex Z"}; + const AxisSpec axisDCA = {601, -3.01, 3.01}; + const AxisSpec axisPT = {1000, -0.05, 49.95}; + const AxisSpec axisMult{2000, -0.5, 1999.5, "Multiplicity"}; + const AxisSpec axisEta{200, -5, 5, "#eta"}; + + histos.add("EventHist","EventHist", kTH1D, {axisEvent}, false); + histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); + + if(isData){ + histos.add("MultHist","MultHist", kTH1D, {axisMult}, true); + histos.add("MultHist_Inelgt0","MultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("EtaHist","EtaHist", kTH1D, {axisEta}, true); + histos.add("DCAXYHist","DCAXYHist", kTH1D, {axisDCA}, false); + histos.add("DCAZHist","DCAZHist", kTH1D, {axisDCA}, false); + histos.add("pTHist","pTHist", kTH1D, {axisPT}, true); + histos.add("EtaVsVtxZHist","EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); + } + + if(isMC){ + const AxisSpec axisMCEvent_ambiguity{6, -0.5, 5.5, "reco collisions per true collision"}; + histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); // log the number of collisions that were reconstructed for a MC collision + + histos.add("DCAXYMCRecHist","DCAXYMCRecHist", kTH1D, {axisDCA}, false); + histos.add("DCAZMCRecHist","DCAZMCRecHist", kTH1D, {axisDCA}, false); + histos.add("pTMCRecHist","pTMCRecHist", kTH1D, {axisPT}, true); + histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); + + histos.add("MCRecEtaHist","MCRecEtaHist", kTH1D, {axisEta}, true); + histos.add("MCGenEtaHist","MCGenEtaHist", kTH1D, {axisEta}, true); + + histos.add("MCRecMultHist","MCRecMultHist", kTH1D, {axisMult}, true); + histos.add("MCGenMultHist","MCGenMultHist", kTH1D, {axisMult}, true); + histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); + + histos.add("MCRecMultHist_Inelgt0","MCRecMultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("MCGenMultHist_Inelgt0","MCGenMultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("MCGenVsRecMultHist_Inelgt0","MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); + } + } + + expressions::Filter trackSelectionProper = ((aod::track::trackCutFlag & trackSelectionITS) == trackSelectionITS) && ifnode((aod::track::detectorMap & (uint8_t)o2::aod::track::TPC) == (uint8_t)o2::aod::track::TPC, (aod::track::trackCutFlag & trackSelectionTPC) == trackSelectionTPC, true) && ((aod::track::trackCutFlag & trackSelectionDCA) == trackSelectionDCA); + + void processData(CollisionDataTable::iterator const& collision, FilTrackDataTable const& tracks){ + + auto NchTracks = 0; + bool Inelgt0 = false; + histos.fill(HIST("EventHist"),0); + if (collision.sel8()) { + histos.fill(HIST("EventHist"),1); + if (std::abs(collision.posZ()) < 10){ + histos.fill(HIST("EventHist"),2); + histos.fill(HIST("VtxZHist"),collision.posZ()); + for(auto& track : tracks){ + if (std::abs(track.eta()) < 1){ + NchTracks++; + histos.fill(HIST("EtaHist"), track.eta()); + histos.fill(HIST("EtaVsVtxZHist"), track.eta(), collision.posZ()); + histos.fill(HIST("DCAXYHist"), track.dcaXY()); + histos.fill(HIST("DCAZHist"), track.dcaZ()); + histos.fill(HIST("pTHist"), track.pt()); + } + } + histos.fill(HIST("MultHist"), NchTracks); + if(NchTracks > 0) Inelgt0 = true; + if(Inelgt0){ + histos.fill(HIST("EventHist"),3); + histos.fill(HIST("MultHist_Inelgt0"), NchTracks); + } + } + } + } + + PROCESS_SWITCH(HeavyIonMultiplicity, processData, "process data", false); + + void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks){ + + histos.fill(HIST("MCEventHist_ambiguity"), RecCollisions.size()); + + if(RecCollisions.size() == 0 || RecCollisions.size() > 1) return; + + auto NchGenTracks = 0; + bool Inelgt0Gen = false; + auto NchRecTracks = 0; + bool Inelgt0Rec = false; + + for (auto& particle : GenParticles) { + if (!particle.isPhysicalPrimary()) continue; + if (!particle.producedByGenerator()) continue; + auto pdgParticle = pdg->GetParticle(particle.pdgCode()); + if(std::abs(pdgParticle->Charge()) >= 3){ + if(std::abs(particle.eta()) < 1) { + NchGenTracks++; + histos.fill(HIST("MCGenEtaHist"), particle.eta()); + } + } + } + histos.fill(HIST("MCGenMultHist"), NchGenTracks); + if(NchGenTracks>0) Inelgt0Gen = true; + if(Inelgt0Gen) histos.fill(HIST("MCGenMultHist_Inelgt0"), NchGenTracks); + + for (auto& RecCollision : RecCollisions) { + histos.fill(HIST("EventHist"),0); + if (RecCollision.sel8()) { + histos.fill(HIST("EventHist"),1); + if (std::abs(RecCollision.posZ()) < 10){ + histos.fill(HIST("EventHist"),2); + histos.fill(HIST("VtxZHist"),RecCollision.posZ()); + + auto Rectrackspart = RecTracks.sliceBy(perCollision, RecCollision.globalIndex()); + for(auto& Rectrack : Rectrackspart){ + if (std::abs(Rectrack.eta()) < 1){ + NchRecTracks++; + histos.fill(HIST("MCRecEtaHist"), Rectrack.eta()); + histos.fill(HIST("EtaVsVtxZMCRecHist"), Rectrack.eta(), RecCollision.posZ()); + histos.fill(HIST("DCAXYMCRecHist"), Rectrack.dcaXY()); + histos.fill(HIST("DCAZMCRecHist"), Rectrack.dcaZ()); + histos.fill(HIST("pTMCRecHist"), Rectrack.pt()); + } + } + histos.fill(HIST("MCRecMultHist"), NchRecTracks); + histos.fill(HIST("MCGenVsRecMultHist"), NchRecTracks, NchGenTracks); + if(NchRecTracks>0){ + Inelgt0Rec = true; + histos.fill(HIST("EventHist"),3); + } + if(Inelgt0Rec) histos.fill(HIST("MCRecMultHist_Inelgt0"), NchRecTracks); + if(Inelgt0Gen && Inelgt0Rec) histos.fill(HIST("MCGenVsRecMultHist_Inelgt0"), NchRecTracks, NchGenTracks); + } + } + } + } + + PROCESS_SWITCH(HeavyIonMultiplicity, processMC, "process MC", false); +}; + +WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) +{ + return WorkflowSpec{adaptAnalysisTask(cfgc)}; +} From d869aa4a084000d4a1407713575f1a8cbbff1a9a Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 17:46:42 +0530 Subject: [PATCH 2/8] Update CMakeLists.txt --- PWGMM/Mult/Tasks/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/PWGMM/Mult/Tasks/CMakeLists.txt b/PWGMM/Mult/Tasks/CMakeLists.txt index 2f1df16bbb4..5a73dd92729 100644 --- a/PWGMM/Mult/Tasks/CMakeLists.txt +++ b/PWGMM/Mult/Tasks/CMakeLists.txt @@ -54,3 +54,8 @@ o2physics_add_dpl_workflow(effpt-mft SOURCES effpt-mft.cxx PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore COMPONENT_NAME Analysis) + +o2physics_add_dpl_workflow(heavy-ion-mult + SOURCES heavy-ion-mult.cxx + PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore + COMPONENT_NAME Analysis) From 8cad5712a891f5dbc0025e47c00a90e20c1f8bcd Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:00:55 +0530 Subject: [PATCH 3/8] Update heavy-ion-mult.cxx --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index ca577523ace..760f26cd2b2 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -82,7 +82,6 @@ static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy; struct HeavyIonMultiplicity { - HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; Service pdg; Preslice perCollision = aod::track::collisionId; @@ -91,7 +90,6 @@ struct HeavyIonMultiplicity { Configurable isData{"isData", true, "only for Data"}; void init(InitContext const&){ - const AxisSpec axisEvent{4, -0.5, 3.5, "#Event"}; const AxisSpec axisVtxZ{800, -20, 20, "Vertex Z"}; const AxisSpec axisDCA = {601, -3.01, 3.01}; @@ -137,7 +135,6 @@ struct HeavyIonMultiplicity { expressions::Filter trackSelectionProper = ((aod::track::trackCutFlag & trackSelectionITS) == trackSelectionITS) && ifnode((aod::track::detectorMap & (uint8_t)o2::aod::track::TPC) == (uint8_t)o2::aod::track::TPC, (aod::track::trackCutFlag & trackSelectionTPC) == trackSelectionTPC, true) && ((aod::track::trackCutFlag & trackSelectionDCA) == trackSelectionDCA); void processData(CollisionDataTable::iterator const& collision, FilTrackDataTable const& tracks){ - auto NchTracks = 0; bool Inelgt0 = false; histos.fill(HIST("EventHist"),0); @@ -169,7 +166,6 @@ struct HeavyIonMultiplicity { PROCESS_SWITCH(HeavyIonMultiplicity, processData, "process data", false); void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks){ - histos.fill(HIST("MCEventHist_ambiguity"), RecCollisions.size()); if(RecCollisions.size() == 0 || RecCollisions.size() > 1) return; From 50514aedfbb74e96883674f6b9c5675c7e2a7fe8 Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:41:30 +0530 Subject: [PATCH 4/8] Update heavy-ion-mult.cxx --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 80 ++++++++++++++--------------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index 760f26cd2b2..11f41a06a2b 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -18,39 +18,27 @@ // 3. https://github.com/AliceO2Group/O2Physics/blob/master/PWGLF/Mult/Tasks/puremc-dndeta.cxx // 4. O2 analysis tutorial: https://indico.cern.ch/event/1267433/ -#include -#include #include -#include #include #include -#include -#include -#include #include #include #include "bestCollisionTable.h" #include "CCDB/BasicCCDBManager.h" -#include "Common/Core/RecoDecay.h" #include "Common/Core/trackUtilities.h" #include "Common/CCDB/EventSelectionParams.h" #include "Common/Core/TrackSelection.h" -#include "Common/DataModel/PIDResponse.h" #include "Common/DataModel/Centrality.h" #include "Common/DataModel/EventSelection.h" -#include "Common/DataModel/Multiplicity.h" #include "Common/DataModel/TrackSelectionTables.h" #include "CommonConstants/MathConstants.h" #include "Framework/ASoAHelpers.h" #include "Framework/AnalysisDataModel.h" #include "Framework/AnalysisTask.h" #include "Framework/Configurable.h" -#include "Framework/HistogramRegistry.h" #include "Framework/O2DatabasePDGPlugin.h" -#include "Framework/RuntimeError.h" #include "Framework/runDataProcessing.h" -#include "Index.h" #include "ReconstructionDataFormats/GlobalTrackID.h" #include "ReconstructionDataFormats/Track.h" @@ -81,26 +69,24 @@ static constexpr TrackSelectionFlags::flagtype trackSelectionTPC = static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy; +AxisSpec axisEvent{4, -0.5, 3.5, "#Event"}; +AxisSpec axisVtxZ{800, -20, 20, "Vertex Z"}; +AxisSpec axisDCA = {601, -3.01, 3.01}; +AxisSpec axisPT = {1000, -0.05, 49.95}; +AxisSpec axisMult{2000, -0.5, 1999.5, "Multiplicity"}; +AxisSpec axisEta{200, -5, 5, "#eta"}; +AxisSpec axisMCEvent_ambiguity{6, -0.5, 5.5, "reco collisions per true collision"}; + struct HeavyIonMultiplicity { HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; Service pdg; Preslice perCollision = aod::track::collisionId; - - Configurable isMC{"isMC", true, "only for MC"}; - Configurable isData{"isData", true, "only for Data"}; void init(InitContext const&){ - const AxisSpec axisEvent{4, -0.5, 3.5, "#Event"}; - const AxisSpec axisVtxZ{800, -20, 20, "Vertex Z"}; - const AxisSpec axisDCA = {601, -3.01, 3.01}; - const AxisSpec axisPT = {1000, -0.05, 49.95}; - const AxisSpec axisMult{2000, -0.5, 1999.5, "Multiplicity"}; - const AxisSpec axisEta{200, -5, 5, "#eta"}; - histos.add("EventHist","EventHist", kTH1D, {axisEvent}, false); histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); - if(isData){ + if(doprocessData){ histos.add("MultHist","MultHist", kTH1D, {axisMult}, true); histos.add("MultHist_Inelgt0","MultHist_Inelgt0", kTH1D, {axisMult}, true); histos.add("EtaHist","EtaHist", kTH1D, {axisEta}, true); @@ -110,22 +96,17 @@ struct HeavyIonMultiplicity { histos.add("EtaVsVtxZHist","EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); } - if(isMC){ - const AxisSpec axisMCEvent_ambiguity{6, -0.5, 5.5, "reco collisions per true collision"}; + if(doprocessMC){ histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); // log the number of collisions that were reconstructed for a MC collision - histos.add("DCAXYMCRecHist","DCAXYMCRecHist", kTH1D, {axisDCA}, false); histos.add("DCAZMCRecHist","DCAZMCRecHist", kTH1D, {axisDCA}, false); histos.add("pTMCRecHist","pTMCRecHist", kTH1D, {axisPT}, true); - histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); - + histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); histos.add("MCRecEtaHist","MCRecEtaHist", kTH1D, {axisEta}, true); histos.add("MCGenEtaHist","MCGenEtaHist", kTH1D, {axisEta}, true); - histos.add("MCRecMultHist","MCRecMultHist", kTH1D, {axisMult}, true); histos.add("MCGenMultHist","MCGenMultHist", kTH1D, {axisMult}, true); - histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); - + histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); histos.add("MCRecMultHist_Inelgt0","MCRecMultHist_Inelgt0", kTH1D, {axisMult}, true); histos.add("MCGenMultHist_Inelgt0","MCGenMultHist_Inelgt0", kTH1D, {axisMult}, true); histos.add("MCGenVsRecMultHist_Inelgt0","MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); @@ -154,7 +135,9 @@ struct HeavyIonMultiplicity { } } histos.fill(HIST("MultHist"), NchTracks); - if(NchTracks > 0) Inelgt0 = true; + if(NchTracks > 0){ + Inelgt0 = true; + } if(Inelgt0){ histos.fill(HIST("EventHist"),3); histos.fill(HIST("MultHist_Inelgt0"), NchTracks); @@ -168,17 +151,25 @@ struct HeavyIonMultiplicity { void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks){ histos.fill(HIST("MCEventHist_ambiguity"), RecCollisions.size()); - if(RecCollisions.size() == 0 || RecCollisions.size() > 1) return; - + if(RecCollisions.size() == 0 || RecCollisions.size() > 1){ + return; + } auto NchGenTracks = 0; bool Inelgt0Gen = false; auto NchRecTracks = 0; bool Inelgt0Rec = false; for (auto& particle : GenParticles) { - if (!particle.isPhysicalPrimary()) continue; - if (!particle.producedByGenerator()) continue; + if (!particle.isPhysicalPrimary()){ + continue; + } + if (!particle.producedByGenerator()){ + continue; + } auto pdgParticle = pdg->GetParticle(particle.pdgCode()); + if(pdgParticle = nullptr){ + continue; + } if(std::abs(pdgParticle->Charge()) >= 3){ if(std::abs(particle.eta()) < 1) { NchGenTracks++; @@ -187,9 +178,12 @@ struct HeavyIonMultiplicity { } } histos.fill(HIST("MCGenMultHist"), NchGenTracks); - if(NchGenTracks>0) Inelgt0Gen = true; - if(Inelgt0Gen) histos.fill(HIST("MCGenMultHist_Inelgt0"), NchGenTracks); - + if(NchGenTracks>0){ + Inelgt0Gen = true; + } + if(Inelgt0Gen){ + histos.fill(HIST("MCGenMultHist_Inelgt0"), NchGenTracks); + } for (auto& RecCollision : RecCollisions) { histos.fill(HIST("EventHist"),0); if (RecCollision.sel8()) { @@ -215,8 +209,12 @@ struct HeavyIonMultiplicity { Inelgt0Rec = true; histos.fill(HIST("EventHist"),3); } - if(Inelgt0Rec) histos.fill(HIST("MCRecMultHist_Inelgt0"), NchRecTracks); - if(Inelgt0Gen && Inelgt0Rec) histos.fill(HIST("MCGenVsRecMultHist_Inelgt0"), NchRecTracks, NchGenTracks); + if(Inelgt0Rec){ + histos.fill(HIST("MCRecMultHist_Inelgt0"), NchRecTracks); + } + if(Inelgt0Gen && Inelgt0Rec){ + histos.fill(HIST("MCGenVsRecMultHist_Inelgt0"), NchRecTracks, NchGenTracks); + } } } } From a1533aaf7f4e68f47ab3fd3db6f60c388577d9b1 Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 19:06:20 +0530 Subject: [PATCH 5/8] Update heavy-ion-mult.cxx --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index 11f41a06a2b..5078acca26e 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -41,34 +41,27 @@ #include "Framework/runDataProcessing.h" #include "ReconstructionDataFormats/GlobalTrackID.h" #include "ReconstructionDataFormats/Track.h" - using namespace o2; using namespace o2::framework; using namespace o2::framework::expressions; using namespace o2::aod::track; - using CollisionDataTable = soa::Join; using TrackDataTable = soa::Join; using FilTrackDataTable = soa::Filtered; - using CollisionMCTrueTable = aod::McCollisions; using TrackMCTrueTable = aod::McParticles; using CollisionMCRecTable = soa::SmallGroups>; using TrackMCRecTable = soa::Join; using FilTrackMCRecTable = soa::Filtered; - static constexpr TrackSelectionFlags::flagtype trackSelectionITS = TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF | TrackSelectionFlags::kITSHits; - static constexpr TrackSelectionFlags::flagtype trackSelectionTPC = TrackSelectionFlags::kTPCNCls | TrackSelectionFlags::kTPCCrossedRowsOverNCls | TrackSelectionFlags::kTPCChi2NDF; - static constexpr TrackSelectionFlags::flagtype trackSelectionDCA = TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy; - AxisSpec axisEvent{4, -0.5, 3.5, "#Event"}; AxisSpec axisVtxZ{800, -20, 20, "Vertex Z"}; AxisSpec axisDCA = {601, -3.01, 3.01}; @@ -76,16 +69,13 @@ AxisSpec axisPT = {1000, -0.05, 49.95}; AxisSpec axisMult{2000, -0.5, 1999.5, "Multiplicity"}; AxisSpec axisEta{200, -5, 5, "#eta"}; AxisSpec axisMCEvent_ambiguity{6, -0.5, 5.5, "reco collisions per true collision"}; - struct HeavyIonMultiplicity { HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; Service pdg; Preslice perCollision = aod::track::collisionId; - void init(InitContext const&){ histos.add("EventHist","EventHist", kTH1D, {axisEvent}, false); - histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); - + histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); if(doprocessData){ histos.add("MultHist","MultHist", kTH1D, {axisMult}, true); histos.add("MultHist_Inelgt0","MultHist_Inelgt0", kTH1D, {axisMult}, true); @@ -94,10 +84,9 @@ struct HeavyIonMultiplicity { histos.add("DCAZHist","DCAZHist", kTH1D, {axisDCA}, false); histos.add("pTHist","pTHist", kTH1D, {axisPT}, true); histos.add("EtaVsVtxZHist","EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); - } - + } if(doprocessMC){ - histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); // log the number of collisions that were reconstructed for a MC collision + histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); histos.add("DCAXYMCRecHist","DCAXYMCRecHist", kTH1D, {axisDCA}, false); histos.add("DCAZMCRecHist","DCAZMCRecHist", kTH1D, {axisDCA}, false); histos.add("pTMCRecHist","pTMCRecHist", kTH1D, {axisPT}, true); @@ -112,9 +101,7 @@ struct HeavyIonMultiplicity { histos.add("MCGenVsRecMultHist_Inelgt0","MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); } } - expressions::Filter trackSelectionProper = ((aod::track::trackCutFlag & trackSelectionITS) == trackSelectionITS) && ifnode((aod::track::detectorMap & (uint8_t)o2::aod::track::TPC) == (uint8_t)o2::aod::track::TPC, (aod::track::trackCutFlag & trackSelectionTPC) == trackSelectionTPC, true) && ((aod::track::trackCutFlag & trackSelectionDCA) == trackSelectionDCA); - void processData(CollisionDataTable::iterator const& collision, FilTrackDataTable const& tracks){ auto NchTracks = 0; bool Inelgt0 = false; @@ -147,18 +134,15 @@ struct HeavyIonMultiplicity { } PROCESS_SWITCH(HeavyIonMultiplicity, processData, "process data", false); - void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks){ histos.fill(HIST("MCEventHist_ambiguity"), RecCollisions.size()); - if(RecCollisions.size() == 0 || RecCollisions.size() > 1){ return; } auto NchGenTracks = 0; bool Inelgt0Gen = false; auto NchRecTracks = 0; - bool Inelgt0Rec = false; - + bool Inelgt0Rec = false; for (auto& particle : GenParticles) { if (!particle.isPhysicalPrimary()){ continue; @@ -218,11 +202,9 @@ struct HeavyIonMultiplicity { } } } - } - + } PROCESS_SWITCH(HeavyIonMultiplicity, processMC, "process MC", false); }; - WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask(cfgc)}; From 8f1d4ce7e4eaa31b6ecd3c6326706cfab09b63d7 Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Fri, 15 Sep 2023 19:22:17 +0530 Subject: [PATCH 6/8] Update heavy-ion-mult.cxx --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index 5078acca26e..c51f405af25 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -75,7 +75,7 @@ struct HeavyIonMultiplicity { Preslice perCollision = aod::track::collisionId; void init(InitContext const&){ histos.add("EventHist","EventHist", kTH1D, {axisEvent}, false); - histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); + histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); if(doprocessData){ histos.add("MultHist","MultHist", kTH1D, {axisMult}, true); histos.add("MultHist_Inelgt0","MultHist_Inelgt0", kTH1D, {axisMult}, true); @@ -84,18 +84,18 @@ struct HeavyIonMultiplicity { histos.add("DCAZHist","DCAZHist", kTH1D, {axisDCA}, false); histos.add("pTHist","pTHist", kTH1D, {axisPT}, true); histos.add("EtaVsVtxZHist","EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); - } + } if(doprocessMC){ histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); histos.add("DCAXYMCRecHist","DCAXYMCRecHist", kTH1D, {axisDCA}, false); histos.add("DCAZMCRecHist","DCAZMCRecHist", kTH1D, {axisDCA}, false); histos.add("pTMCRecHist","pTMCRecHist", kTH1D, {axisPT}, true); - histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); + histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); histos.add("MCRecEtaHist","MCRecEtaHist", kTH1D, {axisEta}, true); histos.add("MCGenEtaHist","MCGenEtaHist", kTH1D, {axisEta}, true); histos.add("MCRecMultHist","MCRecMultHist", kTH1D, {axisMult}, true); histos.add("MCGenMultHist","MCGenMultHist", kTH1D, {axisMult}, true); - histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); + histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); histos.add("MCRecMultHist_Inelgt0","MCRecMultHist_Inelgt0", kTH1D, {axisMult}, true); histos.add("MCGenMultHist_Inelgt0","MCGenMultHist_Inelgt0", kTH1D, {axisMult}, true); histos.add("MCGenVsRecMultHist_Inelgt0","MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); @@ -112,8 +112,8 @@ struct HeavyIonMultiplicity { histos.fill(HIST("EventHist"),2); histos.fill(HIST("VtxZHist"),collision.posZ()); for(auto& track : tracks){ - if (std::abs(track.eta()) < 1){ - NchTracks++; + if (std::abs(track.eta()) < 1){ + NchTracks++; histos.fill(HIST("EtaHist"), track.eta()); histos.fill(HIST("EtaVsVtxZHist"), track.eta(), collision.posZ()); histos.fill(HIST("DCAXYHist"), track.dcaXY()); From d5341d44f1579903b82c47198e56d7c62218fc9f Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Fri, 15 Sep 2023 13:52:59 +0000 Subject: [PATCH 7/8] Please consider the following formatting changes --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 189 ++++++++++++++-------------- 1 file changed, 96 insertions(+), 93 deletions(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index c51f405af25..739c572d926 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -73,136 +73,139 @@ struct HeavyIonMultiplicity { HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; Service pdg; Preslice perCollision = aod::track::collisionId; - void init(InitContext const&){ - histos.add("EventHist","EventHist", kTH1D, {axisEvent}, false); - histos.add("VtxZHist","VtxZHist", kTH1D, {axisVtxZ}, false); - if(doprocessData){ - histos.add("MultHist","MultHist", kTH1D, {axisMult}, true); - histos.add("MultHist_Inelgt0","MultHist_Inelgt0", kTH1D, {axisMult}, true); - histos.add("EtaHist","EtaHist", kTH1D, {axisEta}, true); - histos.add("DCAXYHist","DCAXYHist", kTH1D, {axisDCA}, false); - histos.add("DCAZHist","DCAZHist", kTH1D, {axisDCA}, false); - histos.add("pTHist","pTHist", kTH1D, {axisPT}, true); - histos.add("EtaVsVtxZHist","EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); + void init(InitContext const&) + { + histos.add("EventHist", "EventHist", kTH1D, {axisEvent}, false); + histos.add("VtxZHist", "VtxZHist", kTH1D, {axisVtxZ}, false); + if (doprocessData) { + histos.add("MultHist", "MultHist", kTH1D, {axisMult}, true); + histos.add("MultHist_Inelgt0", "MultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("EtaHist", "EtaHist", kTH1D, {axisEta}, true); + histos.add("DCAXYHist", "DCAXYHist", kTH1D, {axisDCA}, false); + histos.add("DCAZHist", "DCAZHist", kTH1D, {axisDCA}, false); + histos.add("pTHist", "pTHist", kTH1D, {axisPT}, true); + histos.add("EtaVsVtxZHist", "EtaVsVtxZHist", kTH2D, {axisEta, axisVtxZ}, true); } - if(doprocessMC){ - histos.add("MCEventHist_ambiguity","MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); - histos.add("DCAXYMCRecHist","DCAXYMCRecHist", kTH1D, {axisDCA}, false); - histos.add("DCAZMCRecHist","DCAZMCRecHist", kTH1D, {axisDCA}, false); - histos.add("pTMCRecHist","pTMCRecHist", kTH1D, {axisPT}, true); - histos.add("EtaVsVtxZMCRecHist","EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); - histos.add("MCRecEtaHist","MCRecEtaHist", kTH1D, {axisEta}, true); - histos.add("MCGenEtaHist","MCGenEtaHist", kTH1D, {axisEta}, true); - histos.add("MCRecMultHist","MCRecMultHist", kTH1D, {axisMult}, true); - histos.add("MCGenMultHist","MCGenMultHist", kTH1D, {axisMult}, true); - histos.add("MCGenVsRecMultHist","MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); - histos.add("MCRecMultHist_Inelgt0","MCRecMultHist_Inelgt0", kTH1D, {axisMult}, true); - histos.add("MCGenMultHist_Inelgt0","MCGenMultHist_Inelgt0", kTH1D, {axisMult}, true); - histos.add("MCGenVsRecMultHist_Inelgt0","MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); + if (doprocessMC) { + histos.add("MCEventHist_ambiguity", "MCEventHist_ambiguity", kTH1D, {axisMCEvent_ambiguity}, false); + histos.add("DCAXYMCRecHist", "DCAXYMCRecHist", kTH1D, {axisDCA}, false); + histos.add("DCAZMCRecHist", "DCAZMCRecHist", kTH1D, {axisDCA}, false); + histos.add("pTMCRecHist", "pTMCRecHist", kTH1D, {axisPT}, true); + histos.add("EtaVsVtxZMCRecHist", "EtaVsVtxZMCRecHist", kTH2D, {axisEta, axisVtxZ}, true); + histos.add("MCRecEtaHist", "MCRecEtaHist", kTH1D, {axisEta}, true); + histos.add("MCGenEtaHist", "MCGenEtaHist", kTH1D, {axisEta}, true); + histos.add("MCRecMultHist", "MCRecMultHist", kTH1D, {axisMult}, true); + histos.add("MCGenMultHist", "MCGenMultHist", kTH1D, {axisMult}, true); + histos.add("MCGenVsRecMultHist", "MCGenVsRecMultHist", kTH2D, {axisMult, axisMult}, true); + histos.add("MCRecMultHist_Inelgt0", "MCRecMultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("MCGenMultHist_Inelgt0", "MCGenMultHist_Inelgt0", kTH1D, {axisMult}, true); + histos.add("MCGenVsRecMultHist_Inelgt0", "MCGenVsRecMultHist_Inelgt0", kTH2D, {axisMult, axisMult}, true); } } expressions::Filter trackSelectionProper = ((aod::track::trackCutFlag & trackSelectionITS) == trackSelectionITS) && ifnode((aod::track::detectorMap & (uint8_t)o2::aod::track::TPC) == (uint8_t)o2::aod::track::TPC, (aod::track::trackCutFlag & trackSelectionTPC) == trackSelectionTPC, true) && ((aod::track::trackCutFlag & trackSelectionDCA) == trackSelectionDCA); - void processData(CollisionDataTable::iterator const& collision, FilTrackDataTable const& tracks){ + void processData(CollisionDataTable::iterator const& collision, FilTrackDataTable const& tracks) + { auto NchTracks = 0; bool Inelgt0 = false; - histos.fill(HIST("EventHist"),0); + histos.fill(HIST("EventHist"), 0); if (collision.sel8()) { - histos.fill(HIST("EventHist"),1); - if (std::abs(collision.posZ()) < 10){ - histos.fill(HIST("EventHist"),2); - histos.fill(HIST("VtxZHist"),collision.posZ()); - for(auto& track : tracks){ - if (std::abs(track.eta()) < 1){ + histos.fill(HIST("EventHist"), 1); + if (std::abs(collision.posZ()) < 10) { + histos.fill(HIST("EventHist"), 2); + histos.fill(HIST("VtxZHist"), collision.posZ()); + for (auto& track : tracks) { + if (std::abs(track.eta()) < 1) { NchTracks++; - histos.fill(HIST("EtaHist"), track.eta()); - histos.fill(HIST("EtaVsVtxZHist"), track.eta(), collision.posZ()); - histos.fill(HIST("DCAXYHist"), track.dcaXY()); - histos.fill(HIST("DCAZHist"), track.dcaZ()); - histos.fill(HIST("pTHist"), track.pt()); - } - } - histos.fill(HIST("MultHist"), NchTracks); - if(NchTracks > 0){ - Inelgt0 = true; - } - if(Inelgt0){ - histos.fill(HIST("EventHist"),3); - histos.fill(HIST("MultHist_Inelgt0"), NchTracks); - } + histos.fill(HIST("EtaHist"), track.eta()); + histos.fill(HIST("EtaVsVtxZHist"), track.eta(), collision.posZ()); + histos.fill(HIST("DCAXYHist"), track.dcaXY()); + histos.fill(HIST("DCAZHist"), track.dcaZ()); + histos.fill(HIST("pTHist"), track.pt()); + } + } + histos.fill(HIST("MultHist"), NchTracks); + if (NchTracks > 0) { + Inelgt0 = true; + } + if (Inelgt0) { + histos.fill(HIST("EventHist"), 3); + histos.fill(HIST("MultHist_Inelgt0"), NchTracks); + } } } - } - + } + PROCESS_SWITCH(HeavyIonMultiplicity, processData, "process data", false); - void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks){ + void processMC(CollisionMCTrueTable::iterator const& TrueCollision, CollisionMCRecTable const& RecCollisions, TrackMCTrueTable const& GenParticles, FilTrackMCRecTable const& RecTracks) + { histos.fill(HIST("MCEventHist_ambiguity"), RecCollisions.size()); - if(RecCollisions.size() == 0 || RecCollisions.size() > 1){ + if (RecCollisions.size() == 0 || RecCollisions.size() > 1) { return; } auto NchGenTracks = 0; bool Inelgt0Gen = false; auto NchRecTracks = 0; - bool Inelgt0Rec = false; + bool Inelgt0Rec = false; for (auto& particle : GenParticles) { - if (!particle.isPhysicalPrimary()){ + if (!particle.isPhysicalPrimary()) { continue; } - if (!particle.producedByGenerator()){ + if (!particle.producedByGenerator()) { continue; } auto pdgParticle = pdg->GetParticle(particle.pdgCode()); - if(pdgParticle = nullptr){ + if (pdgParticle = nullptr) { continue; } - if(std::abs(pdgParticle->Charge()) >= 3){ - if(std::abs(particle.eta()) < 1) { - NchGenTracks++; - histos.fill(HIST("MCGenEtaHist"), particle.eta()); - } + if (std::abs(pdgParticle->Charge()) >= 3) { + if (std::abs(particle.eta()) < 1) { + NchGenTracks++; + histos.fill(HIST("MCGenEtaHist"), particle.eta()); + } } } histos.fill(HIST("MCGenMultHist"), NchGenTracks); - if(NchGenTracks>0){ + if (NchGenTracks > 0) { Inelgt0Gen = true; } - if(Inelgt0Gen){ + if (Inelgt0Gen) { histos.fill(HIST("MCGenMultHist_Inelgt0"), NchGenTracks); } for (auto& RecCollision : RecCollisions) { - histos.fill(HIST("EventHist"),0); + histos.fill(HIST("EventHist"), 0); if (RecCollision.sel8()) { - histos.fill(HIST("EventHist"),1); - if (std::abs(RecCollision.posZ()) < 10){ - histos.fill(HIST("EventHist"),2); - histos.fill(HIST("VtxZHist"),RecCollision.posZ()); + histos.fill(HIST("EventHist"), 1); + if (std::abs(RecCollision.posZ()) < 10) { + histos.fill(HIST("EventHist"), 2); + histos.fill(HIST("VtxZHist"), RecCollision.posZ()); - auto Rectrackspart = RecTracks.sliceBy(perCollision, RecCollision.globalIndex()); - for(auto& Rectrack : Rectrackspart){ - if (std::abs(Rectrack.eta()) < 1){ - NchRecTracks++; - histos.fill(HIST("MCRecEtaHist"), Rectrack.eta()); - histos.fill(HIST("EtaVsVtxZMCRecHist"), Rectrack.eta(), RecCollision.posZ()); - histos.fill(HIST("DCAXYMCRecHist"), Rectrack.dcaXY()); - histos.fill(HIST("DCAZMCRecHist"), Rectrack.dcaZ()); - histos.fill(HIST("pTMCRecHist"), Rectrack.pt()); - } - } - histos.fill(HIST("MCRecMultHist"), NchRecTracks); - histos.fill(HIST("MCGenVsRecMultHist"), NchRecTracks, NchGenTracks); - if(NchRecTracks>0){ - Inelgt0Rec = true; - histos.fill(HIST("EventHist"),3); - } - if(Inelgt0Rec){ - histos.fill(HIST("MCRecMultHist_Inelgt0"), NchRecTracks); - } - if(Inelgt0Gen && Inelgt0Rec){ - histos.fill(HIST("MCGenVsRecMultHist_Inelgt0"), NchRecTracks, NchGenTracks); - } - } + auto Rectrackspart = RecTracks.sliceBy(perCollision, RecCollision.globalIndex()); + for (auto& Rectrack : Rectrackspart) { + if (std::abs(Rectrack.eta()) < 1) { + NchRecTracks++; + histos.fill(HIST("MCRecEtaHist"), Rectrack.eta()); + histos.fill(HIST("EtaVsVtxZMCRecHist"), Rectrack.eta(), RecCollision.posZ()); + histos.fill(HIST("DCAXYMCRecHist"), Rectrack.dcaXY()); + histos.fill(HIST("DCAZMCRecHist"), Rectrack.dcaZ()); + histos.fill(HIST("pTMCRecHist"), Rectrack.pt()); + } + } + histos.fill(HIST("MCRecMultHist"), NchRecTracks); + histos.fill(HIST("MCGenVsRecMultHist"), NchRecTracks, NchGenTracks); + if (NchRecTracks > 0) { + Inelgt0Rec = true; + histos.fill(HIST("EventHist"), 3); + } + if (Inelgt0Rec) { + histos.fill(HIST("MCRecMultHist_Inelgt0"), NchRecTracks); + } + if (Inelgt0Gen && Inelgt0Rec) { + histos.fill(HIST("MCGenVsRecMultHist_Inelgt0"), NchRecTracks, NchGenTracks); + } + } } } - } + } PROCESS_SWITCH(HeavyIonMultiplicity, processMC, "process MC", false); }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) From 8974b616993a2734f6330eced4731cf684fcb8a0 Mon Sep 17 00:00:00 2001 From: abmodak <67369858+abmodak@users.noreply.github.com> Date: Sat, 16 Sep 2023 00:22:39 +0530 Subject: [PATCH 8/8] Update heavy-ion-mult.cxx --- PWGMM/Mult/Tasks/heavy-ion-mult.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx index 739c572d926..b57533d2531 100644 --- a/PWGMM/Mult/Tasks/heavy-ion-mult.cxx +++ b/PWGMM/Mult/Tasks/heavy-ion-mult.cxx @@ -71,7 +71,7 @@ AxisSpec axisEta{200, -5, 5, "#eta"}; AxisSpec axisMCEvent_ambiguity{6, -0.5, 5.5, "reco collisions per true collision"}; struct HeavyIonMultiplicity { HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject}; - Service pdg; + Service pdg; Preslice perCollision = aod::track::collisionId; void init(InitContext const&) {