Skip to content

Commit

Permalink
Merge branch 'AliceO2Group:master' into MLandEfficiency
Browse files Browse the repository at this point in the history
  • Loading branch information
samrangy authored Feb 7, 2025
2 parents 39986a5 + f852924 commit 08a6b36
Show file tree
Hide file tree
Showing 18 changed files with 1,184 additions and 308 deletions.
4 changes: 3 additions & 1 deletion EventFiltering/filterTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ DECLARE_SOA_COLUMN(DiMuon, hasDiMuon, bool); //! dimuon trigger with
// EM dielectrons
DECLARE_SOA_COLUMN(LMeeIMR, hasLMeeIMR, bool); //! dielectron trigger for intermediate mass region
DECLARE_SOA_COLUMN(LMeeHMR, hasLMeeHMR, bool); //! dielectron trigger for high mass region
// Electron-muon pair
DECLARE_SOA_COLUMN(ElectronMuon, hasElectronMuon, bool); //! dimuon trigger with low pT on muons

// heavy flavours
DECLARE_SOA_COLUMN(HfHighPt2P, hasHfHighPt2P, bool); //! high-pT 2-prong charm hadron
Expand Down Expand Up @@ -207,7 +209,7 @@ using DiffractionBCFilter = DiffractionBCFilters::iterator;

// Dileptons & Quarkonia
DECLARE_SOA_TABLE(DqFilters, "AOD", "DqFilters", //!
filtering::SingleE, filtering::LMeeIMR, filtering::LMeeHMR, filtering::DiElectron, filtering::SingleMuLow, filtering::SingleMuHigh, filtering::DiMuon);
filtering::SingleE, filtering::LMeeIMR, filtering::LMeeHMR, filtering::DiElectron, filtering::SingleMuLow, filtering::SingleMuHigh, filtering::DiMuon, filtering::ElectronMuon);
using DqFilter = DqFilters::iterator;

