Skip to content

Conversation

@YazhenLin
Copy link
Contributor

I change the O2Physics/PWGDQ/Core/CutsLibrary.cxx for adding the cut which I need, and change the/Users/cape/alice/O2Physics/PWGDQ/Core/HistogramsLibrary.cxx for the histogram, and change the /Users/cape/alice/O2Physics/PWGDQ/Core/MCSignalLibrary.cxx to get the signals which I interested with, and change the /Users/cape/alice/O2Physics/PWGDQ/Core/VarManager.cxx and /Users/cape/alice/O2Physics/PWGDQ/Core/VarManager.h to get my variables, and change the /Users/cape/alice/O2Physics/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx for my analysis.

@github-actions
Copy link

github-actions bot commented Oct 28, 2025

O2 linter results: ❌ 501 errors, ⚠️ 804 warnings, 🔕 0 disabled

@github-actions github-actions bot changed the title [PWGDQ]Adding the code for the energy correlators analysis [PWGDQ] [PWGDQ]Adding the code for the energy correlators analysis Oct 28, 2025
Comment on lines 888 to 902
if (!nameStr.compare("eeFrompromptJpsi")) {
MCProng prong(2, {11, 443}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}, false, {503}, {true});
prong.SetSourceBit(0, MCProng::kPhysicalPrimary);
signal = new MCSignal(name, "ee pairs from prompt j/psi decays", {prong, prong}, {1, 1}); // signal at pair level
return signal;
}

if (!nameStr.compare("eeFromnonpromptJpsi")) {
MCProng prong(3, {11, 443, 503}, {true, true, true}, {false, false, false}, {0, 0, 0}, {0, 0, 0}, {false, false, false});
prong.SetSourceBit(0, MCProng::kPhysicalPrimary);
signal = new MCSignal(name, "ee pairs from nonprompt j/psi decays", {prong, prong}, {2, 2}); // signal at pair level
return signal;
}

//////
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need these two signals. You can use the ones already existing: eePrimaryFromPromptJPsi and eePrimaryFromNonPromptJPsi. Also, I think that the non-prompt signal is also wrong, since I suppose you want to have the jpsi common mother, not the B hadron, so it should be {1,1} not {2,2}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I don't notice this, I will remove these lines.

Comment on lines 1934 to 1941
// if (!nameStr.compare("eeFromNonPromptJpsiAnyPrimary")) {
// MCProng pronge(2, {11, 443}, {true, true}, {false, false}, {0, 0}, {0, 0}, {false, false}, false, {503}, {false});
// pronge.SetSourceBit(0, MCProng::kPhysicalPrimary);
// MCProng prongPrimary(1);
// prongPrimary.SetSourceBit(0, MCProng::kPhysicalPrimary);
// signal = new MCSignal(name, "anyprimary and electron pair from non-prompt jpsi", {pronge, pronge, prongPrimary}, {-1, -1, -1});
// return signal;
//}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove commented out code

Comment on lines 4526 to 4535
if (fgUsedVars[kCosChi] || fgUsedVars[kECWeight] || fgUsedVars[kCosTheta] || fgUsedVars[kEWeight_before] || fgUsedVars[kPtDau] || fgUsedVars[kPhiDau] || fgUsedVars[kEtaDau]) {
values[VarManager::kCosTheta] = LorentzTransformJpsihadroncosChi("costheta", v12, v3);
values[VarManager::kEWeight_before] = v3.Pt() / v12.M();
values[VarManager::kPtDau] = v3.Pt();
values[VarManager::kEtaDau] = v3.Eta();
values[VarManager::kPhiDau] = v3.Phi();
float E_boost = LorentzTransformJpsihadroncosChi("weight_boost", v12, v3);
values[VarManager::kCosChi] = LorentzTransformJpsihadroncosChi("coschi", v12, v3);
values[VarManager::kECWeight] = E_boost / v12.M();
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are you adding code in the muon propagation function ?

Comment on lines 4220 to 4225
// apply kinematic cuts for signal
if (fConfigUseMCGenpTcut && (track_raw.pt() < fConfigDileptonLowpTCut || track_raw.pt() > fConfigDileptonHighpTCut))
continue;
if (fConfigUseMCRapcut && abs(track_raw.y()) > fConfigDileptonRapCutAbs)
continue;
VarManager::FillTrackMC(mcTracks, track_raw, fValuesSignal);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is loop over the single particles which are the "mother" particle of the triplet (dilepton + track). So here it is supposed to be the B meson for B analysis. In your case, for EEC, this is not defined, you do not have a specified common mother. So these cuts make no sense for you. Please remove them, or maybe explain what is the use for this and we can see where these ave to be implemented.

for (auto& sig : fGenMCSignals) {
if (sig->CheckSignal(true, track_raw)) {
fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), VarManager::fgValues);
fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), fValuesSignal);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change this back

