Skip to content

Commit 92ad5e4

Browse files
zjxiongOvOalibuild
andauthored
[PWGDQ] Update reserved number and add new table (#16602)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent b5f4799 commit 92ad5e4

7 files changed

Lines changed: 160 additions & 41 deletions

PWGDQ/Core/CutsLibrary.cxx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4113,6 +4113,17 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
41134113
return cut;
41144114
}
41154115

4116+
if (!nameStr.compare("eventStandardSel8PbPbQualityCent90")) {
4117+
cut->AddCut(VarManager::kVtxZ, -10.0, 10.0);
4118+
cut->AddCut(VarManager::kIsSel8, 0.5, 1.5);
4119+
cut->AddCut(VarManager::kIsNoTFBorder, 0.5, 1.5);
4120+
cut->AddCut(VarManager::kIsNoITSROFBorder, 0.5, 1.5);
4121+
cut->AddCut(VarManager::kIsNoSameBunch, 0.5, 1.5);
4122+
cut->AddCut(VarManager::kIsGoodZvtxFT0vsPV, 0.5, 1.5);
4123+
cut->AddCut(VarManager::kCentFT0C, 0.0, 90.0);
4124+
return cut;
4125+
}
4126+
41164127
if (!nameStr.compare("eventStandardSel8PbPbQualityGoodITSLayersAll")) { // kIsSel8 = kIsTriggerTVX && kNoITSROFrameBorder && kNoTimeFrameBorder
41174128
cut->AddCut(VarManager::kVtxZ, -10.0, 10.0);
41184129
cut->AddCut(VarManager::kIsSel8, 0.5, 1.5);
@@ -4676,6 +4687,15 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
46764687
return cut;
46774688
}
46784689