// heavy flavours
Expand Down
29 changes: 16 additions & 13 deletions PWGCF/Flow/Tasks/flowGfwTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -63,26 +63,26 @@ struct FlowGfwTask {
O2_DEFINE_CONFIGURABLE(cfgCutITSclu, float, 5.0f, "minimum ITS clusters")
O2_DEFINE_CONFIGURABLE(cfgMinCentFT0C, float, 0.0f, "Minimum FT0C Centrality")
O2_DEFINE_CONFIGURABLE(cfgMaxCentFT0C, float, 100.0f, "Maximum FT0C Centrality")
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, true, "Use additional event cut on mult correlations")
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalTrackCut, bool, true, "Use additional track cut on phi")
O2_DEFINE_CONFIGURABLE(cfgUseNch, bool, true, "Use Nch for flow observables")
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, false, "Use additional event cut on mult correlations")
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalTrackCut, bool, false, "Use additional track cut on phi")
O2_DEFINE_CONFIGURABLE(cfgUseNch, bool, false, "Use Nch for flow observables")
O2_DEFINE_CONFIGURABLE(cfgNbootstrap, int, 10, "Number of subsamples")
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeights, bool, true, "Fill and output NUA weights")
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeights, bool, false, "Fill and output NUA weights")
O2_DEFINE_CONFIGURABLE(cfgEfficiency, std::string, "", "CCDB path to efficiency object")
O2_DEFINE_CONFIGURABLE(cfgAcceptance, std::string, "", "CCDB path to acceptance object")
O2_DEFINE_CONFIGURABLE(cfgMagnetField, std::string, "GLO/Config/GRPMagField", "CCDB path to Magnet field object")
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyHigh, int, 3000, "High cut on TPC occupancy")
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyLow, int, 0, "Low cut on TPC occupancy")
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2, "Custom DCA Z cut")
O2_DEFINE_CONFIGURABLE(cfgCutDCAxy, float, 0.2f, "Custom DCA XY cut")
O2_DEFINE_CONFIGURABLE(cfgNoTimeFrameBorder, bool, true, "kNoTimeFrameBorder");
O2_DEFINE_CONFIGURABLE(cfgNoITSROFrameBorder, bool, true, "kNoITSROFrameBorder");
O2_DEFINE_CONFIGURABLE(cfgNoSameBunchPileup, bool, true, "kNoSameBunchPileup");
O2_DEFINE_CONFIGURABLE(cfgIsGoodZvtxFT0vsPV, bool, true, "kIsGoodZvtxFT0vsPV");
O2_DEFINE_CONFIGURABLE(cfgNoCollInTimeRangeStandard, bool, true, "kNoCollInTimeRangeStandard");
O2_DEFINE_CONFIGURABLE(cfgEvSelkIsGoodITSLayersAll, bool, true, "kIsGoodITSLayersAll")
O2_DEFINE_CONFIGURABLE(cfgOccupancy, bool, true, "Bool for event selection on detector occupancy");
O2_DEFINE_CONFIGURABLE(cfgMultCut, bool, true, "Use additional event cut on mult correlations");
O2_DEFINE_CONFIGURABLE(cfgNoTimeFrameBorder, bool, false, "kNoTimeFrameBorder");
O2_DEFINE_CONFIGURABLE(cfgNoITSROFrameBorder, bool, false, "kNoITSROFrameBorder");
O2_DEFINE_CONFIGURABLE(cfgNoSameBunchPileup, bool, false, "kNoSameBunchPileup");
O2_DEFINE_CONFIGURABLE(cfgIsGoodZvtxFT0vsPV, bool, false, "kIsGoodZvtxFT0vsPV");
O2_DEFINE_CONFIGURABLE(cfgNoCollInTimeRangeStandard, bool, false, "kNoCollInTimeRangeStandard");
O2_DEFINE_CONFIGURABLE(cfgEvSelkIsGoodITSLayersAll, bool, false, "kIsGoodITSLayersAll")
O2_DEFINE_CONFIGURABLE(cfgOccupancy, bool, false, "Bool for event selection on detector occupancy");
O2_DEFINE_CONFIGURABLE(cfgMultCut, bool, false, "Use additional event cut on mult correlations");
O2_DEFINE_CONFIGURABLE(FineBinning, bool, false, "Manually change to fine binning")
O2_DEFINE_CONFIGURABLE(cfgTrackSelRun3ITSMatch, bool, false, "System check: Run3ITSMatch")
O2_DEFINE_CONFIGURABLE(cfgTrackSel, bool, false, "System check: track selection")
Expand Down Expand Up @@ -268,6 +268,7 @@ struct FlowGfwTask {
registry.add("ZNvsZEMcollrest", "ZNvsZEMcoll; ZEM; ZDC energy (GeV)", {HistType::kTH2F, {{{nBinsAmp, -0.5, maxZEM}, {nBinsAmp, -0.5, 2. * maxZN}}}});

// Track plots
registry.add("Nch", "N_{ch 0-5%} vs #Events of;N_{ch 0-5%};No. of Events", {HistType::kTH1D, {axisNch}});
registry.add("Events_per_Centrality_Bin", "Events_per_Centrality_Bin;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
registry.add("Global_Tracks_Nch_vs_Cent", "Global Tracks;Centrality (%); M (|#eta| < 0.8);", {HistType::kTH2D, {axisCentrality, axisNch}});

Expand Down Expand Up @@ -886,6 +887,8 @@ struct FlowGfwTask {
fillProfile(corrconfigs.at(5), bootstrapArray[sampleIndex][kc32Nch05], globalTracksNch);
fillProfile(corrconfigs.at(6), bootstrapArray[sampleIndex][kc32Nch05etagap], globalTracksNch);
fillProfile(corrconfigs.at(7), bootstrapArray[sampleIndex][kc34Nch05], globalTracksNch);

registry.fill(HIST("Nch"), globalTracksNch);
}

// Filling Flow Container
Expand All @@ -894,7 +897,7 @@ struct FlowGfwTask {
}

} // End of process
PROCESS_SWITCH(FlowGfwTask, processData, "Process analysis for Run 3 data", true);
PROCESS_SWITCH(FlowGfwTask, processData, "Process analysis for Run 3 data", false);

// Filter the Reconstructed tracks
Filter mytrackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && (nabs(aod::track::dcaXY) < cfgCutDCAxy);
Expand Down
6 changes: 6 additions & 0 deletions PWGCF/TableProducer/filterCorrelations.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -328,9 +328,15 @@ struct MultiplicitySelector {
if (doprocessFT0C) {
enabledFunctions++;
}
if (doprocessFT0CVariant1) {
enabledFunctions++;
}
if (doprocessFT0A) {
enabledFunctions++;
}
if (doprocessCentNGlobal) {
enabledFunctions++;
}
if (doprocessMCGen) {
enabledFunctions++;
}
Expand Down
34 changes: 32 additions & 2 deletions PWGDQ/Core/CutsLibrary.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,17 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
cut->AddCut(GetAnalysisCut("MCHMID"));
return cut;
}
if (!nameStr.compare("ElectronForEMu")) {
cut->AddCut(GetAnalysisCut("jpsiKineSkimmed"));
cut->AddCut(GetAnalysisCut("electronStandardQualityForO2MCdebug4"));
cut->AddCut(GetAnalysisCut("electronPIDnsigmaLoose"));
return cut;
}
if (!nameStr.compare("MuonForEMu")) {
cut->AddCut(GetAnalysisCut("muonLowPt5"));
cut->AddCut(GetAnalysisCut("muonQualityCuts"));
return cut;
}
// ///////////////////////////////////////////////
// End of Cuts for CEFP //
// ///////////////////////////////////////////////
Expand Down Expand Up @@ -3575,6 +3586,19 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
return cut;
}

