Skip to content

Commit c734967

Browse files
committed
Update tableMakerMC_withAssoc.cxx
Update tableMakerMC_withAssoc.cxx Update tableMakerMC_withAssoc.cxx Update tableMakerMC_withAssoc.cxx Update tableMakerMC_withAssoc.cxx
1 parent fd5118d commit c734967

File tree

1 file changed

+84
-18
lines changed

1 file changed

+84
-18
lines changed

PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx

Lines changed: 84 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include "PWGDQ/Core/MCSignalLibrary.h"
4646
#include "Common/DataModel/PIDResponse.h"
4747
#include "Common/DataModel/TrackSelectionTables.h"
48+
#include "Common/DataModel/FwdTrackReAlignTables.h"
4849
#include "Common/DataModel/CollisionAssociationTables.h"
4950
#include "DataFormatsParameters/GRPMagField.h"
5051
#include "DataFormatsParameters/GRPObject.h"
@@ -83,6 +84,7 @@ using MyBarrelTracksWithCov = soa::Join<aod::Tracks, aod::TracksExtra, aod::Trac
8384
aod::McTrackLabels>;
8485
using MyMuons = soa::Join<aod::FwdTracks, aod::McFwdTrackLabels, aod::FwdTracksDCA>;
8586
using MyMuonsWithCov = soa::Join<aod::FwdTracks, aod::FwdTracksCov, aod::McFwdTrackLabels, aod::FwdTracksDCA>;
87+
using MyMuonsRealignWithCov = soa::Join<aod::FwdTracksReAlign, aod::FwdTrksCovReAlign>;
8688