4690+
if (!nameStr.compare("acceptance_PbPb5360_y08")) {
4691+
cut->AddCut(VarManager::kMCY, -0.8, 0.8);
4692+
cut->AddCut(VarManager::kMCP1, 1.0, 1000.0);
4693+
cut->AddCut(VarManager::kMCP2, 1.0, 1000.0);
4694+
cut->AddCut(VarManager::kMCEta1, -0.8, 0.8);
4695+
cut->AddCut(VarManager::kMCEta2, -0.8, 0.8);
4696+
return cut;
4697+
}
4698+
46794699
// ---------------------------------------------------
46804700
// MC generated particle acceptance cuts
46814701

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,6 +1373,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
13731373
}
13741374
}
13751375
if (subGroupStr.Contains("globalpolarization")) {
1376+
hm->AddHistogram(histClass, "RandomPlaneAngle", "", false, 100, -TMath::Pi() / 2, TMath::Pi() / 2, VarManager::kRandomPsi2);
13761377
hm->AddHistogram(histClass, "CosThetaStarRandom", "", false, 100, -1.0, 1.0, VarManager::kCosThetaStarRandom);
13771378
hm->AddHistogram(histClass, "Cos2ThetaStarRandom_Mass", "", true, 50, 2.0, 4.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2ThetaStarRandom);
13781379
if (subGroupStr.Contains("tpc")) {

PWGDQ/DataModel/ReducedInfoTables.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@ DECLARE_SOA_COLUMN(CORR4REF, corr4ref, float); //! Ref Flow correla
152152
DECLARE_SOA_COLUMN(M11REF, m11ref, float); //! Weighted multiplicity of <<2>> for reference flow
153153
DECLARE_SOA_COLUMN(M1111REF, m1111ref, float); //! Weighted multiplicity of <<4>> for reference flow
154154
DECLARE_SOA_COLUMN(M11REFetagap, m11refetagap, float); //! Weighted multiplicity of <<2>> etagap for reference flow
155+
156+
DECLARE_SOA_COLUMN(Psi2Random, psi2random, float); //! Event plane angle from random subevent
157+
DECLARE_SOA_COLUMN(Psi2A, psi2a, float); //! Event plane angle from Q-vector A
158+
DECLARE_SOA_COLUMN(Psi2B, psi2b, float); //! Event plane angle from Q-vector B
159+
DECLARE_SOA_COLUMN(Psi2C, psi2c, float); //! Event plane angle from Q-vector C
155160
} // namespace reducedevent
156161

157162
DECLARE_SOA_TABLE_STAGED(ReducedEvents, "REDUCEDEVENT", //! Main event information table
@@ -993,6 +998,9 @@ DECLARE_SOA_TABLE(DileptonsPolarization, "AOD", "RTDILPOLAR", //!
993998
reducedpair::CosThetaRM,
994999
reducedpair::CosThetaStarTPC, reducedpair::CosThetaStarFT0A, reducedpair::CosThetaStarFT0C);
9951000

1001+
DECLARE_SOA_TABLE(DileptonsEventInfo, "AOD", "RTDILEVENTINFO", //!
1002+
cent::CentFT0C, collision::PosZ, collision::NumContrib, reducedevent::Psi2Random, reducedevent::Psi2A, reducedevent::Psi2B, reducedevent::Psi2C);
1003+
9961004
using Dielectron = Dielectrons::iterator;
9971005
using StoredDielectron = StoredDielectrons::iterator;
9981006
using Dimuon = Dimuons::iterator;
@@ -1007,6 +1015,7 @@ using DileptonMiniTree = DileptonsMiniTree::iterator;
10071015
using DileptonMiniTreeGen = DileptonsMiniTreeGen::iterator;
10081016
using DileptonMiniTreeRec = DileptonsMiniTreeRec::iterator;
10091017
using DileptonPolarization = DileptonsPolarization::iterator;
1018+
using DileptonEventInfo = DileptonsEventInfo::iterator;
10101019

10111020
// Tables for using analysis-dilepton-track with analysis-asymmetric-pairing
10121021
DECLARE_SOA_TABLE(Ditracks, "AOD", "RTDITRACK", //!

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,23 +2005,46 @@ struct AnalysisSameEventPairing {
20052005
uint32_t mcDecision = static_cast<uint32_t>(0);
20062006
bool isCorrectAssoc_leg1 = false;
20072007
bool isCorrectAssoc_leg2 = false;
2008-
dielectronList.reserve(1);
2009-
dimuonList.reserve(1);
2010-
dielectronsExtraList.reserve(1);
2011-
dimuonsExtraList.reserve(1);
2012-
dielectronInfoList.reserve(1);
2013-
dileptonInfoList.reserve(1);
2008+
2009+
// estimate reserved size
2010+
int64_t reserveSize = 0;
2011+
for (auto& event : events) {
2012+
if (event.isEventSelected_bit(0)) {
2013+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
2014+
size_t nGood = 0;
2015+
for (auto const& t : groupedAssocs) {
2016+
if constexpr (TPairType == VarManager::kDecayToEE) {
2017+
if (t.isBarrelSelected_raw()) {
2018+
nGood++;
2019+
}
2020+
} else if constexpr (TPairType == VarManager::kDecayToMuMu) {
2021+
if (t.isMuonSelected_raw()) {
2022+
nGood++;
2023+
}
2024+
}
2025+
}
2026+
reserveSize += nGood * (nGood - 1) / 2;
2027+
}
2028+
}
2029+
2030+
dielectronList.reserve(reserveSize);
2031+
dimuonList.reserve(reserveSize);
2032+
dielectronsExtraList.reserve(reserveSize);
2033+
dimuonsExtraList.reserve(reserveSize);
2034+
dielectronInfoList.reserve(reserveSize);
2035+
dileptonInfoList.reserve(reserveSize);
20142036
if (fConfigOptions.flatTables.value) {
2015-
dielectronAllList.reserve(1);
2016-
dimuonAllList.reserve(1);
2037+
dielectronAllList.reserve(reserveSize);
2038+
dimuonAllList.reserve(reserveSize);
20172039
}
20182040
if (useMiniTree.fConfigMiniTree) {
2019-
dileptonMiniTreeGen.reserve(1);
2020-
dileptonMiniTreeRec.reserve(1);
2041+
dileptonMiniTreeGen.reserve(reserveSize);
2042+
dileptonMiniTreeRec.reserve(reserveSize);
20212043
}
20222044
if (fConfigOptions.polarTables.value) {
2023-
dileptonPolarList.reserve(1);
2045+
dileptonPolarList.reserve(reserveSize);
20242046
}
2047+
20252048
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0);
20262049
constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::ReducedTrackBarrelCov) > 0);
20272050

PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1669,20 +1669,41 @@ struct AnalysisSameEventPairing {
16691669
uint32_t mcDecision = static_cast<uint32_t>(0);
16701670
bool isCorrectAssoc_leg1 = false;
16711671
bool isCorrectAssoc_leg2 = false;
1672-
dielectronList.reserve(1);
1673-
// dimuonList.reserve(1);
1674-
dielectronsExtraList.reserve(1);
1675-
// dimuonsExtraList.reserve(1);
1676-
dielectronInfoList.reserve(1);
1677-
dileptonInfoList.reserve(1);
1672+
1673+
// estimate reserved size
1674+
int64_t reserveSize = 0;
1675+
for (auto& event : events) {
1676+
if (event.isEventSelected_bit(0)) {
1677+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
1678+
size_t nGood = 0;
1679+
for (auto const& t : groupedAssocs) {
1680+
if constexpr (TPairType == VarManager::kDecayToEE) {
1681+
if (t.isBarrelSelected_raw()) {
1682+
nGood++;
1683+
}
1684+
}
1685+
/*else if constexpr (TPairType == VarManager::kDecayToMuMu) {
1686+
if (t.isMuonSelected_raw()) {
1687+
nGood++;
1688+
}
1689+
}*/
1690+
}
1691+
reserveSize += nGood * (nGood - 1) / 2;
1692+
}
1693+
}
1694+
1695+
dielectronList.reserve(reserveSize);
1696+
dielectronsExtraList.reserve(reserveSize);
1697+
dielectronInfoList.reserve(reserveSize);
1698+
dileptonInfoList.reserve(reserveSize);
16781699
if (fConfigOptions.flatTables.value) {
1679-
dielectronAllList.reserve(1);
1680-
// dimuonAllList.reserve(1);
1700+
dielectronAllList.reserve(reserveSize);
16811701
}
16821702
if (fConfigOptions.fConfigMiniTree) {
1683-
dileptonMiniTreeGen.reserve(1);
1684-
dileptonMiniTreeRec.reserve(1);
1703+
dileptonMiniTreeGen.reserve(reserveSize);
1704+
dileptonMiniTreeRec.reserve(reserveSize);
16851705
}
1706+
16861707
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);
16871708
constexpr bool trackHasCov = ((TTrackFillMap & VarManager::ObjTypes::TrackCov) > 0);
16881709

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,7 @@ struct AnalysisSameEventPairing {
12981298
Produces<aod::DileptonsInfo> dileptonInfoList;
12991299
Produces<aod::JPsieeCandidates> PromptNonPromptSepTable;
13001300
Produces<aod::DileptonPolarization> dileptonPolarList;
1301+
Produces<aod::DileptonsEventInfo> dileptonEventInfoList;
13011302

13021303
o2::base::MatLayerCylSet* fLUT = nullptr;
13031304
int fCurrentRun; // needed to detect if the run changed and trigger update of calibrations etc.
@@ -1403,7 +1404,7 @@ struct AnalysisSameEventPairing {
14031404

14041405
void init(o2::framework::InitContext& context)
14051406
{
1406-
fEnableBarrelHistos = context.mOptions.get<bool>("processAllSkimmed") || context.mOptions.get<bool>("processBarrelOnlySkimmed") || context.mOptions.get<bool>("processBarrelOnlyWithCollSkimmed") || context.mOptions.get<bool>("processBarrelOnlySkimmedNoCov") || context.mOptions.get<bool>("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get<bool>("processBarrelOnlyWithQvectorCentrSkimmedNoCov");
1407+
fEnableBarrelHistos = context.mOptions.get<bool>("processAllSkimmed") || context.mOptions.get<bool>("processBarrelOnlySkimmed") || context.mOptions.get<bool>("processBarrelOnlyWithCollSkimmed") || context.mOptions.get<bool>("processBarrelOnlySkimmedNoCov") || context.mOptions.get<bool>("processBarrelOnlySkimmedNoCovWithMultExtra") || context.mOptions.get<bool>("processBarrelOnlyWithQvectorCentrSkimmedNoCov") || context.mOptions.get<bool>("processBarrelOnlyWithQvectorCentrSkimmed");
14071408
fEnableBarrelMixingHistos = context.mOptions.get<bool>("processMixingAllSkimmed") || context.mOptions.get<bool>("processMixingBarrelSkimmed") || context.mOptions.get<bool>("processMixingBarrelSkimmedFlow") || context.mOptions.get<bool>("processMixingBarrelWithQvectorCentrSkimmedNoCov");
14081409
fEnableBarrelMixingHistos |= fConfigRunMixingAcrossTFs;
14091410
fEnableMuonHistos = context.mOptions.get<bool>("processAllSkimmed") || context.mOptions.get<bool>("processMuonOnlySkimmed") || context.mOptions.get<bool>("processMuonOnlySkimmedMultExtra") || context.mOptions.get<bool>("processMuonOnlySkimmedFlow");
@@ -1838,21 +1839,43 @@ struct AnalysisSameEventPairing {
18381839
// Reserve capacity for the output tables to avoid repeated reallocations
18391840
// inside the Arrow builders. Unused capacity is virtual address space
18401841
// only — pages are not faulted in until written.
1841-
auto nAssocs = assocs.size();
1842-
dielectronList.reserve(nAssocs);
1843-
dimuonList.reserve(nAssocs);
1844-
dielectronsExtraList.reserve(nAssocs);
1845-
dielectronInfoList.reserve(nAssocs);
1846-
dimuonsExtraList.reserve(nAssocs);
1847-
dileptonInfoList.reserve(nAssocs);
1848-
dileptonFlowList.reserve(nAssocs);
1842+
// estimate reserved size
1843+
int64_t reserveSize = 0;
1844+
for (auto& event : events) {
1845+
if (event.isEventSelected_bit(0)) {
1846+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
1847+
size_t nGood = 0;
1848+
for (auto const& t : groupedAssocs) {
1849+
if constexpr (TPairType == VarManager::kDecayToEE) {
1850+
if (t.isBarrelSelected_raw()) {
1851+
nGood++;
1852+
}
1853+
} else if constexpr (TPairType == VarManager::kDecayToMuMu) {
1854+
if (t.isMuonSelected_raw()) {
1855+
nGood++;
1856+
}
1857+
}
1858+
}
1859+
reserveSize += nGood * (nGood - 1) / 2;
1860+
}
1861+
}
1862+
1863+
dielectronList.reserve(reserveSize);
1864+
dimuonList.reserve(reserveSize);
1865+
dielectronsExtraList.reserve(reserveSize);
1866+
dielectronInfoList.reserve(reserveSize);
1867+
dimuonsExtraList.reserve(reserveSize);
1868+
dileptonInfoList.reserve(reserveSize);
1869+
dileptonFlowList.reserve(reserveSize);
18491870
if (fConfigOptions.flatTables.value) {
1850-
dielectronAllList.reserve(nAssocs);
1851-
dimuonAllList.reserve(nAssocs);
1871+
dielectronAllList.reserve(reserveSize);
1872+
dimuonAllList.reserve(reserveSize);
18521873
}
18531874
if (fConfigOptions.polarTables.value) {
1854-
dileptonPolarList.reserve(nAssocs);
1875+
dileptonPolarList.reserve(reserveSize);
1876+
dileptonEventInfoList.reserve(reserveSize);
18551877
}
1878+
18561879
fAmbiguousPairs.clear();
18571880
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::ReducedEventQvector) > 0);
18581881
constexpr bool eventHasQvectorCentr = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);
@@ -1940,6 +1963,7 @@ struct AnalysisSameEventPairing {
19401963
VarManager::fgValues[VarManager::kCosThetaPP], VarManager::fgValues[VarManager::kPhiPP], VarManager::fgValues[VarManager::kPhiTildePP],
19411964
VarManager::fgValues[VarManager::kCosThetaRM],
19421965
VarManager::fgValues[VarManager::kCosThetaStarTPC], VarManager::fgValues[VarManager::kCosThetaStarFT0A], VarManager::fgValues[VarManager::kCosThetaStarFT0C]);
1966+
dileptonEventInfoList(VarManager::fgValues[VarManager::kCentFT0C], VarManager::fgValues[VarManager::kVtxZ], VarManager::fgValues[VarManager::kVtxNcontrib], VarManager::fgValues[VarManager::kRandomPsi2], VarManager::fgValues[VarManager::kPsi2A], VarManager::fgValues[VarManager::kPsi2B], VarManager::fgValues[VarManager::kPsi2C]);
19431967
}
19441968
if constexpr (trackHasCov && TTwoProngFitter) {
19451969
dielectronsExtraList(t1.globalIndex(), t2.globalIndex(), VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingLzProjected], VarManager::fgValues[VarManager::kVertexingLxyProjected]);
@@ -2837,6 +2861,13 @@ struct AnalysisSameEventPairing {
28372861
runSameEventPairing<false, VarManager::kDecayToEE, gkEventFillMapWithQvectorCentr, gkTrackFillMap>(events, trackAssocsPerCollision, barrelAssocs, barrelTracks);
28382862
}
28392863

2864+
void processBarrelOnlyWithQvectorCentrSkimmed(MyEventsQvectorCentrSelected const& events,
2865+
soa::Join<aod::ReducedTracksAssoc, aod::BarrelTrackCuts, aod::Prefilter> const& barrelAssocs,
2866+
MyBarrelTracksWithCovWithAmbiguities const& barrelTracks)
2867+
{
2868+
runSameEventPairing<true, VarManager::kDecayToEE, gkEventFillMapWithQvectorCentr, gkTrackFillMapWithCov>(events, trackAssocsPerCollision, barrelAssocs, barrelTracks);
2869+
}
2870+
28402871
void processMuonOnlySkimmed(MyEventsVtxCovSelected const& events,
28412872
soa::Join<aod::ReducedMuonsAssoc, aod::MuonTrackCuts> const& muonAssocs, MyMuonTracksWithCovWithAmbiguities const& muons)
28422873
{
@@ -2918,6 +2949,7 @@ struct AnalysisSameEventPairing {
29182949
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks and with collision information", false);
29192950
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedNoCovWithMultExtra, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with MultsExtra", false);
29202951
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmedNoCov, "Run barrel only pairing (no covariances), with skimmed tracks, with Qvector from central framework", false);
2952+
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlyWithQvectorCentrSkimmed, "Run barrel only pairing (no covariances), with skimmed tracks, with collision information, with Qvector from central framework", false);
29212953
PROCESS_SWITCH(AnalysisSameEventPairing, processBarrelOnlySkimmedFlow, "Run barrel only pairing, with skimmed tracks and with flow", false);
29222954
PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmed, "Run muon only pairing, with skimmed tracks", false);
29232955
PROCESS_SWITCH(AnalysisSameEventPairing, processMuonOnlySkimmedMultExtra, "Run muon only pairing, with skimmed tracks", false);

PWGDQ/Tasks/tableReader_withAssoc_direct.cxx

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,16 +1637,29 @@ struct AnalysisSameEventPairing {
16371637
int sign1 = 0;
16381638
int sign2 = 0;
16391639

1640-
dielectronList.reserve(1);
1641-
// dimuonList.reserve(1);
1642-
dielectronsExtraList.reserve(1);
1643-
// dimuonsExtraList.reserve(1);
1644-
dielectronInfoList.reserve(1);
1645-
dileptonInfoList.reserve(1);
1640+
// estimate reserved size
1641+
int64_t reserveSize = 0;
1642+
for (auto& event : events) {
1643+
if (event.isEventSelected_bit(0)) {
1644+
auto groupedAssocs = assocs.sliceBy(preslice, event.globalIndex());
1645+
size_t nGood = 0;
1646+
for (auto const& t : groupedAssocs) {
1647+
if constexpr (TPairType == VarManager::kDecayToEE) {
1648+
if (t.isBarrelSelected_raw()) {
1649+
nGood++;
1650+
}
1651+
}
1652+
}
1653+
reserveSize += nGood * (nGood - 1) / 2;
1654+
}
1655+
}
16461656

1657+
dielectronList.reserve(reserveSize);
1658+
dielectronsExtraList.reserve(reserveSize);
1659+
dielectronInfoList.reserve(reserveSize);
1660+
dileptonInfoList.reserve(reserveSize);
16471661
if (fConfigOptions.flatTables.value) {
1648-
dielectronAllList.reserve(1);
1649-
// dimuonAllList.reserve(1);
1662+
dielectronAllList.reserve(reserveSize);
16501663
}
16511664

16521665
constexpr bool eventHasQvector = ((TEventFillMap & VarManager::ObjTypes::CollisionQvect) > 0);

0 commit comments

Comments
 (0)