if (!nameStr.compare("emu_electron_specialTest")) {
cut->AddCut(GetAnalysisCut("jpsiStandardKineForEMu"));
cut->AddCut(GetAnalysisCut("electronStandardQualityForO2MCdebug4"));
cut->AddCut(GetAnalysisCut("electronPIDnsigmaVeryVeryLoose2"));
return cut;
}

if (!nameStr.compare("emu_electron_specialTest2")) {
cut->AddCut(GetAnalysisCut("jpsiStandardKineForEMu"));
cut->AddCut(GetAnalysisCut("electronStandardQualityForO2MCdebug4"));
return cut;
}

if (!nameStr.compare("muonLooseTriggerTestCuts")) {
cut->AddCut(GetAnalysisCut("muonLooseTriggerTestCuts"));
return cut;
Expand Down Expand Up @@ -4094,6 +4118,12 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
return cut;
}

if (!nameStr.compare("jpsiStandardKineForEMu")) {
cut->AddCut(VarManager::kPt, 5.0, 1000.0);
cut->AddCut(VarManager::kEta, -0.9, 0.9);
return cut;
}

if (!nameStr.compare("lmeePrefilterKine")) {
cut->AddCut(VarManager::kPt, 0., 20.0);
cut->AddCut(VarManager::kEta, -1.2, 1.2);
Expand Down Expand Up @@ -5344,8 +5374,8 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)

if (!nameStr.compare("electronPIDnsigmaVeryVeryLoose2")) {
cut->AddCut(VarManager::kTPCnSigmaEl, -4.0, 4.0);
cut->AddCut(VarManager::kTPCnSigmaPr, 2.5, 3000.0);
cut->AddCut(VarManager::kTPCnSigmaPi, 2.5, 3000.0);
cut->AddCut(VarManager::kTPCnSigmaPr, 1.5, 3000.0);
cut->AddCut(VarManager::kTPCnSigmaPi, 1.5, 3000.0);
return cut;
}

