Skip to content

Commit 6d4f7ea

Browse files
Merge branch 'AliceO2Group:master' into master
2 parents e06b310 + 243ff53 commit 6d4f7ea

25 files changed

+1597
-102
lines changed

EventFiltering/macros/getMenu.C

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,17 @@
1212
#include "CCDB/BasicCCDBManager.h"
1313

1414
#include <TAxis.h>
15+
#include <TFile.h>
16+
#include <TGrid.h>
1517
#include <TH1.h>
18+
#include <TSystem.h>
1619

20+
#include <iostream>
21+
#include <regex>
22+
#include <set>
23+
#include <sstream>
1724
#include <string>
25+
#include <vector>
1826

1927
void getMenu(int runNumber, std::string baseCCDBPath = "Users/m/mpuccio/EventFiltering/OTS/Chunked/")
2028
{
@@ -29,3 +37,87 @@ void getMenu(int runNumber, std::string baseCCDBPath = "Users/m/mpuccio/EventFil
2937
std::cout << "Id " << i - 2 << ": " << axis->GetBinLabel(i) << "\n";
3038
}
3139
}
40+
41+
std::vector<std::string> getMenuForPeriod(std::string period)
42+
{
43+
std::regex pattern(R"(LHC(\d{2})[A-Za-z]{1,2})");
44+
std::smatch match;
45+
46+
int year{2000};
47+
if (!std::regex_match(period, match, pattern)) {
48+
std::cout << "Invalid format for period: " << period << std::endl;
49+
return {};
50+
}
51+
52+
year += std::stoi(match[1]);
53+
gSystem->Exec(Form("alien_find /alice/data/%i/%s/ ctf_skim_full/AnalysisResults_fullrun.root > list_tmp_%s.txt", year, period.data(), period.data()));
54+
55+
std::ifstream file(Form("list_tmp_%s.txt", period.data()));
56+
if (!file) {
57+
std::cerr << "Error: could not open file for period " << period << "\n";
58+
return {};
59+
}
60+
61+
std::string firstLine;
62+
if (!std::getline(file, firstLine)) {
63+
std::cerr << "Error: file is empty or read failed for period " << period << "\n";
64+
return {};
65+
}
66+
67+
TGrid::Connect("alien://");
68+
TFile* scalersFile = TFile::Open((std::string("alien://") + firstLine).data(), "READ");
69+
TH1D* counters = (TH1D*)scalersFile->Get("central-event-filter-task/scalers/mFiltered");
70+
TAxis* axis = counters->GetXaxis();
71+
72+
std::vector<std::string> binLabels(axis->GetNbins() - 2);
73+
for (int i = 2; i < axis->GetNbins(); ++i) {
74+
binLabels[i - 2] = axis->GetBinLabel(i);
75+
}
76+
77+
scalersFile->Close();
78+
delete scalersFile;
79+
gSystem->Exec(Form("rm list_tmp_%s.txt", period.data()));
80+
81+
return binLabels;
82+
}
83+
84+
void getMenu(std::string periods)
85+
{
86+
std::stringstream ss(periods);
87+
std::string period;
88+
std::vector<std::string> periodList;
89+
90+
// Parse comma-separated periods
91+
while (std::getline(ss, period, ',')) {
92+
// Trim whitespace
93+
period.erase(0, period.find_first_not_of(" \t"));
94+
period.erase(period.find_last_not_of(" \t") + 1);
95+
periodList.push_back(period);
96+
}
97+
98+
std::map<std::vector<std::string>, std::vector<std::string>> menuGroups;
99+
100+
// Get menus for each period
101+
for (const auto& p : periodList) {
102+
auto menu = getMenuForPeriod(p);
103+
if (!menu.empty()) {
104+
menuGroups[menu].push_back(p);
105+
}
106+
}
107+
108+
// Report different menus
109+
int menuId = 1;
110+
for (const auto& [menu, periods] : menuGroups) {
111+
std::cout << "\n=== Menu " << menuId++ << " (periods: ";
112+
for (size_t i = 0; i < periods.size(); ++i) {
113+
std::cout << periods[i];
114+
if (i < periods.size() - 1)
115+
std::cout << ", ";
116+
}
117+
std::cout << ") ===\n";
118+
119+
for (size_t i = 0; i < menu.size(); ++i) {
120+
std::cout << "Id " << i << ": " << menu[i] << "\n";
121+
}
122+
}
123+
}

PWGCF/FemtoUniverse/Core/FemtoUniverseCascadeSelection.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,11 +317,11 @@ void FemtoUniverseCascadeSelection::init(HistogramRegistry* registry)
317317
"container - quitting!";
318318
}
319319

