Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
bebb508
[PWGLF] debugging angular correlation pp histo filling (#10762)
chiarapinto Apr 7, 2025
521ec55
[PWGUD] personal task modification (#10781)
rolavick Apr 7, 2025
efa6651
[PWGLF] adding Q-vec amplitude to switch to SP flow (#10782)
chiarapinto Apr 7, 2025
4510ff5
[PWGJE] fix tracks hist and add fill MCP weighted events (#10743)
wefeng1110 Apr 7, 2025
259fce3
[PWGEM/Dilepton] update skimmerPrimaryMuon.cxx (#10780)
dsekihat Apr 7, 2025
defbab4
[Tutorial] Add an example of a configurable expression column (#10779)
aalkin Apr 8, 2025
e80f47d
[Common] update fwdtrackPropagation.cxx (#10773)
dsekihat Apr 8, 2025
53841c3
[PWGUD] Slight rework of preselection (#10788)
rolavick Apr 8, 2025
ffdfb1f
[PWGCF] LambdaR2Correlation Update (#10785)
yashpatley Apr 8, 2025
ccf6872
[PWGCF] IdentifiedBF Removed references to McParticles in irrelevant …
bghanley1995 Apr 8, 2025
0b50091
[PWGCF] Add MCRec for closure test (#10786)
fuchuncui Apr 8, 2025
7f3a379
[PWGCF] FemtoUniverse: V0V0 pair fractions for MC truth (#10787)
alicja-pp Apr 9, 2025
6a9369f
[PWGEM/PhotonMeson] Add HeavyNeutralMeson analysis task (#10790)
nstrangm Apr 9, 2025
bbeb057
[Trigger] Adding to external histograms the AnalysedTriggers (#10789)
lucamicheletti93 Apr 9, 2025
3c839fa
[PWGJE] Fix histgrams for PID (#10777)
ynishida-style Apr 9, 2025
d18c6c7
[PWGLF] angularCorrelationsInJets.cxx: fixed track filter, cleared up…
ljoergen Apr 9, 2025
9951fb7
[PWGDQ] Removing ambiguous histogram filling (#10801)
lucamicheletti93 Apr 9, 2025
82c3b4c
[PWGHF] Fix unbound index issue in XiC0 tree creator (#10710)
Tao-Fang Apr 9, 2025
f15a5e6
[PWGDQ] Adding a process function for V0 tagged tracks in pp, without…
iarsene Apr 9, 2025
493555a
[PWGUD] Adding new table producer (#10797)
rolavick Apr 9, 2025
d5fa083
[PWGHF] Add tagging of D* -> D0 pi -> K pi pi pi0 at gen level (#10802)
fgrosa Apr 9, 2025
ee90738
[PWGLF] angularCorrelationsInJets.cxx: fixed QC histogram availabilit…
ljoergen Apr 10, 2025
269a63c
[ALICE3] Additional QA histograms to multicharm task (#10795)
jesgum Apr 10, 2025
6901c9b
[PWGLF] task to for nuclei (#10758)
jtanwar2212 Apr 10, 2025
0c6b45e
[PWGHF] Fix histo name in charm polarisation task (#10814)
fgrosa Apr 11, 2025
743ce90
[PWGHF] taskFlow.cxx: change binning in histograms (#10796)
AlexianL Apr 11, 2025
27fbc27
[PWGLF] PWGMM:Lumi: Changes onn rate histo axis (#10815)
JosueMtzGar Apr 11, 2025
c81e279
[PWGDQ] Adding MCSignal for POWHEG Drell-Yan muon selection (#10817)
sahilupadhyaya92 Apr 11, 2025
2494835
[DPG] Update eventSelectionQa.cxx - add dEdx vs occupancy QA histo (#…
altsybee Apr 11, 2025
ee1ae43
[PWGDQ] Adding extra signals for muclei and removing histos from tabl…
lucamicheletti93 Apr 11, 2025
a98630b
[PWGHF] Add more event variables to the B derived data creator (#10823)
fgrosa Apr 12, 2025
3d8e362
[PWGHF,Trigger] Additional pT min cut on D0 from Lc* (#10826)
apalasciano Apr 12, 2025
7972d4b
[PWGEM/Dilepton] remove unnecessary histogram (#10827)
dsekihat Apr 12, 2025
9b54659
[PWGJE] Histograms for MC study (#10818)
arvindkhuntia Apr 12, 2025
4ec091b
[PWGHF,Trigger] Add Bc decay to D0K into the HF filter (#10820)
zhangbiao-phy Apr 12, 2025
7b6e3e9
[PWGEM/Dilepton] update matchingMFT.cxx in MC (#10831)
dsekihat Apr 13, 2025
69b8e67
[PWGLF] Strangeness builder work: PCM treatment, bufferizing option, …
ddobrigk Apr 13, 2025
5c53903
[PWGHF] Fix B+ selection in derived data creator (#10829)
nzardosh Apr 13, 2025
fc1ff0a
[PWGEM/Dilepton] add BC info (#10832)
dsekihat Apr 13, 2025
6e6dba1
[PWGEM/Dilepton] update matchingMFT.cxx (#10833)
dsekihat Apr 13, 2025
b842771
[PWGCF] Removed magic numbers from the code and changed the use of pa…
JStaa Apr 14, 2025
3ae0253
[PWGLF] v0 analysis vs multiplicity: fix selections add QA plots add…
ercolessi Apr 14, 2025
7de5051
[PWGDQ] Add MC signals of muons and electrons decay from HF and LF me…
MaolinZH Apr 14, 2025
5381fdf
[PWGHF] Fix tagging of gen D0 mesons in candidateCreatorDstar (#10837)
fgrosa Apr 14, 2025
afffef2
[PWGHF,Trigger] Fix the mass range of Bc in Hf filter task (#10843)
zhangbiao-phy Apr 14, 2025
fcef305
[PWGEM/Dilepton] support RCT flag (#10841)
dsekihat Apr 14, 2025
8b31d07
[PWGCF] Update lambdaR2Correlation.cxx (#10838)
yashpatley Apr 14, 2025
88b6163
[PWGEM/PhotonMeson,EventFiltering] Separate omega and eta' QA histogr…
nstrangm Apr 14, 2025
56a24f1
[PWGEM/Dilepton] update RCT selection (#10848)
dsekihat Apr 14, 2025
2989f90
[PWGLF,Trigger] Add V0 with He3, triton femto, and tracked 3 body tri…
mpuccio Apr 14, 2025
87a7a91
[PWGEM/Dilepton] update matchingMFT.cxx (#10849)
dsekihat Apr 14, 2025
8d34811
[PWGLF] Add new variable in THnSparse (#10850)
skundu692 Apr 14, 2025
5981b31
[PWGLF] Add and fix for code test using kaon (#10776)
sangwoo184 Apr 15, 2025
8dcabfb
[Common] Cleanup CMakeLists (#10852)
ddobrigk Apr 15, 2025
4653bdb
[PWGHF] small bug fixed in sigmaC task, add Thns for gen level (#10842)
Mingyu3360715 Apr 15, 2025
ad9e095
[PWGLF] updated existing flow code for spin alignment study (#10851)
prottayCMT Apr 15, 2025
3392b83
[PWGLF] protect against empty / problematic DFs (#10853)
ddobrigk Apr 15, 2025
2c30cf3
[PWGLF] initial task for lambda correlation study (#10810)
prottayCMT Apr 15, 2025
1b283a3
[PWGLF] added tof mass cut (#10844)
mherzer28 Apr 15, 2025
5011eee
[PWGLF] Add harmonics selection (#10858)
marcobianchi463 Apr 15, 2025
3d939b1
[PWGHF] Fixes for OmegaC0 workflows (#10857)
fcatalan92 Apr 15, 2025
74727d0
[PWGCF] Added track density cuts (#10828)
Preet-Bhanjan Apr 15, 2025
27640bd
[PWGCF] Remove superfluous track cut (#10855)
EmilGorm Apr 15, 2025
e9333d4
[PWGEM/Dilepton] update DCA calculation (#10861)
dsekihat Apr 15, 2025
5278d57
[PWGCF] DptDpt - Tracking the insertion of pT bins of interest (#10864)
victor-gonzalez Apr 15, 2025
1e94f99
[PWGLF] Chk892Flow - Add RCT flag Checker (#10867)
BongHwi Apr 15, 2025
da01790
Improve O2 linter (#10824)
vkucera Apr 15, 2025
c9852e9
[PWGCF] FemtoUniverse -- Add D+ to MC Truth (#10866)
zchochul Apr 15, 2025
d1dc0b0
[PWGCF] jFlucEfficiencyTask - Add track selection systematics (#10865)
BongHwi Apr 15, 2025
ad73e61
[PWGLF] Updates for Xi(1530)0 Analysis code for PbPb (#10730)
mjkim525 Apr 16, 2025
2bdb511
[PWGLF] update v0v0 selections (#10856)
jikim1290 Apr 16, 2025
1c33e57
[PWGLF] v0ptinvmassplots Small fixes (#10808)
nkaratze Apr 16, 2025
34e3636
Strangeness filter without strangeness builder (#10873)
ChiaraDeMartin95 Apr 16, 2025
2d85641
[PWGJE] Jet Fragmentation & V0 QA (#10845)
GijsvWeelden Apr 16, 2025
82331e7
O2 linter: Fix new lines of the result message in GitHub mode (#10874)
vkucera Apr 16, 2025
c0e8ef5
[PWGLF] angularCorrelationsInJets.cxx: improved resource use (#10854)
ljoergen Apr 16, 2025
5179f01
[PWGJE,EMCAL-670] Add BC selection to EMCal QA task (#10847)
mhemmer-cern Apr 16, 2025
6a56488
[PWGLF] Resonance Framework: Add RCT Flag checker (#10859)
BongHwi Apr 16, 2025
c1841fc
[PWGCF] fix bugs about MCGen hLocalDensity and track selection (#10872)
fuchuncui Apr 16, 2025
0646804
[PWGCF] Invariant mass method 2-prong generic candidate finding (#10882)
jaelpark Apr 16, 2025
4c76e0f
[PWGCF] DptDpt - Increasing the level of pT bins tracking (#10887)
victor-gonzalez Apr 16, 2025
9e063c5
[PWGLF] added histograms for pt unfolding (#10884)
chiarapinto Apr 17, 2025
3761380
[PWGLF] angularCorrelationsInJets.cxx: fixed missing minus sign (#10878)
ljoergen Apr 17, 2025
31e5fe0
[PWGJE] phiInJets.cxx : Adding a configuration to adjust the mass ran…
JimunLee Apr 17, 2025
1daec49
[ALICE3] Add further selections to alice3 multicharm task (#10883)
jesgum Apr 17, 2025
1521352
[PWGLF] Add flag for PV casc contributors (#10875)
fmazzasc Apr 17, 2025
48c3403
[PWGJE] backgroundAnalysis: binning, spectraCharged/trackEff: fix .mc…
aimeric-landou Apr 17, 2025
fbac4b1
Merge branch 'AliceO2Group:master' into master
nkaratze Apr 17, 2025
ab7d48d
Please consider the following formatting changes
alibuild Apr 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ALICE3/TableProducer/OTF/onTheFlyTracker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ struct OnTheFlyTracker {
histos.add("h2dVerticesVsContributors", "h2dVerticesVsContributors", kTH2F, {axes.axisMultiplicity, axes.axisNVertices});
histos.add("hRecoVsSimMultiplicity", "hRecoVsSimMultiplicity", kTH2F, {axes.axisMultiplicity, axes.axisMultiplicity});
histos.add("h2dDCAxy", "h2dDCAxy", kTH2F, {axes.axisMomentum, axes.axisDCA});
histos.add("h2dDCAz", "h2dDCAz", kTH2F, {axes.axisMomentum, axes.axisDCA});

histos.add("hSimTrackX", "hSimTrackX", kTH1F, {axes.axisX});
histos.add("hRecoTrackX", "hRecoTrackX", kTH1F, {axes.axisX});
Expand Down Expand Up @@ -1042,6 +1043,7 @@ struct OnTheFlyTracker {
}
if (doExtraQA && (!extraQAwithoutDecayDaughters || (extraQAwithoutDecayDaughters && !trackParCov.isDecayDau))) {
histos.fill(HIST("h2dDCAxy"), trackParametrization.getPt(), dcaXY * 1e+4); // in microns, please
histos.fill(HIST("h2dDCAz"), trackParametrization.getPt(), dcaZ * 1e+4); // in microns, please
histos.fill(HIST("hTrackXatDCA"), trackParametrization.getX());
}
if (cascadeDecaySettings.doXiQA) {
Expand Down Expand Up @@ -1107,6 +1109,7 @@ struct OnTheFlyTracker {
}
if (doExtraQA && (!extraQAwithoutDecayDaughters || (extraQAwithoutDecayDaughters && !trackParCov.isDecayDau))) {
histos.fill(HIST("h2dDCAxy"), trackParametrization.getPt(), dcaXY * 1e+4); // in microns, please
histos.fill(HIST("h2dDCAz"), trackParametrization.getPt(), dcaZ * 1e+4); // in microns, please
histos.fill(HIST("hTrackXatDCA"), trackParametrization.getX());
}
tracksDCA(dcaXY, dcaZ);
Expand Down
134 changes: 105 additions & 29 deletions ALICE3/TableProducer/alice3-multicharm.cxx

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions Common/TableProducer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ add_subdirectory(PID)

o2physics_add_dpl_workflow(trackextension
SOURCES trackextension.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(trackselection
Expand Down Expand Up @@ -59,12 +59,12 @@ o2physics_add_dpl_workflow(ft0-corrected-table

o2physics_add_dpl_workflow(track-propagation
SOURCES trackPropagation.cxx
PUBLIC_LINK_LIBRARIES O2::DetectorsBase O2Physics::AnalysisCore
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(track-propagation-tester
SOURCES trackPropagationTester.cxx
PUBLIC_LINK_LIBRARIES O2::DetectorsBase O2Physics::AnalysisCore O2Physics::trackSelectionRequest
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::trackSelectionRequest
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(calo-clusters
Expand Down Expand Up @@ -92,7 +92,7 @@ o2physics_add_dpl_workflow(fwdtrack-to-collision-associator

o2physics_add_dpl_workflow(mccollisionextra
SOURCES mcCollsExtra.cxx
PUBLIC_LINK_LIBRARIES O2::DetectorsBase O2Physics::AnalysisCore
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(qvector-table
Expand Down
92 changes: 8 additions & 84 deletions Common/TableProducer/fwdtrackPropagation.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,8 @@ struct FwdTrackPropagation {
Configurable<float> maxPDCAforSmallR{"maxPDCAforSmallR", 594.f, "max. pDCA for small R at absorber end"};
Configurable<float> maxMatchingChi2MCHMFT{"maxMatchingChi2MCHMFT", 50.f, "max. chi2 for MCH-MFT matching"};
Configurable<float> maxChi2SA{"maxChi2SA", 1e+6, "max. chi2 for standalone muon"};
Configurable<float> maxChi2GL{"maxChi2GL", 1e+6, "max. chi2 for global muon"};
Configurable<float> maxChi2GL{"maxChi2GL", 50.f, "max. chi2 for global muon"};
Configurable<bool> refitGlobalMuon{"refitGlobalMuon", true, "flag to refit global muon"};
Configurable<bool> applyDEtaDPhi{"cfgApplyDEtaDPhi", false, "flag to apply deta-dphi elliptic cut"};
Configurable<float> minDEta{"minDEta", 0.1, "min deta between MFT-MCH-MID and its attached MID-MCH at PV"};
Configurable<float> minDPhi{"minDPhi", 0.1, "min dphi between MFT-MCH-MID and its attached MID-MCH at PV"};

HistogramRegistry fRegistry{"fRegistry"};
static constexpr std::string_view muon_types[5] = {"MFTMCHMID/", "MFTMCHMIDOtherMatch/", "MFTMCH/", "MCHMID/", "MCH/"};
Expand Down Expand Up @@ -193,89 +190,16 @@ struct FwdTrackPropagation {
return true;
}

template <typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TTarget, typename TCandidates>
bool isBestMatch(TCollision const& collision, TTarget const& target, TCandidates const& candidates)
template <typename TCollision, typename TFwdTrack, typename TFwdTracks, typename TMFTTracks>
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TFwdTracks const&, TMFTTracks const&, const bool isAmbiguous)
{
std::map<int64_t, float> map_chi2MFTMCH;
for (const auto& matchedtrack : candidates) { // MFT-MCH-MID or MFT-MCH
if (matchedtrack.trackType() != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
continue;
}
o2::dataformats::GlobalFwdTrack propmuonAtPV = propagateMuon(matchedtrack, collision, propagationPoint::kToVertex);
float eta = propmuonAtPV.getEta();
float phi = propmuonAtPV.getPhi();
if (refitGlobalMuon) {
const auto& mfttrack = matchedtrack.template matchMFTTrack_as<TMFTTracks>();
eta = mfttrack.eta();
phi = mfttrack.phi();
}
o2::math_utils::bringTo02Pi(phi);
if (eta < minEtaGL || maxEtaGL < eta) {
continue;
}

const auto& mchtrack = matchedtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = propagateMuon(mchtrack, collision, propagationPoint::kToVertex);
float etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
o2::math_utils::bringTo02Pi(phiMatchedMCHMID);

float deta = etaMatchedMCHMID - eta;
float dphi = phiMatchedMCHMID - phi;
o2::math_utils::bringToPMPi(dphi);
if (applyDEtaDPhi && std::sqrt(std::pow(deta / minDEta, 2) + std::pow(dphi / minDPhi, 2)) > 1.f) {
continue;
}

if (matchedtrack.chi2() < 0.f || maxChi2GL < matchedtrack.chi2()) {
continue;
}

float rAtAbsorberEnd = matchedtrack.rAtAbsorberEnd(); // this works only for GlobalMuonTrack
if (rAtAbsorberEnd < minRabsGL || maxRabs < rAtAbsorberEnd) {
continue;
}
o2::dataformats::GlobalFwdTrack propmuonAtDCA = propagateMuon(matchedtrack, collision, propagationPoint::kToDCA);
float dcaX = propmuonAtDCA.getX() - collision.posX();
float dcaY = propmuonAtDCA.getY() - collision.posY();
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY);
if (maxDCAxy < dcaXY) {
continue;
}

o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = propagateMuon(mchtrack, collision, propagationPoint::kToDCA);
float dcaX_Matched = propmuonAtDCA_Matched.getX() - collision.posX();
float dcaY_Matched = propmuonAtDCA_Matched.getY() - collision.posY();
float dcaXY_Matched = std::sqrt(dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
float pDCA = mchtrack.p() * dcaXY_Matched;

if (rAtAbsorberEnd < midRabs ? pDCA > maxPDCAforSmallR : pDCA > maxPDCAforLargeR) {
continue;
}

map_chi2MFTMCH[matchedtrack.globalIndex()] = matchedtrack.chi2MatchMCHMFT();
}
if (map_chi2MFTMCH.begin()->first != target.globalIndex()) { // search for minimum matching chi2
map_chi2MFTMCH.clear();
return false;
}
map_chi2MFTMCH.clear();
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && (fwdtrack.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT || fwdtrack.chi2() > maxChi2GL)) {
return;
} // Users have to decide the best match between MFT and MCH-MID at analysis level. The same global muon is repeatedly stored.

if (target.chi2MatchMCHMFT() > maxMatchingChi2MCHMFT) {
return false;
if (fwdtrack.chi2MatchMCHMID() < 0.f) { // this should never happen. only for protection.
return;
}
return true;
}

template <typename TCollision, typename TFwdTrack, typename TFwdTracks, typename TMFTTracks>
void fillFwdTrackTable(TCollision const& collision, TFwdTrack fwdtrack, TFwdTracks const& fwdtracks, TMFTTracks const&, const bool isAmbiguous)
{
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
const auto& matchedGlobalTracks = fwdtracks.sliceBy(perMFTTrack, fwdtrack.matchMFTTrackId()); // MFT-MCH-MID or MFT-MCH
if (!isBestMatch<TFwdTracks, TMFTTracks>(collision, fwdtrack, matchedGlobalTracks)) {
return;
}
} // find the best match between MFT and MCH-MID

o2::dataformats::GlobalFwdTrack propmuonAtPV = propagateMuon(fwdtrack, collision, propagationPoint::kToVertex);
o2::dataformats::GlobalFwdTrack propmuonAtDCA = propagateMuon(fwdtrack, collision, propagationPoint::kToDCA);
Expand Down
15 changes: 15 additions & 0 deletions DPG/Tasks/AOTEvent/eventSelectionQa.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,8 @@ struct EventSelectionQaTask {
histos.add("occupancyQA/hITSTracks_ev1_vs_ev2_2coll_in_ROF", ";nITStracks event #1;nITStracks event #2", kTH2D, {{200, 0., 6000}, {200, 0., 6000}});
histos.add("occupancyQA/hITSTracks_ev1_vs_ev2_2coll_in_ROF_UPC", ";nITStracks event #1;nITStracks event #2", kTH2D, {{41, -0.5, 40.5}, {41, -0.5, 40.5}});
histos.add("occupancyQA/hITSTracks_ev1_vs_ev2_2coll_in_ROF_nonUPC", ";nITStracks event #1;nITStracks event #2", kTH2D, {{200, 0., 6000}, {200, 0., 6000}});

histos.add("occupancyQA/dEdx_vs_centr_vs_occup_narrow_p_win", "dE/dx", kTH3F, {{20, 0, 4000, "n PV tracks"}, {60, 0, 15000, "occupancy"}, {800, 0.0, 800.0, "dE/dx (a. u.)"}});
}
}

Expand Down Expand Up @@ -1152,6 +1154,19 @@ struct EventSelectionQaTask {
histos.fill(HIST("occupancyQA/hOccupancyByFT0CvsByTracks"), occupancyByTracks, occupancyByFT0C);
histos.fill(HIST("occupancyQA/hNumTracksPV_vs_V0A_vs_occupancy"), multV0A, nPV, occupancyByTracks);
histos.fill(HIST("occupancyQA/hNumTracksPVTPC_vs_V0A_vs_occupancy"), multV0A, nContributorsAfterEtaTPCCuts, occupancyByTracks);

// dE/dx QA for a narrow pT bin
for (const auto& track : tracksGrouped) {
if (!track.isPVContributor())
continue;
if (std::fabs(track.eta()) < 0.8 && track.pt() > 0.2 && track.itsNCls() >= 5) {
float signedP = track.sign() * track.tpcInnerParam();
if (std::fabs(signedP) > 0.38 && std::fabs(signedP) < 0.4 && track.tpcNClsFound() > 70 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
float dEdx = track.tpcSignal();
histos.fill(HIST("occupancyQA/dEdx_vs_centr_vs_occup_narrow_p_win"), nPV, occupancyByTracks, dEdx);
}
}
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion EventFiltering/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ o2physics_add_dpl_workflow(fje-filter

o2physics_add_dpl_workflow(lf-strangeness-filter
SOURCES PWGLF/strangenessFilter.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::ReconstructionDataFormats O2::DetectorsBase
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore KFParticle::KFParticle O2::ReconstructionDataFormats O2::DetectorsBase
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(mult-filter
Expand Down
46 changes: 37 additions & 9 deletions EventFiltering/PWGEM/HeavyNeutralMesonFilter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,12 @@ struct HeavyNeutralMesonFilter {
false,
"Evt sel: check for offline selection"};

Configurable<bool> ConfDoEMCShift{"ConfDoEMCShift", false, "Apply SM-wise shift in eta and phi to EMCal clusters to align with TPC tracks"};
Configurable<std::vector<float>> ConfEMCEtaShift{"ConfEMCEtaShift", {0.f}, "values for SM-wise shift in eta to be added to EMCal clusters to align with TPC tracks"};
Configurable<std::vector<float>> ConfEMCPhiShift{"ConfEMCPhiShift", {0.f}, "values for SM-wise shift in phi to be added to EMCal clusters to align with TPC tracks"};
std::array<float, 20> EMCEtaShift = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
std::array<float, 20> EMCPhiShift = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

template <typename T>
bool isSelectedTrack(T const& track, CFTrigger::FemtoPartners partSpecies)
{
Expand Down Expand Up @@ -426,9 +432,13 @@ struct HeavyNeutralMesonFilter {
mHistManager.add("GG/invMassVsPt_PCMEMC", "Invariant mass and pT of gg candidates;#bf{#it{M}_{#gamma#gamma}};#bf{#it{pT}_{#gamma#gamma}}", HistType::kTH2F, {{400, 0., 0.8}, {250, 0., 25.}});
mHistManager.add("GG/invMassVsPt_EMC", "Invariant mass and pT of gg candidates;#bf{#it{M}_{#gamma#gamma}};#bf{#it{pT}_{#gamma#gamma}}", HistType::kTH2F, {{400, 0., 0.8}, {250, 0., 25.}});

mHistManager.add("HeavyNeutralMeson/invMassVsPt_PCM", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
mHistManager.add("HeavyNeutralMeson/invMassVsPt_PCMEMC", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
mHistManager.add("HeavyNeutralMeson/invMassVsPt_EMC", "Invariant mass and pT of HNM candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{600, 0.6, 1.2}, {250, 0., 25.}});
mHistManager.add("Omega/invMassVsPt_PCM", "Invariant mass and pT of omega meson candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.6, 1.}, {250, 0., 25.}});
mHistManager.add("Omega/invMassVsPt_PCMEMC", "Invariant mass and pT of omega meson candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.6, 1.}, {250, 0., 25.}});
mHistManager.add("Omega/invMassVsPt_EMC", "Invariant mass and pT of omega meson candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.6, 1.}, {250, 0., 25.}});

mHistManager.add("EtaPrime/invMassVsPt_PCM", "Invariant mass and pT of eta' candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.8, 1.2}, {250, 0., 25.}});
mHistManager.add("EtaPrime/invMassVsPt_PCMEMC", "Invariant mass and pT of eta' candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.8, 1.2}, {250, 0., 25.}});
mHistManager.add("EtaPrime/invMassVsPt_EMC", "Invariant mass and pT of eta' candidates;#bf{#it{M}_{#pi^{+}#pi^{-}#gamma#gamma}};#bf{#it{pT}_{#pi^{+}#pi^{-}#gamma#gamma}}", HistType::kTH2F, {{400, 0.8, 1.2}, {250, 0., 25.}});

// include all femto histograms
mHistManager.add("fProcessedEvents", "CF - event filtered;;Events", HistType::kTH1F, {{15, -0.5, 14.5}});
Expand Down Expand Up @@ -760,6 +770,14 @@ struct HeavyNeutralMesonFilter {
mHistManager.add("etaprimep/fetaprimePtVskstar_EMC", "Same Event distribution", HistType::kTH1F, {{8000, 0, 8}});
mHistManager.add("etaprimep/fProtonPtVskstar_EMC", "Same Event distribution", HistType::kTH1F, {{8000, 0, 8}});
mHistManager.add("etaprimep/fAntiProtonPtVskstar_EMC", "Same Event distribution", HistType::kTH1F, {{8000, 0, 8}});

if (ConfDoEMCShift.value) {
for (int iSM = 0; iSM < 20; iSM++) {
EMCEtaShift[iSM] = ConfEMCEtaShift.value[iSM];
EMCPhiShift[iSM] = ConfEMCPhiShift.value[iSM];
LOG(info) << "SM-wise shift in eta/phi for SM " << iSM << ": " << EMCEtaShift[iSM] << " / " << EMCPhiShift[iSM];
}
}
}
Preslice<aod::V0PhotonsKF> perCollision_pcm = aod::v0photonkf::collisionId;
Preslice<aod::SkimEMCClusters> perCollision_emc = aod::skimmedcluster::collisionId;
Expand Down Expand Up @@ -817,10 +835,11 @@ struct HeavyNeutralMesonFilter {
mHistManager.fill(HIST("Event/nClustersVsV0s"), clustersInThisCollision.size(), v0sInThisCollision.size());
mHistManager.fill(HIST("Event/nTracks"), tracksWithItsPid.size());

hnmutilities::reconstructGGs(clustersInThisCollision, v0sInThisCollision, vGGs);
std::vector<hnmutilities::Photon> vGammas;
hnmutilities::storeGammasInVector(clustersInThisCollision, v0sInThisCollision, vGammas, EMCEtaShift, EMCPhiShift);
hnmutilities::reconstructGGs(vGammas, vGGs);
vGammas.clear();
processGGs(vGGs);
// hnmutilities::reconstructHeavyNeutralMesons(tracks, vGGs, vHNMs);
// processHNMs(vHNMs);

bool isProton = false;
bool isDeuteron = false;
Expand Down Expand Up @@ -1483,21 +1502,30 @@ struct HeavyNeutralMesonFilter {

float massHNM = heavyNeutralMeson.m(cfgHNMMassCorrection);
if (heavyNeutralMeson.gg->reconstructionType == photonpair::kPCMPCM) {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_PCM"), massHNM, heavyNeutralMeson.pT());
if (heavyNeutralMeson.gg->isPi0)
mHistManager.fill(HIST("Omega/invMassVsPt_PCM"), massHNM, heavyNeutralMeson.pT());
else if (heavyNeutralMeson.gg->isEta)
mHistManager.fill(HIST("EtaPrime/invMassVsPt_PCM"), massHNM, heavyNeutralMeson.pT());
// QA
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCM/fInvMass"), massHNM);
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCM/fPt"), heavyNeutralMeson.pT());
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCM/fEta"), heavyNeutralMeson.eta());
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCM/fPhi"), translatePhi(heavyNeutralMeson.phi()));
} else if (heavyNeutralMeson.gg->reconstructionType == photonpair::kEMCEMC) {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_EMC"), massHNM, heavyNeutralMeson.pT());
if (heavyNeutralMeson.gg->isPi0)
mHistManager.fill(HIST("Omega/invMassVsPt_EMC"), massHNM, heavyNeutralMeson.pT());
else if (heavyNeutralMeson.gg->isEta)
mHistManager.fill(HIST("EtaPrime/invMassVsPt_EMC"), massHNM, heavyNeutralMeson.pT());
// QA
mHistManager.fill(HIST("TrackCuts/HMN/Before/EMC/fInvMass"), massHNM);
mHistManager.fill(HIST("TrackCuts/HMN/Before/EMC/fPt"), heavyNeutralMeson.pT());
mHistManager.fill(HIST("TrackCuts/HMN/Before/EMC/fEta"), heavyNeutralMeson.eta());
mHistManager.fill(HIST("TrackCuts/HMN/Before/EMC/fPhi"), translatePhi(heavyNeutralMeson.phi()));
} else {
mHistManager.fill(HIST("HeavyNeutralMeson/invMassVsPt_PCMEMC"), massHNM, heavyNeutralMeson.pT());
if (heavyNeutralMeson.gg->isPi0)
mHistManager.fill(HIST("Omega/invMassVsPt_PCMEMC"), massHNM, heavyNeutralMeson.pT());
else if (heavyNeutralMeson.gg->isEta)
mHistManager.fill(HIST("EtaPrime/invMassVsPt_PCMEMC"), massHNM, heavyNeutralMeson.pT());
// QA
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCMEMC/fInvMass"), massHNM);
mHistManager.fill(HIST("TrackCuts/HMN/Before/PCMEMC/fPt"), heavyNeutralMeson.pT());
Expand Down
Loading
Loading