Expand Down
2 changes: 1 addition & 1 deletion PWGDQ/DataModel/ReducedInfoTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -820,7 +820,7 @@ DECLARE_SOA_TABLE(DimuonsAll, "AOD", "RTDIMUONALL", //!
reducedpair::SVertex);

DECLARE_SOA_TABLE(DileptonsMiniTree, "AOD", "RTDILEPTMTREE", //!
reducedpair::Mass, reducedpair::Pt, reducedpair::Eta, reducedpair::CentFT0C, reducedpair::Cos2DeltaPhi);
reducedpair::Mass, reducedpair::Pt, reducedpair::Eta, reducedpair::CentFT0C, reducedpair::Cos2DeltaPhi, dilepton_track_index::Pt1, dilepton_track_index::Eta1, dilepton_track_index::Phi1, dilepton_track_index::Pt2, dilepton_track_index::Eta2, dilepton_track_index::Phi2);

using Dielectron = Dielectrons::iterator;
using StoredDielectron = StoredDielectrons::iterator;
Expand Down
53 changes: 28 additions & 25 deletions PWGDQ/Tasks/filterPP.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
//
#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <memory>
#include <cstring>
#include <TH1.h>
Expand Down Expand Up @@ -59,6 +61,7 @@ enum DQTriggers {
kSingleMuLow,
kSingleMuHigh,
kDiMuon,
kElectronMuon,
kNTriggersDQ
};
} // namespace
Expand Down Expand Up @@ -247,14 +250,14 @@ struct DQBarrelTrackSelection {
fCurrentRun = bc.runNumber();
}

uint32_t filterMap = uint32_t(0);
uint32_t filterMap = static_cast<uint32_t>(0);
trackSel.reserve(tracksBarrel.size());