320-
posDaughTrack.init<aod::femtouniverseparticle::ParticleType::kV0Child,
320+
posDaughTrack.init<aod::femtouniverseparticle::ParticleType::kCascadeV0Child,
321321
aod::femtouniverseparticle::TrackType::kPosChild,
322322
aod::femtouniverseparticle::CutContainerType>(
323323
mHistogramRegistry);
324-
negDaughTrack.init<aod::femtouniverseparticle::ParticleType::kV0Child,
324+
negDaughTrack.init<aod::femtouniverseparticle::ParticleType::kCascadeV0Child,
325325
aod::femtouniverseparticle::TrackType::kNegChild,
326326
aod::femtouniverseparticle::CutContainerType>(
327327
mHistogramRegistry);
@@ -580,9 +580,9 @@ void FemtoUniverseCascadeSelection::fillCascadeQA(Col const& col, Casc const& ca
580580
template <typename Col, typename Casc, typename Track>
581581
void FemtoUniverseCascadeSelection::fillQA(Col const& /*col*/, Casc const& /*cascade*/, Track const& posTrack, Track const& negTrack, Track const& bachTrack)
582582
{
583-
posDaughTrack.fillQA<aod::femtouniverseparticle::ParticleType::kV0Child,
583+
posDaughTrack.fillQA<aod::femtouniverseparticle::ParticleType::kCascadeV0Child,
584584
aod::femtouniverseparticle::TrackType::kPosChild>(posTrack);
585-
negDaughTrack.fillQA<aod::femtouniverseparticle::ParticleType::kV0Child,
585+
negDaughTrack.fillQA<aod::femtouniverseparticle::ParticleType::kCascadeV0Child,
586586
aod::femtouniverseparticle::TrackType::kNegChild>(negTrack);
587587
bachTrackSel.fillQA<aod::femtouniverseparticle::ParticleType::kCascadeBachelor,
588588
aod::femtouniverseparticle::TrackType::kBachelor>(bachTrack);

PWGCF/FemtoUniverse/DataModel/FemtoDerived.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@
1616
#ifndef PWGCF_FEMTOUNIVERSE_DATAMODEL_FEMTODERIVED_H_
1717
#define PWGCF_FEMTOUNIVERSE_DATAMODEL_FEMTODERIVED_H_
1818

19-
#include <cmath>
20-
#include "Framework/ASoA.h"
21-
#include "MathUtils/Utils.h"
22-
#include "Framework/DataTypes.h"
2319
#include "Common/DataModel/Multiplicity.h"
20+
#include "Common/DataModel/PIDResponse.h"
21+
#include "Common/DataModel/TrackSelectionTables.h"
22+
23+
#include "Framework/ASoA.h"
2424
#include "Framework/AnalysisDataModel.h"
25+
#include "Framework/DataTypes.h"
2526
#include "Framework/Expressions.h"
26-
#include "Common/DataModel/TrackSelectionTables.h"
27-
#include "Common/DataModel/PIDResponse.h"
27+
#include "MathUtils/Utils.h"
28+
29+
#include <cmath>
2830

2931
namespace o2::aod
3032
{
@@ -64,6 +66,7 @@ enum ParticleType {
6466
kV0, //! V0
6567
kV0Child, //! Child track of a V0
6668
kCascade, //! Cascade
69+
kCascadeV0Child, //! Child track of a V0 coming from a cascade
6770
kCascadeBachelor, //! Bachelor track of a cascade
6871
kPhi, //! Phi meson
6972
kPhiChild, //! Child track of a Phi meson
@@ -72,7 +75,7 @@ enum ParticleType {
7275
kNParticleTypes //! Number of particle types
7376
};
7477

75-
static constexpr std::string_view ParticleTypeName[kNParticleTypes] = {"Tracks", "MCTruthTracks", "V0", "V0Child", "Cascade", "CascadeBachelor", "Phi", "PhiChild", "D0", "D0Child"}; //! Naming of the different particle types
78+
static constexpr std::string_view ParticleTypeName[kNParticleTypes] = {"Tracks", "MCTruthTracks", "V0", "V0Child", "Cascade", "CascadeV0Child,", "CascadeBachelor", "Phi", "PhiChild", "D0", "D0Child"}; //! Naming of the different particle types
7679
static constexpr std::string_view TempFitVarName[kNParticleTypes] = {"/hDCAxy", "/hPDGvspT", "/hCPA", "/hDCAxy", "/hCPA", "/hDCAxy", "/hInvMass", "/hDCAxy", "/hInvMass", "/hDCAxy"};
7780

7881
using CutContainerType = uint32_t; //! Definition of the data type for the bit-wise container for the different selection criteria

PWGCF/Flow/Tasks/flowTask.cxx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ struct FlowTask {
7272
O2_DEFINE_CONFIGURABLE(cfgCutPtMin, float, 0.2f, "Minimal pT for all tracks")
7373
O2_DEFINE_CONFIGURABLE(cfgCutPtMax, float, 10.0f, "Maximal pT for all tracks")
7474
O2_DEFINE_CONFIGURABLE(cfgCutEta, float, 0.8f, "Eta range for tracks")
75-
O2_DEFINE_CONFIGURABLE(cfgEtaPtPt, float, 0.4, "eta cut for pt-pt correlations");
75+
O2_DEFINE_CONFIGURABLE(cfgEtaPtPt, float, 0.4, "eta range for pt-pt correlations")
76+
O2_DEFINE_CONFIGURABLE(cfgEtaGapPtPt, float, 0.2, "eta gap for pt-pt correlations, cfgEtaGapPtPt<|eta|<cfgEtaPtPt")
77+
O2_DEFINE_CONFIGURABLE(cfgEtaGapPtPtEnabled, bool, false, "switch of subevent pt-pt correlations")
7678
O2_DEFINE_CONFIGURABLE(cfgCutChi2prTPCcls, float, 2.5f, "max chi2 per TPC clusters")
7779
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 50.0f, "minimum TPC clusters")
7880
O2_DEFINE_CONFIGURABLE(cfgCutTPCCrossedRows, float, 70.0f, "minimum TPC crossed rows")
@@ -508,6 +510,8 @@ struct FlowTask {
508510
fFCpt->setUseCentralMoments(cfgUseCentralMoments);
509511
fFCpt->setUseGapMethod(true);
510512
fFCpt->initialise(axisIndependent, cfgMpar, gfwConfigs, cfgNbootstrap);
513+
if (cfgEtaGapPtPtEnabled)
514+
fFCpt->initialiseSubevent(axisIndependent, cfgMpar, cfgNbootstrap);
511515
for (auto i = 0; i < gfwConfigs.GetSize(); ++i) {
512516
corrconfigsPtVn.push_back(fGFW->GetCorrelatorConfig(gfwConfigs.GetCorrs()[i], gfwConfigs.GetHeads()[i], gfwConfigs.GetpTDifs()[i]));
513517
}
@@ -642,6 +646,14 @@ struct FlowTask {
642646
{
643647
if (std::abs(track.eta()) < cfgEtaPtPt) {
644648
(dt == kGen) ? fFCptgen->fill(1., track.pt()) : fFCpt->fill(weff, track.pt());
649+
if (cfgEtaGapPtPtEnabled) {
650+
if (track.eta() < -1. * cfgEtaGapPtPt) {
651+
(dt == kGen) ? fFCptgen->fillSub1(1., track.pt()) : fFCpt->fillSub1(weff, track.pt());
652+
}
653+
if (track.eta() > cfgEtaGapPtPt) {
654+
(dt == kGen) ? fFCptgen->fillSub2(1., track.pt()) : fFCpt->fillSub2(weff, track.pt());
655+
}
656+
}
645657
}
646658
}
647659

@@ -651,6 +663,11 @@ struct FlowTask {
651663
(dt == kGen) ? fFCptgen->calculateCorrelations() : fFCpt->calculateCorrelations();
652664
(dt == kGen) ? fFCptgen->fillPtProfiles(centmult, rndm) : fFCpt->fillPtProfiles(centmult, rndm);
653665
(dt == kGen) ? fFCptgen->fillCMProfiles(centmult, rndm) : fFCpt->fillCMProfiles(centmult, rndm);
666+
if (cfgEtaGapPtPtEnabled) {
667+
(dt == kGen) ? fFCptgen->calculateSubeventCorrelations() : fFCpt->calculateSubeventCorrelations();
668+
(dt == kGen) ? fFCptgen->fillSubeventPtProfiles(centmult, rndm) : fFCpt->fillSubeventPtProfiles(centmult, rndm);
669+
(dt == kGen) ? fFCptgen->fillCMSubeventProfiles(centmult, rndm) : fFCpt->fillCMSubeventProfiles(centmult, rndm);
670+
}
654671
for (uint l_ind = 0; l_ind < corrconfigsPtVn.size(); ++l_ind) {
655672
if (!corrconfigsPtVn.at(l_ind).pTDif) {
656673
auto dnx = fGFW->Calculate(corrconfigsPtVn.at(l_ind), 0, kTRUE).real();

0 commit comments

Comments
 (0)