Comment on lines 4232 to 4245
if (!fConfigCaculateEC)
continue;
for (auto& mctrack1 : groupedMCTracks) {
if (TMath::Abs(mctrack1.pdgCode()) == 443 || TMath::Abs(mctrack1.pdgCode()) == 11 || TMath::Abs(mctrack1.pdgCode()) == 22)
continue;
if (mctrack1.pt() < fConfigMCGenHadronPtMin.value || std::abs(mctrack1.eta()) > fConfigMCGenHadronEtaAbs.value)
continue;
if (mctrack1.getGenStatusCode() <= 0)
continue;
for (auto& sig : fGenMCSignals) {
VarManager::FillEnergyCorrelators(track_raw, mctrack1, fValuesEC);
if (sig->CheckSignal(true, track_raw)) {
fHistMan->FillHistClass(Form("MCTruthGenSel_%s", sig->GetName()), fValuesEC);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I dont understand this part of the code. You have many hardcoded checks for PDG codes, status codes and so on. What do you want to do here?

Comment on lines 4250 to 4251
if (!fConfigCaculateRE)
continue;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?


if (classStr.Contains("MCTruthGen")) {
dqhistograms::DefineHistograms(histMan, objArray->At(iclass)->GetName(), "mctruth_track");
dqhistograms::DefineHistograms(histMan, objArray->At(iclass)->GetName(), "energy_correlator_gen");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these histograms should be added only if needed

@vkucera
Copy link
Collaborator

vkucera commented Nov 1, 2025

@YazhenLin Please do not add a PR title prefix tag if you cannot do it properly. As you can see, the correct tag is added automatically. Fix the duplication.

@YazhenLin YazhenLin changed the title [PWGDQ] [PWGDQ]Adding the code for the energy correlators analysis Adding the code for the energy correlators analysis Nov 2, 2025
@github-actions github-actions bot changed the title Adding the code for the energy correlators analysis [PWGDQ] Adding the code for the energy correlators analysis Nov 2, 2025
@YazhenLin
Copy link
Contributor Author

@YazhenLin Please do not add a PR title prefix tag if you cannot do it properly. As you can see, the correct tag is added automatically. Fix the duplication.

Thank you, I fix this now.

@alibuild
Copy link
Collaborator

alibuild commented Nov 7, 2025

Error while checking build/O2Physics/o2 for 6d1f085 at 2025-11-07 12:55:

## sw/BUILD/O2Physics-latest/log
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
Error in cling::AutoLoadingVisitor::InsertIntoAutoLoadingState:
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4323:66: error: no matching function for call to 'VarManager::FillTripleMC<VarManager::kBtoJpsiEEK>(o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> >::TableIteratorBase<o2::soa::DefaultIndexPolicy, o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> > >&, o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> >::TableIteratorBase<o2::soa::DefaultIndexPolicy, o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> > >&, o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> >::TableIteratorBase<o2::soa::DefaultIndexPolicy, o2::soa::Table<o2::aod::Hash<555624682>, o2::aod::Hash<3675668887>, o2::aod::Hash<2286545062> > >&, float [705])'
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4323:66: error: type/value mismatch at argument 1 in template parameter list for 'template<class T1, class T2, class T3> static void VarManager::FillTripleMC(const T1&, const T2&, const T3&, float*, PairCandidateType)'
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4375:21: error: 'FillEnergyCorrelators' is not a member of 'VarManager'
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4398:40: error: 'kRealHadronMass' is not a member of 'VarManager'
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4398:56: error: no matching function for call to 'AnalysisDileptonTrack::runEnergyCorrelators<<expression error> >(const o2::soa::Table<o2::aod::Hash<519320931>, o2::aod::Hash<1837103245>, o2::aod::Hash<519320931>, o2::soa::Table<o2::aod::Hash<1103887441>, o2::aod::Hash<3118684404>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2761755740>, o2::aod::Hash<2054561768>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2047999027>, o2::aod::Hash<4004574469>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2798993546>, o2::aod::Hash<3453314308>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<3825401419>, o2::aod::Hash<205608849>, o2::aod::Hash<2286545062> > >::TableIteratorBase<o2::soa::FilteredIndexPolicy, o2::soa::Filtered<o2::soa::JoinFull<o2::aod::Hash<1837103245>, o2::soa::Table<o2::aod::Hash<1103887441>, o2::aod::Hash<3118684404>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2761755740>, o2::aod::Hash<2054561768>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2047999027>, o2::aod::Hash<4004574469>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2798993546>, o2::aod::Hash<3453314308>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<3825401419>, o2::aod::Hash<205608849>, o2::aod::Hash<2286545062> > > >, o2::soa::Table<o2::aod::Hash<1103887441>, o2::aod::Hash<3118684404>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2761755740>, o2::aod::Hash<2054561768>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2047999027>, o2::aod::Hash<4004574469>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<2798993546>, o2::aod::Hash<3453314308>, o2::aod::Hash<2286545062> >, o2::soa::Table<o2::aod::Hash<3825401419>, o2::aod::Hash<205608849>, o2::aod::Hash<2286545062> > >&, const o2::aod::ReducedMCTracks&)'
/sw/SOURCES/O2Physics/13572-slc9_x86-64/0/PWGDQ/Tasks/dqEfficiency_withAssoc.cxx:4398:56: error: template argument 1 is invalid
[0 more errors; see full log]

Full log here.

Comment on lines 915 to 924
hm->AddHistogram(histClass, "Mass_Assoc", "", false, 500, 0.0, 1.0, VarManager::kMassDau);
hm->AddHistogram(histClass, "Mass_Dilepton_Mass_Assoc", "", false, 500, 0.0, 5.0, VarManager::kPairMassDau, 500, 0.0, 5.0, VarManager::kMassDau);
hm->AddHistogram(histClass, "Pt_Dilepton", "", false, 2000, 0.0, 30.0, VarManager::kPairPtDau);
hm->AddHistogram(histClass, "Pt_Assoc", "", false, 500, 0.0, 10.0, VarManager::kPt);
hm->AddHistogram(histClass, "Mass_DileptonAssoc", "", false, 4500, 0.0, 30.0, VarManager::kPairMass);
hm->AddHistogram(histClass, "Pt_DileptonAssoc", "", false, 2000, 0.0, 30.0, VarManager::kPairPt);
hm->AddHistogram(histClass, "Mass_Pt_DileptonAssoc", "", false, 500, 0.0, 30.0, VarManager::kPairMass, 200, 0.0, 30.0, VarManager::kPairPt);
hm->AddHistogram(histClass, "Pt_Rap_DileptonAssoc", "", false, 5120, 0.0, 30.0, VarManager::kPairPt, 1000, -5.0, 5.0, VarManager::kRap);
hm->AddHistogram(histClass, "DeltaMass", "", false, 1500, 0.0, 5.5, VarManager::kDeltaMass);
hm->AddHistogram(histClass, "DeltaMass_ptdileptonassoc", "", false, 1000, 0.0, 1.0, VarManager::kDeltaMass, 3000, 0.0, 30.0, VarManager::kPairPt);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you remove some histograms. Were these your histograms and decided to remove them? If not, please let them there. You probably need to rebase.

Comment on lines 929 to 930
hm->AddHistogram(histClass, "Mass_Pt", "", false, 500, 0.0, 15.0, VarManager::kMCMass, 40, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "Pt", "", false, 200, 0.0, 20.0, VarManager::kMCPt);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment as above

Comment on lines 932 to 944
hm->AddHistogram(histClass, "Mass", "", false, 500, 0.0, 15.0, VarManager::kMCMass);
hm->AddHistogram(histClass, "Rapidity", "", false, 100, -5.0, 5.0, VarManager::kMCY);
hm->AddHistogram(histClass, "Eta_Pt", "", false, 40, -2.0, 2.0, VarManager::kMCEta, 200, 0.0, 20.0, VarManager::kMCPt);
hm->AddHistogram(histClass, "Phi_Eta", "#phi vs #eta distribution", false, 200, -5.0, 5.0, VarManager::kMCEta, 200, -2. * o2::constants::math::PI, 2. * o2::constants::math::PI, VarManager::kMCPhi);
if (subGroupStr.Contains("polarization")) {
int varspTHE[4] = {VarManager::kMCPt, VarManager::kMCCosThetaHE, VarManager::kMCPhiHE, VarManager::kMCPhiTildeHE};
int varspTCS[4] = {VarManager::kMCPt, VarManager::kMCCosThetaCS, VarManager::kMCPhiCS, VarManager::kMCPhiTildeCS};
int bins[4] = {20, 20, 20, 20};
double xmin[4] = {0., -1., 0., 0.};
double xmax[4] = {20., 1., 2. * o2::constants::math::PI, 2. * o2::constants::math::PI};
hm->AddHistogram(histClass, "Pt_cosThetaHE_phiHE_phiTildeHE", "", 4, varspTHE, bins, xmin, xmax, 0, -1, kFALSE);
hm->AddHistogram(histClass, "Pt_cosThetaCS_phiCS_phiTildeCS", "", 4, varspTCS, bins, xmin, xmax, 0, -1, kFALSE);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment as above. You seem to remove the polarizaiton histograms for some reason.

template <int pairType, typename T1, typename T2>
static float calculatePhiV(const T1& t1, const T2& t2);
template <typename T1, typename T2>
// static float LorentzTransformJpsihadroncosChi(const T1& t1, const T2& t2 ,float hadronMass);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove the comment

values[kMCEventTime] = event.t();
values[kMCEventWeight] = event.weight();
values[kMCEventImpParam] = event.impactParameter();
values[kMCEventCentrFT0C] = event.centFT0C();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why did you remove this line ? Probably you need to rebase your O2Physics.

Comment on lines 3678 to 3706
if constexpr (candidateType == kBtoJpsiEEK) {
float m1 = o2::constants::physics::MassElectron;
float m2 = o2::constants::physics::MassElectron;
float m3 = o2::constants::physics::MassKaonCharged;
float m4 = o2::constants::physics::MassJPsi;
ROOT::Math::PtEtaPhiMVector v1(t1.pt(), t1.eta(), t1.phi(), m1);
ROOT::Math::PtEtaPhiMVector v2(t2.pt(), t2.eta(), t2.phi(), m2);
ROOT::Math::PtEtaPhiMVector v12 = v1 + v2;
ROOT::Math::PtEtaPhiMVector v3(t3.pt(), t3.eta(), t3.phi(), m3);
ROOT::Math::PtEtaPhiMVector v123 = v12 + v3;
values[kPairMass] = v123.M();
values[kPairPt] = v123.Pt();
values[kPairEta] = v123.Eta();
values[kPhi] = v123.Phi();
values[kMCY] = -v123.Rapidity();
values[kPairMassDau] = v12.M();
values[kPairPtDau] = v12.Pt();
values[kRap] = -v123.Rapidity();
values[kMassDau] = m3;
values[VarManager::kDeltaMass] = v123.M() - v12.M();
values[VarManager::kDeltaMass_jpsi] = v123.M() - v12.M() + m4;
values[kPt] = t3.pt();
values[kEta] = t3.eta();
values[kEta1] = t1.eta();
values[kEta2] = t2.eta();
values[kDeltaEta] = v12.Eta();
values[kPt1] = t1.pt();
values[kPt2] = t2.pt();
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you need to rebase, otherwise this would remove other people's code.

@YazhenLin YazhenLin requested review from a team, ddobrigk, jgrosseo and ktf as code owners November 9, 2025 10:01
Comment on lines 159 to 161
kNMaxCandidateTypes,
kJpsiHadronMass, // using the real hadron mass
kJpsiPionMass // treat the hadron as pion
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The kNMaxCandidateTypes has to be the last element of the enumeration, so please add your new elements before this one.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. Thank you.

Comment on lines 1314 to 1323
static float RotationDeltaPhi(float deltaphi)
{
if (deltaphi > 3.0 / 2.0 * TMath::Pi()) {
deltaphi -= 2.0 * TMath::Pi();
}
if (deltaphi < -0.5 * TMath::Pi()) {
deltaphi += 2.0 * TMath::Pi();
}
return deltaphi;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a small comment to say what this function does and what is used for.

Copy link
Collaborator

@vkucera vkucera Nov 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iarsene It's the 42nd (wrong) reinvention of RecoDecay::constrainAngle in that file, as reported by the O2 linter. 🤷

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vkucera Thank you for reminding me that this function already exists. I already changed that.

@iarsene iarsene merged commit 286e1c9 into AliceO2Group:master Nov 10, 2025
13 of 15 checks passed
lmattei01 pushed a commit to lmattei01/O2Physics that referenced this pull request Dec 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

4 participants