8789
using MyEvents = soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels>;
8890
using MyEventsWithMults = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::MultsExtra, aod::McCollisionLabels>;
@@ -101,6 +103,7 @@ constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::Track |
101103
// constexpr static uint32_t gkTrackFillMapWithDalitzBits = gkTrackFillMap | VarManager::ObjTypes::DalitzBits;
102104
// constexpr static uint32_t gkMuonFillMap = VarManager::ObjTypes::Muon;
103105
constexpr static uint32_t gkMuonFillMapWithCov = VarManager::ObjTypes::Muon | VarManager::ObjTypes::MuonCov;
106+
constexpr static uint32_t gkMuonRealignFillMapWithCov = VarManager::ObjTypes::MuonRealign | VarManager::ObjTypes::MuonCovRealign;
104107
// constexpr static uint32_t gkMuonFillMapWithAmbi = VarManager::ObjTypes::Muon | VarManager::ObjTypes::AmbiMuon;
105108
// constexpr static uint32_t gkMuonFillMapWithCovAmbi = VarManager::ObjTypes::Muon | VarManager::ObjTypes::MuonCov | VarManager::ObjTypes::AmbiMuon;
106109
// constexpr static uint32_t gkTrackFillMapWithAmbi = VarManager::ObjTypes::Track | VarManager::ObjTypes::AmbiTrack;
@@ -229,7 +232,7 @@ struct TableMakerMC {
229232
// Check whether barrel or muon are enabled
230233
bool isProcessBCenabled = context.mOptions.get<bool>("processPP");
231234
bool isBarrelEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPBarrelOnly") || context.mOptions.get<bool>("processPbPbBarrelOnly"));
232-
bool isMuonEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPMuonOnly") || context.mOptions.get<bool>("processPbPbMuonOnly"));
235+
bool isMuonEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPMuonOnly") || context.mOptions.get<bool>("processPPMuonRealignOnly") || context.mOptions.get<bool>("processPbPbMuonOnly") || context.mOptions.get<bool>("processPbPbMuonRealignOnly"));
233236
// Make sure at least one process function is enabled
234237
if (!(isProcessBCenabled || isBarrelEnabled || isMuonEnabled)) {
235238
LOG(fatal) << "No process function was enabled for TableMakerMC. Check it out!!!";
@@ -826,8 +829,8 @@ struct TableMakerMC {
826829
}
827830
}
828831

829-
template <uint32_t TMuonFillMap, uint32_t TMFTFillMap, typename TEvent, typename TMuons, typename TMFTTracks>
830-
void skimMuons(TEvent const& collision, TMuons const& muons, FwdTrackAssoc const& muonAssocs, aod::McParticles const& mcTracks, TMFTTracks const& /*mftTracks*/)
832+
template <uint32_t TMuonFillMap, uint32_t TMuonRealignFillMap, uint32_t TMFTFillMap, typename TEvent, typename TMuons, typename TMuonsRealign, typename TMFTTracks>
833+
void skimMuons(TEvent const& collision, TMuons const& muons, TMuonsRealign const& muonsRealign, FwdTrackAssoc const& muonAssocs, aod::McParticles const& mcTracks, TMFTTracks const& /*mftTracks*/)
831834
{
832835
// Skim the fwd-tracks (muons)
833836
// Loop over the collision-track associations, recompute track properties depending on the collision assigned, and apply track cuts for selection
@@ -868,7 +871,26 @@ struct TableMakerMC {
868871
VarManager::FillTrackCollision<TMuonFillMap>(muontrack, collision);
869872
VarManager::FillGlobalMuonRefit<TMuonFillMap>(muontrack, mfttrack, collision);
870873
} else {
871-
VarManager::FillTrackCollision<TMuonFillMap>(muon, collision);
874+
if constexpr ((static_cast<bool>(TMuonRealignFillMap)) && static_cast<int>(muon.trackType()) > 2) {
875+
// refill kinematic info and recalculate propagation in case of using realigned muons
876+
auto muonRealignSelected = muonsRealign.select(aod::fwdtrackrealign::fwdtrackId == assoc.fwdtrackId() && aod::fwdtrackrealign::collisionId == collision.globalIndex());
877+
if (muonRealignSelected.size() == 1) {
878+
for (const auto& muonRealign : muonRealignSelected) {
879+
// refill muon information with realigned tracks
880+
VarManager::FillTrack<TMuonRealignFillMap>(muonRealign);
881+
882+
if (fConfigVariousOptions.fPropMuon) {
883+
VarManager::FillPropagateMuon<TMuonRealignFillMap>(muonRealign, collision);
884+
}
885+
886+
VarManager::FillTrackCollision<TMuonRealignFillMap>(muonRealign, collision);
887+
}
888+
} else {
889+
LOGF(fatal, "Inconsistent size of realigned muon track candidates.");
890+
}
891+
} else {
892+
VarManager::FillTrackCollision<TMuonFillMap>(muon, collision);
893+
}
872894
}
873895

874896
if (fDoDetailedQA) {
@@ -980,16 +1002,35 @@ struct TableMakerMC {
9801002
VarManager::FillTrackCollision<TMuonFillMap>(muontrack, collision);
9811003
VarManager::FillGlobalMuonRefit<TMuonFillMap>(muontrack, mfttrack, collision);
9821004
} else {
983-
VarManager::FillTrackCollision<TMuonFillMap>(muon, collision);
1005+
if constexpr ((static_cast<bool>(TMuonRealignFillMap)) && static_cast<int>(muon.trackType()) > 2) {
1006+
// refill kinematic info and recalculate propagation in case of using realigned muons
1007+
auto muonRealignSelected = muonsRealign.select(aod::fwdtrackrealign::fwdtrackId == origIdx && aod::fwdtrackrealign::collisionId == collision.globalIndex());
1008+
if (muonRealignSelected.size() == 1) {
1009+
for (const auto& muonRealign : muonRealignSelected) {
1010+
// refill muon information with realigned tracks
1011+
VarManager::FillTrack<TMuonRealignFillMap>(muonRealign);
1012+
1013+
if (fConfigVariousOptions.fPropMuon) {
1014+
VarManager::FillPropagateMuon<TMuonRealignFillMap>(muonRealign, collision);
1015+
}
1016+
1017+
VarManager::FillTrackCollision<TMuonRealignFillMap>(muonRealign, collision);
1018+
}
1019+
} else {
1020+
LOGF(fatal, "Inconsistent size of realigned muon track candidates.");
1021+
}
1022+
} else {
1023+
VarManager::FillTrackCollision<TMuonFillMap>(muon, collision);
1024+
}
9841025
}
9851026
muonBasic(reducedEventIdx, mchIdx, mftIdx, fFwdTrackFilterMap[muon.globalIndex()], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kEta], VarManager::fgValues[VarManager::kPhi], muon.sign(), 0);
9861027
muonExtra(muon.nClusters(), VarManager::fgValues[VarManager::kMuonPDca], VarManager::fgValues[VarManager::kMuonRAtAbsorberEnd],
987-
muon.chi2(), muon.chi2MatchMCHMID(), muon.chi2MatchMCHMFT(),
1028+
VarManager::fgValues[VarManager::kMuonChi2], muon.chi2MatchMCHMID(), muon.chi2MatchMCHMFT(),
9881029
muon.matchScoreMCHMFT(),
9891030
muon.mchBitMap(), muon.midBitMap(),
9901031
muon.midBoards(), muon.trackType(), VarManager::fgValues[VarManager::kMuonDCAx], VarManager::fgValues[VarManager::kMuonDCAy],
9911032
muon.trackTime(), muon.trackTimeRes());
992-
if constexpr (static_cast<bool>(TMuonFillMap & VarManager::ObjTypes::MuonCov)) {
1033+
if constexpr (static_cast<bool>(TMuonFillMap & VarManager::ObjTypes::MuonCov) || static_cast<bool>(TMuonRealignFillMap & VarManager::ObjTypes::MuonCovRealign)) {
9931034
muonCov(VarManager::fgValues[VarManager::kX], VarManager::fgValues[VarManager::kY], VarManager::fgValues[VarManager::kZ], VarManager::fgValues[VarManager::kPhi], VarManager::fgValues[VarManager::kTgl], muon.sign() / VarManager::fgValues[VarManager::kPt],
9941035
VarManager::fgValues[VarManager::kMuonCXX], VarManager::fgValues[VarManager::kMuonCXY], VarManager::fgValues[VarManager::kMuonCYY], VarManager::fgValues[VarManager::kMuonCPhiX], VarManager::fgValues[VarManager::kMuonCPhiY], VarManager::fgValues[VarManager::kMuonCPhiPhi],
9951036
VarManager::fgValues[VarManager::kMuonCTglX], VarManager::fgValues[VarManager::kMuonCTglY], VarManager::fgValues[VarManager::kMuonCTglPhi], VarManager::fgValues[VarManager::kMuonCTglTgl], VarManager::fgValues[VarManager::kMuonC1Pt2X], VarManager::fgValues[VarManager::kMuonC1Pt2Y],
@@ -1004,10 +1045,10 @@ struct TableMakerMC {
10041045
} // end loop over selected muons
10051046
} // end skimMuons
10061047

1007-
template <uint32_t TEventFillMap, uint32_t TTrackFillMap, uint32_t TMuonFillMap, uint32_t TMFTFillMap, typename TEvents, typename TTracks,
1008-
typename TMuons, typename TMFTTracks, typename TTrackAssoc, typename TFwdTrackAssoc, typename TMFTTrackAssoc>
1048+
template <uint32_t TEventFillMap, uint32_t TTrackFillMap, uint32_t TMuonFillMap, uint32_t TMuonRealignFillMap, uint32_t TMFTFillMap, typename TEvents, typename TTracks,
1049+
typename TMuons, typename TMuonsRealign, typename TMFTTracks, typename TTrackAssoc, typename TFwdTrackAssoc, typename TMFTTrackAssoc>
10091050
void fullSkimming(TEvents const& collisions, BCsWithTimestamps const& bcs,
1010-
TTracks const& tracksBarrel, TMuons const& muons, TMFTTracks const& mftTracks,
1051+
TTracks const& tracksBarrel, TMuons const& muons, TMuonsRealign const& muonsRealign, TMFTTracks const& mftTracks,
10111052
TTrackAssoc const& trackAssocs, TFwdTrackAssoc const& fwdTrackAssocs, TMFTTrackAssoc const& mftAssocs,
10121053
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
10131054
{
@@ -1104,10 +1145,17 @@ struct TableMakerMC {
11041145
if (fConfigVariousOptions.fKeepBestMatch) {
11051146
skimBestMuonMatches(muons);
11061147
}
1107-
skimMuons<TMuonFillMap, TMFTFillMap>(collision, muons, groupedMuonIndices, mcParticles, mftTracks);
1148+
skimMuons<TMuonFillMap, 0u, TMFTFillMap>(collision, muons, nullptr, groupedMuonIndices, mcParticles, mftTracks);
11081149
} else {
1150+
// auto groupedMuonIndices = fwdTrackAssocs.sliceBy(fwdtrackIndicesPerCollision, origIdx);
1151+
// skimMuons<TMuonFillMap, 0u>(collision, muons, groupedMuonIndices, mcParticles, nullptr);
1152+
if constexpr (static_cast<bool>(TMuonRealignFillMap)) {
11091153
auto groupedMuonIndices = fwdTrackAssocs.sliceBy(fwdtrackIndicesPerCollision, origIdx);
1110-
skimMuons<TMuonFillMap, 0u>(collision, muons, groupedMuonIndices, mcParticles, nullptr);
1154+
skimMuons<TMuonFillMap, 0u, 0u>(collision, muons, nullptr, groupedMuonIndices, mcParticles, nullptr);
1155+
} else {
1156+
auto groupedMuonIndices = fwdTrackAssocs.sliceBy(fwdtrackIndicesPerCollision, origIdx);
1157+
skimMuons<TMuonFillMap, TMuonRealignFillMap, 0u>(collision, muons, muonsRealign, groupedMuonIndices, mcParticles, nullptr);
1158+
}
11111159
}
11121160
}
11131161
} // end loop over skimmed collisions
@@ -1256,45 +1304,61 @@ struct TableMakerMC {
12561304
aod::TrackAssoc const& trackAssocs, aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
12571305
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12581306
{
1259-
fullSkimming<gkEventFillMapWithMults, gkTrackFillMapWithCov, gkMuonFillMapWithCov, gkMFTFillMap>(collisions, bcs, tracksBarrel, tracksMuon, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1307+
fullSkimming<gkEventFillMapWithMults, gkTrackFillMapWithCov, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, tracksBarrel, tracksMuon, nullptr, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
12601308
}
12611309

12621310
void processPPBarrelOnly(MyEventsWithMults const& collisions, aod::BCsWithTimestamps const& bcs,
12631311
MyBarrelTracksWithCov const& tracksBarrel, aod::TrackAssoc const& trackAssocs,
12641312
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12651313
{
1266-
fullSkimming<gkEventFillMapWithMults, gkTrackFillMapWithCov, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
1314+
fullSkimming<gkEventFillMapWithMults, gkTrackFillMapWithCov, 0u, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
12671315
}
12681316

12691317
void processPPMuonOnly(MyEventsWithMults const& collisions, aod::BCsWithTimestamps const& bcs,
12701318
MyMuonsWithCov const& tracksMuon, MFTTrackLabeled const& mftTracks,
12711319
aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
12721320
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12731321
{
1274-
fullSkimming<gkEventFillMapWithMults, 0u, gkMuonFillMapWithCov, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1322+
fullSkimming<gkEventFillMapWithMults, 0u, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, nullptr, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1323+
}
1324+
1325+
void processPPMuonRealignOnly(MyEventsWithMults const& collisions, aod::BCsWithTimestamps const& bcs,
1326+
MyMuonsWithCov const& tracksMuon, MyMuonsRealignWithCov const& muonsRealign, MFTTrackLabeled const& mftTracks,
1327+
aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
1328+
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
1329+
{
1330+
fullSkimming<gkEventFillMapWithMults, 0u, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, nullptr, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
12751331
}
12761332

12771333
void processPbPb(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs,
12781334
MyBarrelTracksWithCov const& tracksBarrel, MyMuonsWithCov const& tracksMuon, MFTTrackLabeled const& mftTracks,
12791335
aod::TrackAssoc const& trackAssocs, aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
12801336
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12811337
{
1282-
fullSkimming<gkEventFillMapWithCentAndMults, gkTrackFillMapWithCov, gkMuonFillMapWithCov, gkMFTFillMap>(collisions, bcs, tracksBarrel, tracksMuon, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1338+
fullSkimming<gkEventFillMapWithCentAndMults, gkTrackFillMapWithCov, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, tracksBarrel, tracksMuon, nullptr, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
12831339
}
12841340

12851341
void processPbPbBarrelOnly(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs,
12861342
MyBarrelTracksWithCov const& tracksBarrel, aod::TrackAssoc const& trackAssocs,
12871343
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12881344
{
1289-
fullSkimming<gkEventFillMapWithCentAndMults, gkTrackFillMapWithCov, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
1345+
fullSkimming<gkEventFillMapWithCentAndMults, gkTrackFillMapWithCov, 0u, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
12901346
}
12911347

12921348
void processPbPbMuonOnly(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs,
12931349
MyMuonsWithCov const& tracksMuon, MFTTrackLabeled const& mftTracks,
12941350
aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
12951351
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
12961352
{
1297-
fullSkimming<gkEventFillMapWithCentAndMults, 0u, gkMuonFillMapWithCov, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1353+
fullSkimming<gkEventFillMapWithCentAndMults, 0u, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, nullptr, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
1354+
}
1355+
1356+
void processPbPbMuonRealignOnly(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs,
1357+
MyMuonsWithCov const& tracksMuon, MyMuonsRealignWithCov const& muonsRealign, MFTTrackLabeled const& mftTracks,
1358+
aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
1359+
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
1360+
{
1361+
fullSkimming<gkEventFillMapWithCentAndMults, 0u, gkMuonFillMapWithCov, 0u, gkMFTFillMap>(collisions, bcs, nullptr, tracksMuon, nullptr, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mcCollisions, mcParticles);
12981362
}
12991363

13001364
// Process the BCs and store stats for luminosity retrieval -----------------------------------------------------------------------------------
@@ -1311,9 +1375,11 @@ struct TableMakerMC {
13111375
PROCESS_SWITCH(TableMakerMC, processPP, "Produce both barrel and muon skims, pp settings", false);
13121376
PROCESS_SWITCH(TableMakerMC, processPPBarrelOnly, "Produce only barrel skims, pp settings ", false);
13131377
PROCESS_SWITCH(TableMakerMC, processPPMuonOnly, "Produce only muon skims, pp settings", false);
1378+
PROCESS_SWITCH(TableMakerMC, processPPMuonRealignOnly, "Build realigned muon only DQ skimmed data model typically for pp/p-Pb and UPC Pb-Pb", false);
13141379
PROCESS_SWITCH(TableMakerMC, processPbPb, "Produce both barrel and muon skims, PbPb settings", false);
13151380
PROCESS_SWITCH(TableMakerMC, processPbPbBarrelOnly, "Produce only barrel skims, PbPb settings", false);
13161381
PROCESS_SWITCH(TableMakerMC, processPbPbMuonOnly, "Produce only muon skims, PbPb settings", false);
1382+
PROCESS_SWITCH(TableMakerMC, processPbPbMuonRealignOnly, "Build realigned muon only DQ skimmed data model typically for Pb-Pb, w/o event filtering", false);
13171383
PROCESS_SWITCH(TableMakerMC, processOnlyBCs, "Analyze the BCs to store sampled lumi", false);
13181384
};
13191385

0 commit comments

Comments
 (0)