Skip to content

Commit 36f3eb5

Browse files
sawankumawatSawan Sawan
andauthored
[PWGLF] optimised code (#12682)
Co-authored-by: Sawan Sawan <sawan.sawan@cern.ch>
1 parent 90060ee commit 36f3eb5

File tree

2 files changed

+121
-70
lines changed

2 files changed

+121
-70
lines changed

PWGLF/Tasks/Resonances/k892analysis.cxx

Lines changed: 110 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,23 @@
1515
///
1616
/// \author Bong-Hwi Lim <bong-hwi.lim@cern.ch>, Sawan Sawan <sawan.sawan@cern.ch>
1717

18-
#include <TLorentzVector.h>
19-
#include "TF1.h"
20-
#include "TRandom3.h"
18+
#include "PWGLF/DataModel/LFResonanceTables.h"
19+
#include "PWGLF/DataModel/mcCentrality.h"
20+
#include "PWGLF/Utils/inelGt.h"
2121

22-
#include "Common/DataModel/PIDResponse.h"
2322
#include "Common/DataModel/Centrality.h"
2423
#include "Common/DataModel/EventSelection.h"
25-
#include "Framework/AnalysisTask.h"
24+
#include "Common/DataModel/PIDResponse.h"
25+
26+
#include "CommonConstants/PhysicsConstants.h"
27+
#include "DataFormatsParameters/GRPObject.h"
2628
#include "Framework/ASoAHelpers.h"
29+
#include "Framework/AnalysisTask.h"
2730
#include "Framework/runDataProcessing.h"
28-
#include "PWGLF/DataModel/LFResonanceTables.h"
29-
#include "DataFormatsParameters/GRPObject.h"
30-
#include "CommonConstants/PhysicsConstants.h"
31+
32+
#include "TF1.h"
33+
#include "TRandom3.h"
34+
#include <TLorentzVector.h>
3135

3236
using namespace o2;
3337
using namespace o2::framework;
@@ -59,6 +63,9 @@ struct K892analysis {
5963
Configurable<bool> invmass1D{"invmass1D", false, "Invariant mass 1D"};
6064
Configurable<bool> studyAntiparticle{"studyAntiparticle", false, "Study anti-particles separately"};
6165
Configurable<bool> fillPidPlots{"fillPidPlots", false, "Make TPC and TOF PID plots"};
66+
Configurable<bool> cisInelGt0{"cisInelGt0", true, "check if INEL>0"};
67+
Configurable<bool> cMCCent{"cMCCent", true, "Using calibrated MC centrality (for FT0M)"};
68+
6269
// Configurable<bool> applyOccupancyCut{"applyOccupancyCut", false, "Apply occupancy cut"};
6370
// Configurable<int> occupancyCut{"occupancyCut", 1000, "Mimimum Occupancy cut"};
6471

@@ -426,11 +433,11 @@ struct K892analysis {
426433
return false;
427434
}
428435

429-
template <bool IsMC, bool IsMix, typename CollisionType, typename TracksType>
430-
void fillHistograms(const CollisionType& collision, const TracksType& dTracks1, const TracksType& dTracks2)
436+
template <bool IsMC, bool IsMix, typename CollisionType, typename TracksType, typename Multdatamc>
437+
void fillHistograms(const CollisionType& collision, const TracksType& dTracks1, const TracksType& dTracks2, const Multdatamc& multiplicity)
431438
{
432439
// auto multNTracksPV = collision.multNTracksPV();
433-
auto multiplicity = collision.cent();
440+
// auto multiplicity = collision.cent();
434441
if (additionalEvsel && !eventSelected(collision, multiplicity)) {
435442
return;
436443
}
@@ -703,28 +710,105 @@ struct K892analysis {
703710
}
704711
}
705712

706-
void processDataLight(aod::ResoCollision const& collision,
707-
aod::ResoTracks const& resotracks)
713+
void processDataLight(aod::ResoCollision const& resocollisions, aod::ResoCollisionColls const& collisionIndex, soa::Join<aod::Collisions, aod::PVMults> const& collisions, aod::ResoTracks const& resotracks)
708714
{
709715
// LOG(info) << "new collision, zvtx: " << collision.posZ();
716+
if (cisInelGt0) {
717+
auto linkRow = collisionIndex.iteratorAt(resocollisions.globalIndex());
718+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
719+
720+
auto coll = collisions.iteratorAt(collId); // Take original collision matched with resoCollision
721+
722+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
723+
return;
724+
}
710725
if (additionalQAeventPlots)
711726
histos.fill(HIST("QAevent/hEvtCounterSameE"), 1.0);
712-
fillHistograms<false, false>(collision, resotracks, resotracks);
727+
auto multiplicity = resocollisions.cent();
728+
fillHistograms<false, false>(resocollisions, resotracks, resotracks, multiplicity);
713729
}
714730
PROCESS_SWITCH(K892analysis, processDataLight, "Process Event for data", false);
715731

716-
void processMCLight(ResoMCCols::iterator const& collision,
717-
soa::Join<aod::ResoTracks, aod::ResoMCTracks> const& resotracks)
732+
void processMCLight(ResoMCCols::iterator const& resoCollision,
733+
aod::ResoCollisionColls const& collisionIndex,
734+
soa::Join<aod::ResoCollisionCandidatesMC, aod::PVMults> const& collisionsMC,
735+
soa::Join<aod::ResoTracks, aod::ResoMCTracks> const& resoTracks,
736+
soa::Join<aod::McCollisions, aod::McCentFT0Ms> const&)
718737
{
719-
if (!collision.isInAfterAllCuts() || (std::abs(collision.posZ()) > cZvertCutMC)) // MC event selection, all cuts missing vtx cut
738+
float multiplicity;
739+
if (cMCCent && cisInelGt0) {
740+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
741+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
742+
743+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
744+
745+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
746+
return;
747+
748+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
749+
multiplicity = mcColl.centFT0M();
750+
} else if (!cMCCent && cisInelGt0) {
751+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
752+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
753+
754+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
755+
756+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
757+
return;
758+
759+
multiplicity = resoCollision.cent();
760+
} else if (cMCCent && !cisInelGt0) {
761+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
762+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
763+
764+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
765+
766+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
767+
multiplicity = mcColl.centFT0M();
768+
} else {
769+
multiplicity = resoCollision.cent();
770+
}
771+
if (!resoCollision.isInAfterAllCuts() || (std::abs(resoCollision.posZ()) > cZvertCutMC)) // MC event selection, all cuts missing vtx cut
720772
return;
721-
fillHistograms<true, false>(collision, resotracks, resotracks);
773+
fillHistograms<true, false>(resoCollision, resoTracks, resoTracks, multiplicity);
722774
}
723775
PROCESS_SWITCH(K892analysis, processMCLight, "Process Event for MC (Reconstructed)", false);
724776

725-
void processMCTrue(ResoMCCols::iterator const& collision, aod::ResoMCParents const& resoParents)
777+
void processMCTrue(ResoMCCols::iterator const& resoCollision, aod::ResoCollisionColls const& collisionIndex, aod::ResoMCParents const& resoParents, aod::ResoCollisionCandidatesMC const& collisionsMC, soa::Join<aod::McCollisions, aod::McCentFT0Ms> const&)
726778
{
727-
auto multiplicity = collision.cent();
779+
float multiplicity;
780+
if (cMCCent && cisInelGt0) {
781+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
782+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
783+
784+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
785+
786+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
787+
return;
788+
789+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
790+
multiplicity = mcColl.centFT0M();
791+
} else if (!cMCCent && cisInelGt0) {
792+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
793+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
794+
795+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
796+
797+
if (!coll.isInelGt0()) // Check reco INELgt0 (at least one PV track in |eta| < 1) about the collision
798+
return;
799+
800+
multiplicity = resoCollision.cent();
801+
} else if (cMCCent && !cisInelGt0) {
802+
auto linkRow = collisionIndex.iteratorAt(resoCollision.globalIndex());
803+
auto collId = linkRow.collisionId(); // Take original collision global index matched with resoCollision
804+
805+
auto coll = collisionsMC.iteratorAt(collId); // Take original collision matched with resoCollision
806+
807+
auto mcColl = coll.mcCollision_as<soa::Join<aod::McCollisions, aod::McCentFT0Ms>>();
808+
multiplicity = mcColl.centFT0M();
809+
} else {
810+
multiplicity = resoCollision.cent();
811+
}
728812
for (const auto& part : resoParents) { // loop over all pre-filtered MC particles
729813
if (std::abs(part.pdgCode()) != 313 || std::abs(part.y()) >= 0.5)
730814
continue;
@@ -734,28 +818,28 @@ struct K892analysis {
734818
if (!pass1 || !pass2)
735819
continue;
736820

737-
if (collision.isVtxIn10()) // INEL10
821+
if (resoCollision.isVtxIn10()) // INEL10
738822
{
739823
if (part.pdgCode() > 0)
740824
histos.fill(HIST("k892Gen"), 0, part.pt(), multiplicity);
741825
else
742826
histos.fill(HIST("k892GenAnti"), 0, part.pt(), multiplicity);
743827
}
744-
if (collision.isVtxIn10() && collision.isInSel8()) // INEL>10, vtx10
828+
if (resoCollision.isVtxIn10() && resoCollision.isInSel8()) // INEL>10, vtx10
745829
{
746830
if (part.pdgCode() > 0)
747831
histos.fill(HIST("k892Gen"), 1, part.pt(), multiplicity);
748832
else
749833
histos.fill(HIST("k892GenAnti"), 1, part.pt(), multiplicity);
750834
}
751-
if (collision.isVtxIn10() && collision.isTriggerTVX()) // vtx10, TriggerTVX
835+
if (resoCollision.isVtxIn10() && resoCollision.isTriggerTVX()) // vtx10, TriggerTVX
752836
{
753837
if (part.pdgCode() > 0)
754838
histos.fill(HIST("k892Gen"), 2, part.pt(), multiplicity);
755839
else
756840
histos.fill(HIST("k892GenAnti"), 2, part.pt(), multiplicity);
757841
}
758-
if (collision.isInAfterAllCuts()) // after all event selection
842+
if (resoCollision.isInAfterAllCuts()) // after all event selection
759843
{
760844
if (part.pdgCode() > 0)
761845
histos.fill(HIST("k892Gen"), 3, part.pt(), multiplicity);
@@ -775,9 +859,10 @@ struct K892analysis {
775859
SameKindPair<aod::ResoCollisions, aod::ResoTracks, BinningTypeVtxZT0M> pairs{colBinning, nEvtMixing, -1, collisions, tracksTuple, &cache}; // -1 is the number of the bin to skip
776860

777861
for (const auto& [collision1, tracks1, collision2, tracks2] : pairs) {
862+
auto multiplicity = collision1.cent();
778863
if (additionalQAeventPlots)
779864
histos.fill(HIST("QAevent/hEvtCounterMixedE"), 1.0);
780-
fillHistograms<false, true>(collision1, tracks1, tracks2);
865+
fillHistograms<false, true>(collision1, tracks1, tracks2, multiplicity);
781866
}
782867
};
783868
PROCESS_SWITCH(K892analysis, processMELight, "Process EventMixing light without partition", false);

PWGLF/Tasks/Resonances/kstarqa.cxx

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,7 @@ struct Kstarqa {
16881688
}
16891689
PROCESS_SWITCH(Kstarqa, processEvtLossSigLossMC, "Process Signal Loss, Event Loss", false);
16901690

1691-
void processRec(EventCandidatesMC::iterator const& collision, TrackCandidatesMC const& tracks, aod::McParticles const&, aod::McCollisions const&)
1691+
void processRec(EventCandidatesMC::iterator const& collision, TrackCandidatesMC const& tracks, aod::McParticles const&, EventMCGenerated const&)
16921692
{
16931693

16941694
if (!collision.has_mcCollision()) {
@@ -1705,8 +1705,6 @@ struct Kstarqa {
17051705
}
17061706
// multiplicity = collision.centFT0M();
17071707

1708-
multiplicity = -1.0;
1709-
17101708
if (cSelectMultEstimator == kFT0M) {
17111709
multiplicity = collision.centFT0M();
17121710
} else if (cSelectMultEstimator == kFT0A) {
@@ -1934,20 +1932,22 @@ struct Kstarqa {
19341932
}
19351933
PROCESS_SWITCH(Kstarqa, processRec, "Process Reconstructed", false);
19361934

1937-
void processRec2(EventCandidatesMC::iterator const& collision, TrackCandidatesMC const& tracks, aod::McParticles const&, aod::McCollisions const& /*mcCollisions*/)
1935+
void processRec2(EventCandidatesMC::iterator const& collision, TrackCandidatesMC const& tracks, aod::McParticles const&, EventMCGenerated const&)
19381936
{
19391937

19401938
if (!collision.has_mcCollision()) {
19411939
return;
19421940
}
19431941

1942+
double multiplicityRec = -1.0;
1943+
const auto& mcCollisionRec = collision.mcCollision_as<EventMCGenerated>();
1944+
multiplicityRec = mcCollisionRec.centFT0M();
1945+
19441946
if (selectionConfig.isINELgt0 && !collision.isInelGt0()) {
19451947
return;
19461948
}
19471949
// multiplicity = collision.centFT0M();
19481950

1949-
multiplicity = -1.0;
1950-
19511951
if (cSelectMultEstimator == kFT0M) {
19521952
multiplicity = collision.centFT0M();
19531953
} else if (cSelectMultEstimator == kFT0A) {
@@ -1961,50 +1961,14 @@ struct Kstarqa {
19611961
}
19621962

19631963
hInvMass.fill(HIST("hAllRecCollisions"), multiplicity);
1964+
hInvMass.fill(HIST("hAllRecCollisionsCalib"), multiplicityRec);
19641965

19651966
if (!selectionEvent(collision, false)) {
19661967
return;
19671968
}
19681969

1969-
// // if (std::abs(collision.mcCollision().posZ()) > selectionConfig.cutzvertex || !collision.sel8()) {
1970-
// if (std::abs(collision.mcCollision().posZ()) > selectionConfig.cutzvertex) {
1971-
// return;
1972-
// }
1973-
1974-
// if (selectionConfig.isNoTimeFrameBorder && !collision.selection_bit(aod::evsel::kNoTimeFrameBorder)) {
1975-
// return;
1976-
// }
1977-
1978-
// if (selectionConfig.isTriggerTVX && !collision.selection_bit(aod::evsel::kIsTriggerTVX)) {
1979-
// return;
1980-
// }
1981-
1982-
// if (!collision.sel8()) {
1983-
// return;
1984-
// }
1985-
1986-
// if (selectionConfig.isNoSameBunchPileup && !collision.selection_bit(aod::evsel::kNoSameBunchPileup)) {
1987-
// return;
1988-
// }
1989-
// if (selectionConfig.isGoodZvtxFT0vsPV && !collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV)) {
1990-
// return;
1991-
// }
1992-
1993-
// multiplicity = collision.centFT0M();
1994-
1995-
multiplicity = -1.0;
1996-
1997-
if (cSelectMultEstimator == kFT0M) {
1998-
multiplicity = collision.centFT0M();
1999-
} else if (cSelectMultEstimator == kFT0A) {
2000-
multiplicity = collision.centFT0A();
2001-
} else if (cSelectMultEstimator == kFT0C) {
2002-
multiplicity = collision.centFT0C();
2003-
} else if (cSelectMultEstimator == kFV0A) {
2004-
multiplicity = collision.centFV0A();
2005-
} else {
2006-
multiplicity = collision.centFT0M(); // default
2007-
}
1970+
hInvMass.fill(HIST("h1RecMult"), multiplicity);
1971+
hInvMass.fill(HIST("h1RecMult2"), multiplicityRec);
20081972

20091973
hInvMass.fill(HIST("h1RecMult"), multiplicity);
20101974

@@ -2169,13 +2133,15 @@ struct Kstarqa {
21692133
mother = daughter1 + daughter2; // Kstar meson
21702134

21712135
hInvMass.fill(HIST("h2KstarRecpt2"), mothertrack1.pt(), multiplicity, std::sqrt(mothertrack1.e() * mothertrack1.e() - mothertrack1.p() * mothertrack1.p()));
2136+
hInvMass.fill(HIST("h2KstarRecptCalib2"), mothertrack1.pt(), multiplicityRec, std::sqrt(mothertrack1.e() * mothertrack1.e() - mothertrack1.p() * mothertrack1.p()));
21722137

21732138
if (applyRecMotherRapidity && mother.Rapidity() >= selectionConfig.rapidityMotherData) {
21742139
continue;
21752140
}
21762141

21772142
hInvMass.fill(HIST("h1KstarRecMass"), mother.M());
21782143
hInvMass.fill(HIST("h2KstarRecpt1"), mother.Pt(), multiplicity, mother.M());
2144+
hInvMass.fill(HIST("h2KstarRecptCalib1"), mother.Pt(), multiplicityRec, mother.M());
21792145
}
21802146
}
21812147
}

0 commit comments

Comments
 (0)