VarManager::ResetValues(0, VarManager::kNBarrelTrackVariables);
for (auto& track : tracksBarrel) {
filterMap = uint32_t(0);
filterMap = static_cast<uint32_t>(0);
if (!track.has_collision()) {
trackSel(uint32_t(0));
trackSel(static_cast<uint32_t>(0));
} else {
VarManager::FillTrack<TTrackFillMap>(track);
if (fConfigQA) {
Expand All @@ -263,7 +266,7 @@ struct DQBarrelTrackSelection {
int i = 0;
for (auto cut = fTrackCuts.begin(); cut != fTrackCuts.end(); ++cut, ++i) {
if ((*cut).IsSelected(VarManager::fgValues)) {
filterMap |= (uint32_t(1) << i);
filterMap |= (static_cast<uint32_t>(1) << i);
if (fConfigQA) {
fHistMan->FillHistClass(fCutHistNames[i].Data(), VarManager::fgValues);
}
Expand Down Expand Up @@ -331,16 +334,16 @@ struct DQMuonsSelection {
template <uint32_t TMuonFillMap, typename TMuons>
void runMuonSelection(TMuons const& muons)
{
uint32_t filterMap = uint32_t(0);
uint32_t filterMap = static_cast<uint32_t>(0);
trackSel.reserve(muons.size());

VarManager::ResetValues(0, VarManager::kNMuonTrackVariables);
// fill event information which might be needed in histograms or cuts that combine track and event properties

for (auto& muon : muons) {
filterMap = uint32_t(0);
filterMap = static_cast<uint32_t>(0);
if (!muon.has_collision()) {
trackSel(uint32_t(0));
trackSel(static_cast<uint32_t>(0));
} else {
VarManager::FillTrack<TMuonFillMap>(muon);
if (fConfigQA) {
Expand All @@ -349,7 +352,7 @@ struct DQMuonsSelection {
int i = 0;
for (auto cut = fTrackCuts.begin(); cut != fTrackCuts.end(); ++cut, ++i) {
if ((*cut).IsSelected(VarManager::fgValues)) {
filterMap |= (uint32_t(1) << i);
filterMap |= (static_cast<uint32_t>(1) << i);
if (fConfigQA) {
fHistMan->FillHistClass(fCutHistNames[i].Data(), VarManager::fgValues);
}
Expand Down Expand Up @@ -386,8 +389,8 @@ struct DQFilterPPTask {
Configurable<std::string> fConfigFilterLsBarrelTracksPairs{"cfgWithBarrelLS", "false", "Comma separated list of booleans for each trigger, If true, also select like sign (--/++) barrel track pairs"};
Configurable<std::string> fConfigFilterLsMuonsPairs{"cfgWithMuonLS", "false", "Comma separated list of booleans for each trigger, If true, also select like sign (--/++) muon pairs"};

Filter filterBarrelTrackSelected = aod::dqppfilter::isDQBarrelSelected > uint32_t(0);
Filter filterMuonTrackSelected = aod::dqppfilter::isDQMuonSelected > uint32_t(0);
Filter filterBarrelTrackSelected = aod::dqppfilter::isDQBarrelSelected > static_cast<uint32_t>(0);
Filter filterMuonTrackSelected = aod::dqppfilter::isDQMuonSelected > static_cast<uint32_t>(0);

int fNBarrelCuts; // number of barrel selections
int fNMuonCuts; // number of muon selections
Expand Down Expand Up @@ -496,14 +499,14 @@ struct DQFilterPPTask {
// if the event is not selected produce tables and return
if (!collision.isDQEventSelected()) {
eventFilter(0);
dqtable(false, false, false, false, false, false, false);
dqtable(false, false, false, false, false, false, false, false);
return;
}
fStats->Fill(-1.0);

if (tracksBarrel.size() == 0 && muons.size() == 0) {
eventFilter(0);
dqtable(false, false, false, false, false, false, false);
dqtable(false, false, false, false, false, false, false, false);
return;
}

Expand All @@ -515,7 +518,7 @@ struct DQFilterPPTask {
// count the number of barrel tracks fulfilling each cut
for (auto track : tracksBarrel) {
for (int i = 0; i < fNBarrelCuts; ++i) {
if (track.isDQBarrelSelected() & (uint32_t(1) << i)) {
if (track.isDQBarrelSelected() & (static_cast<uint32_t>(1) << i)) {
objCountersBarrel[i] += 1;
}
}
Expand All @@ -526,7 +529,7 @@ struct DQFilterPPTask {
for (int i = 0; i < fNBarrelCuts; i++) {
if (fBarrelRunPairing[i]) {
if (objCountersBarrel[i] > 1) { // pairing has to be enabled and at least two tracks are needed
pairingMask |= (uint32_t(1) << i);
pairingMask |= (static_cast<uint32_t>(1) << i);
}
objCountersBarrel[i] = 0; // reset counters for selections where pairing is needed (count pairs instead)
}
Expand All @@ -539,7 +542,7 @@ struct DQFilterPPTask {
for (int icut = 0; icut < fNBarrelCuts; icut++) {
TString objStr = objArrayLS->At(icut)->GetName();
if (!objStr.CompareTo("true")) {
pairingLS |= (uint32_t(1) << icut);
pairingLS |= (static_cast<uint32_t>(1) << icut);
}
}

Expand All @@ -556,12 +559,12 @@ struct DQFilterPPTask {
VarManager::FillPair<VarManager::kDecayToEE, TTrackFillMap>(t1, t2); // compute pair quantities
for (int icut = 0; icut < fNBarrelCuts; icut++) {
// select like-sign pairs if trigger has set boolean true within fConfigFilterLsBarrelTracksPairs
if (!(pairingLS & (uint32_t(1) << icut))) {
if (!(pairingLS & (static_cast<uint32_t>(1) << icut))) {
if (t1.sign() * t2.sign() > 0) {
continue;
}
}
if (!(pairFilter & (uint32_t(1) << icut))) {
if (!(pairFilter & (static_cast<uint32_t>(1) << icut))) {
continue;
}
if (!fBarrelPairCuts[icut].IsSelected(VarManager::fgValues)) {
Expand All @@ -579,7 +582,7 @@ struct DQFilterPPTask {
// count the number of muon tracks fulfilling each selection
for (auto muon : muons) {
for (int i = 0; i < fNMuonCuts; ++i) {
if (muon.isDQMuonSelected() & (uint32_t(1) << i)) {
if (muon.isDQMuonSelected() & (static_cast<uint32_t>(1) << i)) {
objCountersMuon[i] += 1;
}
}
Expand All @@ -590,7 +593,7 @@ struct DQFilterPPTask {
for (int i = 0; i < fNMuonCuts; i++) {
if (fMuonRunPairing[i]) { // pairing has to be enabled and at least two tracks are needed
if (objCountersMuon[i] > 1) {
pairingMask |= (uint32_t(1) << i);
pairingMask |= (static_cast<uint32_t>(1) << i);
}
objCountersMuon[i] = 0; // reset counters for selections where pairing is needed (count pairs instead)
}
Expand All @@ -603,7 +606,7 @@ struct DQFilterPPTask {
for (int icut = 0; icut < fNMuonCuts; icut++) {
TString objStr = objArrayMuonLS->At(icut)->GetName();
if (!objStr.CompareTo("true")) {
pairingLS |= (uint32_t(1) << icut);
pairingLS |= (static_cast<uint32_t>(1) << icut);
}
}

Expand All @@ -620,12 +623,12 @@ struct DQFilterPPTask {
VarManager::FillPair<VarManager::kDecayToMuMu, TTrackFillMap>(t1, t2); // compute pair quantities
for (int icut = 0; icut < fNMuonCuts; icut++) {
// select like-sign pairs if trigger has set boolean true within fConfigFilterLsMuonsPairs
if (!(pairingLS & (uint32_t(1) << icut))) {
if (!(pairingLS & (static_cast<uint32_t>(1) << icut))) {
if (t1.sign() * t2.sign() > 0) {
continue;
}
}
if (!(pairFilter & (uint32_t(1) << icut))) {
if (!(pairFilter & (static_cast<uint32_t>(1) << icut))) {
continue;
}
if (!fMuonPairCuts[icut].IsSelected(VarManager::fgValues)) {
Expand All @@ -648,7 +651,7 @@ struct DQFilterPPTask {
uint64_t filter = 0;
for (int i = 0; i < fNBarrelCuts; i++) {
if (objCountersBarrel[i] >= fBarrelNreqObjs[i]) {
filter |= (uint64_t(1) << i);
filter |= (static_cast<uint64_t>(1) << i);
fStats->Fill(static_cast<float>(i));
if (i < kNTriggersDQ) {
decisions[i] = true;
Expand All @@ -657,15 +660,15 @@ struct DQFilterPPTask {
}
for (int i = 0; i < fNMuonCuts; i++) {
if (objCountersMuon[i] >= fMuonNreqObjs[i]) {
filter |= (uint64_t(1) << (i + fNBarrelCuts));
filter |= (static_cast<uint64_t>(1) << (i + fNBarrelCuts));
fStats->Fill(static_cast<float>(i + fNBarrelCuts));
if (i + fNBarrelCuts < kNTriggersDQ) {
decisions[i + fNBarrelCuts] = true;
}
}
}
eventFilter(filter);
dqtable(decisions[0], decisions[1], decisions[2], decisions[3], decisions[4], decisions[5], decisions[6]);
dqtable(decisions[0], decisions[1], decisions[2], decisions[3], decisions[4], decisions[5], decisions[6], decisions[7]);
}

void processFilterPP(MyEventsSelected::iterator const& collision, aod::BCs const& bcs,
Expand Down
Loading

0 comments on commit 08a6b36

Please sign in to comment.