Skip to content

Commit 8560570

Browse files
sigurdneseppoava
authored andcommitted
[PWGDQ] Improvements to UPC D0 MC analysis (AliceO2Group#10992)
1 parent a30caf9 commit 8560570

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
// The skimmed MC stack includes the MC truth particles corresponding to the list of user specified MC signals (see MCsignal.h)
1717
// and the MC truth particles corresponding to the reconstructed tracks selected by the specified track cuts on reconstructed data.
1818

19+
#include <cstdint>
1920
#include <iostream>
2021
#include <map>
2122
#include <string>
@@ -88,6 +89,7 @@ using MyMuonsRealignWithCov = soa::Join<aod::FwdTracksReAlign, aod::FwdTrksCovRe
8889

8990
using MyEvents = soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels>;
9091
using MyEventsWithMults = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::MultsExtra, aod::McCollisionLabels>;
92+
using MyEventsWithMultsAndRapidityGapFilter = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::MultsExtra, aod::McCollisionLabels, aod::DQRapidityGapFilter>;
9193
using MyEventsWithCent = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::McCollisionLabels>;
9294
using MyEventsWithCentAndMults = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::Mults, aod::MultsExtra, aod::McCollisionLabels>;
9395
using MFTTrackLabeled = soa::Join<o2::aod::MFTTracks, aod::McMFTTrackLabels>;
@@ -97,6 +99,7 @@ constexpr static uint32_t gkEventFillMap = VarManager::ObjTypes::BC | VarManager
9799
constexpr static uint32_t gkEventFillMapWithMults = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra;
98100
// constexpr static uint32_t gkEventFillMapWithCent = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent;
99101
constexpr static uint32_t gkEventFillMapWithCentAndMults = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent | VarManager::CollisionMult | VarManager::CollisionMultExtra;
102+
constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilter = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter;
100103
// constexpr static uint32_t gkEventMCFillMap = VarManager::ObjTypes::CollisionMC;
101104
// constexpr static uint32_t gkTrackFillMap = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackPID;
102105
constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID;
@@ -239,7 +242,7 @@ struct TableMakerMC {
239242
{
240243
// Check whether barrel or muon are enabled
241244
bool isProcessBCenabled = context.mOptions.get<bool>("processPP");
242-
bool isBarrelEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPBarrelOnly") || context.mOptions.get<bool>("processPbPbBarrelOnly") || context.mOptions.get<bool>("processPbPbWithFilterBarrelOnly"));
245+
bool isBarrelEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPBarrelOnly") || context.mOptions.get<bool>("processPbPbBarrelOnly") || context.mOptions.get<bool>("processPbPbWithFilterBarrelOnly") || context.mOptions.get<bool>("processPbPbWithFilterBarrelOnly"));
243246
bool isMuonEnabled = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPMuonOnlyBasic") || context.mOptions.get<bool>("processPPMuonOnly") || context.mOptions.get<bool>("processPPRealignedMuonOnly") || context.mOptions.get<bool>("processPbPbMuonOnly")) || context.mOptions.get<bool>("processPbPbRealignedMuonOnly"));
244247
// Make sure at least one process function is enabled
245248
if (!(isProcessBCenabled || isBarrelEnabled || isMuonEnabled)) {
@@ -558,6 +561,13 @@ struct TableMakerMC {
558561
}
559562
(reinterpret_cast<TH2I*>(fStatsList->At(0)))->Fill(1.0, static_cast<float>(o2::aod::evsel::kNsel));
560563

564+
// apply the event filter
565+
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
566+
if (!collision.eventFilter()) {
567+
continue;
568+
}
569+
}
570+
561571
auto bc = collision.template bc_as<BCsWithTimestamps>();
562572
// store the selection decisions
563573
uint64_t tag = static_cast<uint64_t>(0);
@@ -567,6 +577,10 @@ struct TableMakerMC {
567577
if (bcEvSel.globalIndex() != bc.globalIndex()) {
568578
tag |= (static_cast<uint64_t>(1) << 0);
569579
}
580+
// Put the 8 first bits of the event filter in the last 8 bits of the tag
581+
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
582+
tag |= (collision.eventFilter() << 56);
583+
}
570584

571585
// Compute BC and event quantities and fill histograms
572586
VarManager::ResetValues(0, VarManager::kNEventWiseVariables);
@@ -607,16 +621,25 @@ struct TableMakerMC {
607621
event(tag, bc.runNumber(), collision.posX(), collision.posY(), collision.posZ(), collision.numContrib(), collision.collisionTime(), collision.collisionTimeRes());
608622
if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionMult) > 0) {
609623
multTPC = collision.multTPC();
610-
multFV0A = collision.multFV0A();
611624
multFV0C = collision.multFV0C();
612-
multFT0A = collision.multFT0A();
613-
multFT0C = collision.multFT0C();
614-
multFDDA = collision.multFDDA();
615-
multFDDC = collision.multFDDC();
616625
multZNA = collision.multZNA();
617626
multZNC = collision.multZNC();
618627
multTracklets = collision.multTracklets();
619628
multTracksPV = collision.multNTracksPV();
629+
if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) {
630+
// Use the FIT signals from the nearest BC with FIT amplitude above threshold
631+
multFV0A = collision.newBcMultFV0A();
632+
multFT0A = collision.newBcMultFT0A();
633+
multFT0C = collision.newBcMultFT0C();
634+
multFDDA = collision.newBcMultFDDA();
635+
multFDDC = collision.newBcMultFDDC();
636+
} else {
637+
multFV0A = collision.multFV0A();
638+
multFT0A = collision.multFT0A();
639+
multFT0C = collision.multFT0C();
640+
multFDDA = collision.multFDDA();
641+
multFDDC = collision.multFDDC();
642+
}
620643
}
621644
if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionCent) > 0) {
622645
centFT0C = collision.centFT0C();
@@ -1394,6 +1417,13 @@ struct TableMakerMC {
13941417
fullSkimming<gkEventFillMapWithCentAndMults, gkTrackFillMapWithCov, 0u, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
13951418
}
13961419

1420+
void processPbPbWithFilterBarrelOnly(MyEventsWithMultsAndRapidityGapFilter const& collisions, aod::BCsWithTimestamps const& bcs,
1421+
MyBarrelTracksWithCov const& tracksBarrel, aod::TrackAssoc const& trackAssocs,
1422+
aod::McCollisions const& mcCollisions, aod::McParticles const& mcParticles)
1423+
{
1424+
fullSkimming<gkEventFillMapWithMultsRapidityGapFilter, gkTrackFillMapWithCov, 0u, 0u>(collisions, bcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, mcCollisions, mcParticles);
1425+
}
1426+
13971427
void processPbPbMuonOnly(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs,
13981428
MyMuonsWithCov const& tracksMuon, MFTTrackLabeled const& mftTracks,
13991429
aod::FwdTrackAssoc const& fwdTrackAssocs, aod::MFTTrackAssoc const& mftAssocs,
@@ -1428,6 +1458,7 @@ struct TableMakerMC {
14281458
PROCESS_SWITCH(TableMakerMC, processPPRealignedMuonOnly, "Build realigned muon only DQ skimmed data model typically for pp/p-Pb and UPC Pb-Pb", false);
14291459
PROCESS_SWITCH(TableMakerMC, processPbPb, "Produce both barrel and muon skims, PbPb settings", false);
14301460
PROCESS_SWITCH(TableMakerMC, processPbPbBarrelOnly, "Produce only barrel skims, PbPb settings", false);
1461+
PROCESS_SWITCH(TableMakerMC, processPbPbWithFilterBarrelOnly, "Produce only barrel skims, pp settings with rapidity gap filter ", false);
14311462
PROCESS_SWITCH(TableMakerMC, processPbPbMuonOnly, "Produce only muon skims, PbPb settings", false);
14321463
PROCESS_SWITCH(TableMakerMC, processPbPbRealignedMuonOnly, "Build realigned muon only DQ skimmed data model typically for Pb-Pb, w/o event filtering", false);
14331464
PROCESS_SWITCH(TableMakerMC, processOnlyBCs, "Analyze the BCs to store sampled lumi", false);

0 commit comments

Comments
 (0)