Skip to content

Commit b5377ee

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 69464ff + 6e272c5 commit b5377ee

File tree

181 files changed

+16702
-8819
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+16702
-8819
lines changed

ALICE3/Core/FastTracker.cxx

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,34 @@ void FastTracker::AddSiliconALICE3v2(std::vector<float> pixelResolution)
144144
AddLayer("B10", 80., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
145145
}
146146

147+
void FastTracker::AddSiliconALICE3(std::vector<float> pixelResolution)
148+
{
149+
float x0IT = 0.001; // 0.1%
150+
float x0OT = 0.01; // 1.0%
151+
float xrhoIB = 2.3292e-02; // 100 mum Si
152+
float xrhoOT = 2.3292e-01; // 1000 mum Si
153+
float eff = 1.00;
154+
155+
float resRPhiIT = pixelResolution[0];
156+
float resZIT = pixelResolution[1];
157+
float resRPhiOT = pixelResolution[2];
158+
float resZOT = pixelResolution[3];
159+
160+
AddLayer("bpipe0", 0.48, 250, 0.00042, 2.772e-02, 0.0f, 0.0f, 0.0f, 0); // 150 mum Be
161+
AddLayer("B00", 0.5, 250, x0IT, xrhoIB, resRPhiIT, resZIT, eff, 1);
162+
AddLayer("B01", 1.2, 250, x0IT, xrhoIB, resRPhiIT, resZIT, eff, 1);
163+
AddLayer("B02", 2.5, 250, x0IT, xrhoIB, resRPhiIT, resZIT, eff, 1);
164+
AddLayer("bpipe1", 3.7, 250, 0.0014, 9.24e-02, 0.0f, 0.0f, 0.0f, 0); // 500 mum Be
165+
AddLayer("B03", 7., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
166+
AddLayer("B04", 9., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
167+
AddLayer("B05", 12., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
168+
AddLayer("B06", 20., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
169+
AddLayer("B07", 30., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
170+
AddLayer("B08", 45., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
171+
AddLayer("B09", 60., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
172+
AddLayer("B10", 80., 250, x0OT, xrhoOT, resRPhiOT, resZOT, eff, 1);
173+
}
174+
147175
void FastTracker::AddTPC(float phiResMean, float zResMean)
148176
{
149177
LOG(info) << " Adding standard time projection chamber";
@@ -307,7 +335,7 @@ int FastTracker::FastTrack(o2::track::TrackParCov inputTrack, o2::track::TrackPa
307335
break;
308336
}
309337
}
310-
if (firstActiveLayer <= 0) {
338+
if (firstActiveLayer < 0) {
311339
LOG(fatal) << "No active layers found in FastTracker, check layer setup";
312340
return -2; // no active layers
313341
}

ALICE3/Core/FastTracker.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,11 @@ class FastTracker
4242
// Layer and layer configuration
4343
void AddLayer(TString name, float r, float z, float x0, float xrho, float resRPhi = 0.0f, float resZ = 0.0f, float eff = 0.0f, int type = 0);
4444
DetLayer GetLayer(const int layer, bool ignoreBarrelLayers = true) const;
45+
std::vector<DetLayer> GetLayers() const { return layers; }
4546
int GetLayerIndex(const std::string& name) const;
4647
size_t GetNLayers() const { return layers.size(); }
4748
bool IsLayerInert(const int layer) const { return layers[layer].isInert(); }
49+
void ClearLayers() { layers.clear(); }
4850
void SetRadiationLength(const std::string layerName, float x0) { layers[GetLayerIndex(layerName)].setRadiationLength(x0); }
4951
void SetRadius(const std::string layerName, float r) { layers[GetLayerIndex(layerName)].setRadius(r); }
5052
void SetResolutionRPhi(const std::string layerName, float resRPhi) { layers[GetLayerIndex(layerName)].setResolutionRPhi(resRPhi); }
@@ -57,6 +59,7 @@ class FastTracker
5759

5860
void AddSiliconALICE3v4(std::vector<float> pixelResolution);
5961
void AddSiliconALICE3v2(std::vector<float> pixelResolution);
62+
void AddSiliconALICE3(std::vector<float> pixelResolution);
6063
void AddTPC(float phiResMean, float zResMean);
6164

6265
void Print();

ALICE3/TableProducer/alice3-multicharmTable.cxx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ struct alice3multicharmTable {
162162
Partition<alice3tracks> tracksPiFromXiC =
163163
((aod::a3DecayMap::decayMap & trackSelectionPiFromXiC) == trackSelectionPiFromXiC) && aod::track::signed1Pt > 0.0f && 1.0f / nabs(aod::track::signed1Pt) > minPiCPt&& nabs(aod::track::dcaXY) > piFromXiC_dcaXYconstant + piFromXiC_dcaXYpTdep* nabs(aod::track::signed1Pt) && nabs(aod::track::dcaZ) > piFromXiC_dcaZconstant + piFromXiC_dcaZpTdep* nabs(aod::track::signed1Pt);
164164

165-
Partition<alice3tracks> tracksPiFromXiCC = ((aod::a3DecayMap::decayMap & trackSelectionPiFromXiCC) == trackSelectionPiFromXiCC) && aod::track::signed1Pt > 0.0f && 1.0f / nabs(aod::track::signed1Pt) > minPiCCPt&& nabs(aod::track::dcaXY) > piFromXiCC_dcaXYconstant + piFromXiCC_dcaXYpTdep* nabs(aod::track::signed1Pt);
165+
Partition<alice3tracks> tracksPiFromXiCC =
166+
((aod::a3DecayMap::decayMap & trackSelectionPiFromXiCC) == trackSelectionPiFromXiCC) && aod::track::signed1Pt > 0.0f && 1.0f / nabs(aod::track::signed1Pt) > minPiCCPt&& nabs(aod::track::dcaXY) > piFromXiCC_dcaXYconstant + piFromXiCC_dcaXYpTdep* nabs(aod::track::signed1Pt) && nabs(aod::track::dcaZ) > piFromXiCC_dcaZconstant + piFromXiCC_dcaZpTdep* nabs(aod::track::signed1Pt);
166167

167168
// Helper struct to pass candidate information
168169
struct {
@@ -446,6 +447,13 @@ struct alice3multicharmTable {
446447
histos.add("hPi2cPt", "hPi2cPt", kTH1D, {axisPt});
447448
histos.add("hPiccPt", "hPiccPt", kTH1D, {axisPt});
448449

450+
histos.add("hPi1cDCAxy", "hPi1cDCAxy", kTH1D, {axisDCA});
451+
histos.add("hPi1cDCAz", "hPi1cDCAz", kTH1D, {axisDCA});
452+
histos.add("hPi2cDCAxy", "hPi2cDCAxy", kTH1D, {axisDCA});
453+
histos.add("hPi2cDCAz", "hPi2cDCAz", kTH1D, {axisDCA});
454+
histos.add("hPiccDCAxy", "hPiccDCAxy", kTH1D, {axisDCA});
455+
histos.add("hPiccDCAz", "hPiccDCAz", kTH1D, {axisDCA});
456+
449457
histos.add("hMinXiDecayRadius", "hMinXiDecayRadius", kTH1D, {axisRadius2DXi});
450458
histos.add("hMinXiCDecayRadius", "hMinXiCDecayRadius", kTH1D, {axisRadius});
451459
histos.add("hMinXiCCDecayRadius", "hMinXiCCDecayRadius", kTH1D, {axisRadius});
@@ -780,6 +788,13 @@ struct alice3multicharmTable {
780788
piFromLa.pt(), piFromLa.eta(),
781789
piFromLa.dcaXY(), piFromLa.dcaZ(),
782790
pi1c.eta(), pi2c.eta(), picc.eta());
791+
792+
histos.fill(HIST("hPi1cDCAxy"), std::abs(pi1c.dcaXY() * 1e+4));
793+
histos.fill(HIST("hPi1cDCAz"), std::abs(pi1c.dcaZ() * 1e+4));
794+
histos.fill(HIST("hPi2cDCAxy"), std::abs(pi2c.dcaXY() * 1e+4));
795+
histos.fill(HIST("hPi2cDCAz"), std::abs(pi2c.dcaZ() * 1e+4));
796+
histos.fill(HIST("hPiccDCAxy"), std::abs(picc.dcaXY() * 1e+4));
797+
histos.fill(HIST("hPiccDCAz"), std::abs(picc.dcaZ() * 1e+4));
783798
}
784799
}
785800
histos.fill(HIST("hCombinationsXiCC"), nCombinationsCC);

ALICE3/Tasks/alice3-lutmaker.cxx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ using namespace framework::expressions;
2525
void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
2626
{
2727
std::vector<ConfigParamSpec> options{
28-
{"lut-el", VariantType::Int, 1, {"LUT input for the Electron PDG code"}},
29-
{"lut-mu", VariantType::Int, 1, {"LUT input for the Muon PDG code"}},
28+
{"lut-el", VariantType::Int, 0, {"LUT input for the Electron PDG code"}},
29+
{"lut-mu", VariantType::Int, 0, {"LUT input for the Muon PDG code"}},
3030
{"lut-pi", VariantType::Int, 1, {"LUT input for the Pion PDG code"}},
31-
{"lut-ka", VariantType::Int, 1, {"LUT input for the Kaon PDG code"}},
32-
{"lut-pr", VariantType::Int, 1, {"LUT input for the Proton PDG code"}},
31+
{"lut-ka", VariantType::Int, 0, {"LUT input for the Kaon PDG code"}},
32+
{"lut-pr", VariantType::Int, 0, {"LUT input for the Proton PDG code"}},
3333
{"lut-tr", VariantType::Int, 0, {"LUT input for the Triton PDG code"}},
3434
{"lut-de", VariantType::Int, 0, {"LUT input for the Deuteron PDG code"}},
3535
{"lut-he", VariantType::Int, 0, {"LUT input for the Helium3 PDG code"}}};
@@ -153,6 +153,7 @@ struct Alice3LutMaker {
153153
histos.add("QA/CovMat_sigmaSnp", "sigmaSnp" + commonTitle, kTH3F, {axisPt, axisEta, axissigmaSnp});
154154
histos.add("QA/CovMat_sigmaTgl", "sigmaTgl" + commonTitle, kTH3F, {axisPt, axisEta, axissigmaTgl});
155155
histos.add("QA/CovMat_sigma1Pt", "sigma1Pt" + commonTitle, kTH3F, {axisPt, axisEta, axissigma1Pt});
156+
histos.add("QA/sigma1Pt", "sigma1Pt" + commonTitle, kTH3F, {axisPt, axisEta, axissigma1Pt});
156157
histos.add("QA/CovMat_rhoZY", "rhoZY" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoZY});
157158
histos.add("QA/CovMat_rhoSnpY", "rhoSnpY" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoSnpY});
158159
histos.add("QA/CovMat_rhoSnpZ", "rhoSnpZ" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoSnpZ});
@@ -262,6 +263,7 @@ struct Alice3LutMaker {
262263
histos.fill(HIST("QA/CovMat_sigmaSnp"), mcParticle.pt(), mcParticle.eta(), track.sigmaSnp());
263264
histos.fill(HIST("QA/CovMat_sigmaTgl"), mcParticle.pt(), mcParticle.eta(), track.sigmaTgl());
264265
histos.fill(HIST("QA/CovMat_sigma1Pt"), mcParticle.pt(), mcParticle.eta(), track.sigma1Pt());
266+
histos.fill(HIST("QA/sigma1Pt"), mcParticle.pt(), mcParticle.eta(), std::abs(track.signed1Pt()) - 1. / mcParticle.pt());
265267
histos.fill(HIST("QA/CovMat_rhoZY"), mcParticle.pt(), mcParticle.eta(), track.rhoZY());
266268
histos.fill(HIST("QA/CovMat_rhoSnpY"), mcParticle.pt(), mcParticle.eta(), track.rhoSnpY());
267269
histos.fill(HIST("QA/CovMat_rhoSnpZ"), mcParticle.pt(), mcParticle.eta(), track.rhoSnpZ());

ALICE3/Tasks/alice3-multicharm.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ struct alice3multicharm {
255255
histos.add("hBDTScoreVsXiccPt", "hBDTScoreVsXiccPt", kTH2D, {axisPt, axisBDTScore});
256256
histos.add("h3dBDTScore", "h3dBDTScore", kTH3D, {axisPt, axisXiccMass, axisBDTScore});
257257
for (const auto& score : bdt.requiredScores.value) {
258-
histPath = std::format("MLQA/RequiredBDTScore_{}/", static_cast<int>(score * 100));
258+
histPath = std::format("MLQA/RequiredBDTScore_{}/", static_cast<int>(score * 10000));
259259
histPointers.insert({histPath + "hDCAXicDaughters", histos.add((histPath + "hDCAXicDaughters").c_str(), "hDCAXicDaughters", {kTH1D, {{axisDcaDaughters}}})});
260260
histPointers.insert({histPath + "hDCAXiccDaughters", histos.add((histPath + "hDCAXiccDaughters").c_str(), "hDCAXiccDaughters", {kTH1D, {{axisDcaDaughters}}})});
261261
histPointers.insert({histPath + "hDCAxyXi", histos.add((histPath + "hDCAxyXi").c_str(), "hDCAxyXi", {kTH1D, {{axisDCA}}})});
@@ -329,7 +329,7 @@ struct alice3multicharm {
329329

330330
for (const auto& requiredScore : bdt.requiredScores.value) {
331331
if (bdtScore > requiredScore) {
332-
histPath = std::format("MLQA/RequiredBDTScore_{}/", static_cast<int>(requiredScore * 100));
332+
histPath = std::format("MLQA/RequiredBDTScore_{}/", static_cast<int>(requiredScore * 10000));
333333
getHist(TH1, histPath + "hDCAXicDaughters")->Fill(xiccCand.xicDauDCA() * 1e+4);
334334
getHist(TH1, histPath + "hDCAXiccDaughters")->Fill(xiccCand.xiccDauDCA() * 1e+4);
335335
getHist(TH1, histPath + "hDCAxyXi")->Fill(std::fabs(xiccCand.xiDCAxy() * 1e+4));
@@ -349,13 +349,13 @@ struct alice3multicharm {
349349
getHist(TH1, histPath + "hPi2cDCAz")->Fill(xiccCand.pi2cDCAz() * 1e+4);
350350
getHist(TH1, histPath + "hPiccDCAxy")->Fill(xiccCand.piccDCAxy() * 1e+4);
351351
getHist(TH1, histPath + "hPiccDCAz")->Fill(xiccCand.piccDCAz() * 1e+4);
352-
getHist(TH1, histPath + "hPi1cDCAz")->Fill(xiccCand.pi1cPt());
353-
getHist(TH1, histPath + "hPi2cDCAz")->Fill(xiccCand.pi2cPt());
354-
getHist(TH1, histPath + "hPiccDCAz")->Fill(xiccCand.piccPt());
352+
getHist(TH1, histPath + "hPi1cPt")->Fill(xiccCand.pi1cPt());
353+
getHist(TH1, histPath + "hPi2cPt")->Fill(xiccCand.pi2cPt());
354+
getHist(TH1, histPath + "hPiccPt")->Fill(xiccCand.piccPt());
355355
getHist(TH1, histPath + "hXiccMass")->Fill(xiccCand.xiccMass());
356356
getHist(TH1, histPath + "hXicMass")->Fill(xiccCand.xicMass());
357-
getHist(TH1, histPath + "hXiccPt")->Fill(xiccCand.xiccPt());
358357
getHist(TH1, histPath + "hXicPt")->Fill(xiccCand.xicPt());
358+
getHist(TH1, histPath + "hXiccPt")->Fill(xiccCand.xiccPt());
359359
getHist(TH3, histPath + "h3dXicc")->Fill(xiccCand.xiccPt(), xiccCand.xiccEta(), xiccCand.xiccMass());
360360
}
361361
}

CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
/PWGEM @alibuild @feisenhu @dsekihat @ivorobye
3939
/PWGEM/Dilepton @alibuild @mikesas @rbailhac @dsekihat @ivorobye @feisenhu @hscheid
4040
/PWGEM/PhotonMeson @alibuild @mikesas @rbailhac @m-c-danisch @novitzky @mhemmer-cern @dsekihat
41-
/PWGHF @alibuild @vkucera @fcolamar @fgrosa @fcatalan92 @mfaggin @mmazzilli @deepathoms @NicoleBastid @hahassan7 @jpxrk @apalasciano @zhangbiao-phy @gluparel
41+
/PWGHF @alibuild @vkucera @fcolamar @fgrosa @fcatalan92 @mfaggin @mmazzilli @deepathoms @NicoleBastid @hahassan7 @jpxrk @apalasciano @zhangbiao-phy @gluparel @stefanopolitano
4242
# PWG-LF
4343
/PWGLF @alibuild @sustripathy @skundu692
4444
/PWGLF/DataModel @alibuild @sustripathy @skundu692 @gbencedi @abmodak @fmazzasc @maciacco @dmallick2 @smaff92 @ercolessi @romainschotter

Common/Core/fwdtrackUtilities.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ enum class propagationPoint : int {
4242
kToRabs = 2,
4343
};
4444
using SMatrix55 = ROOT::Math::SMatrix<double, 5, 5, ROOT::Math::MatRepSym<double, 5>>;
45+
using SMatrix55Std = ROOT::Math::SMatrix<double, 5>;
4546
using SMatrix5 = ROOT::Math::SVector<double, 5>;
4647

4748
/// propagate fwdtrack to a certain point.
@@ -98,6 +99,48 @@ o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TCollision
9899

99100
return propmuon;
100101
}
102+
103+
template <typename TFwdTrack, typename TMFTTrack>
104+
o2::dataformats::GlobalFwdTrack refitGlobalMuonCov(TFwdTrack const& muon, TMFTTrack const& mft)
105+
{
106+
auto muonCov = muon.getCovariances();
107+
auto mftCov = mft.getCovariances();
108+
109+
SMatrix55Std jacob = ROOT::Math::SMatrixIdentity();
110+
auto tl = muon.getTgl();
111+
auto invQPt = muon.getInvQPt();
112+
jacob(4, 3) = tl / (invQPt * std::sqrt(1 + tl * tl));
113+
jacob(4, 4) = -std::sqrt(1 + tl * tl) / (invQPt * invQPt);
114+
115+
auto covQP = ROOT::Math::Similarity(jacob, muonCov);
116+
mftCov(4, 0) = 0;
117+
mftCov(4, 1) = 0;
118+
mftCov(4, 2) = 0;
119+
mftCov(4, 3) = 0;
120+
121+
mftCov(0, 4) = 0;
122+
mftCov(1, 4) = 0;
123+
mftCov(2, 4) = 0;
124+
mftCov(3, 4) = 0;
125+
mftCov(4, 4) = covQP(4, 4);
126+
127+
SMatrix55Std jacobInv = ROOT::Math::SMatrixIdentity();
128+
auto qp = std::sqrt(1 + tl * tl) / invQPt;
129+
auto tlMFT = mft.getTgl();
130+
jacobInv(4, 3) = tlMFT / (qp * std::sqrt(1 + tlMFT * tlMFT));
131+
jacobInv(4, 4) = -std::sqrt(1 + tlMFT * tlMFT) / (qp * qp);
132+
auto globalCov = ROOT::Math::Similarity(jacobInv, mftCov);
133+
134+
auto invQPtGlob = std::sqrt(1 + tlMFT * tlMFT) / qp;
135+
136+
o2::dataformats::GlobalFwdTrack globalTrack;
137+
globalTrack.setParameters(mft.getParameters());
138+
globalTrack.setInvQPt(invQPtGlob);
139+
globalTrack.setCovariances(globalCov);
140+
141+
return globalTrack;
142+
}
143+
101144
} // namespace fwdtrackutils
102145
} // namespace o2::aod
103146

Common/TableProducer/eventSelection.cxx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ struct BcSelectionTask {
289289
bcSOR = runInfo.orbitSOR * nBCsPerOrbit;
290290
// duration of TF in bcs
291291
nBCsPerTF = confNumberOfOrbitsPerTF < 0 ? runInfo.orbitsPerTF * nBCsPerOrbit : confNumberOfOrbitsPerTF * nBCsPerOrbit;
292+
if (strLPMProductionTag == "LHC25f3") // temporary workaround for MC production LHC25f3 anchored to Pb-Pb 2023 apass5 (to be removed once the info is in ccdb)
293+
nBCsPerTF = 8 * nBCsPerOrbit;
292294
}
293295

294296
// timestamp of the middle of the run used to access run-wise CCDB entries

0 commit comments

Comments
 (0)