Skip to content

Commit f745cb3

Browse files
authored
Merge branch 'AliceO2Group:master' into PID-Hadrons-in-Jets
2 parents 393e780 + 4b87429 commit f745cb3

215 files changed

Lines changed: 8965 additions & 5298 deletions

File tree

Some content is hidden

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

ALICE3/Core/OTFParticle.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <array>
2424
#include <bitset>
2525
#include <cmath>
26+
#include <cstddef>
2627
#include <cstdint>
2728
#include <span>
2829

ALICE3/Core/TrackUtilities.cxx

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@
2929
#include <vector>
3030

3131
void o2::upgrade::convertTLorentzVectorToO2Track(const int charge,
32-
const TLorentzVector particle,
33-
const std::vector<double> productionVertex,
32+
const TLorentzVector& particle,
33+
const std::vector<double>& productionVertex,
3434
o2::track::TrackParCov& o2track)
3535
{
36-
std::array<float, 5> params;
36+
std::array<float, 5> params = {0.};
3737
std::array<float, 15> covm = {0.};
38-
float s, c, x;
38+
float s{}, c{}, x{};
3939
o2::math_utils::sincos(static_cast<float>(particle.Phi()), s, c);
4040
o2::math_utils::rotateZInv(static_cast<float>(productionVertex[0]), static_cast<float>(productionVertex[1]), x, params[0], s, c);
4141
params[1] = static_cast<float>(productionVertex[2]);
@@ -48,29 +48,27 @@ void o2::upgrade::convertTLorentzVectorToO2Track(const int charge,
4848
new (&o2track)(o2::track::TrackParCov)(x, particle.Phi(), params, covm);
4949
}
5050

51-
float o2::upgrade::computeParticleVelocity(float momentum, float mass)
51+
float o2::upgrade::computeParticleVelocity(const float momentum, const float mass)
5252
{
5353
const float a = momentum / mass;
5454
// uses light speed in cm/ps so output is in those units
5555
return o2::constants::physics::LightSpeedCm2PS * a / std::sqrt((1.f + a * a));
5656
}
5757

58-
float o2::upgrade::computeTrackLength(o2::track::TrackParCov track, float radius, float magneticField)
58+
float o2::upgrade::computeTrackLength(const o2::track::TrackParCov& track, const float radius, const float magneticField)
5959
{
6060
// don't make use of the track parametrization
6161
float length = -100;
6262

6363
o2::math_utils::CircleXYf_t trcCircle;
64-
float sna, csa;
64+
float sna{}, csa{};
6565
track.getCircleParams(magneticField, trcCircle, sna, csa);
6666

6767
// distance between circle centers (one circle is at origin -> easy)
6868
const float centerDistance = std::hypot(trcCircle.xC, trcCircle.yC);
6969

7070
// condition of circles touching - if not satisfied returned length will be -100
7171
if (centerDistance < trcCircle.rC + radius && centerDistance > std::fabs(trcCircle.rC - radius)) {
72-
length = 0.0f;
73-
7472
// base radical direction
7573
const float ux = trcCircle.xC / centerDistance;
7674
const float uy = trcCircle.yC / centerDistance;
@@ -87,17 +85,17 @@ float o2::upgrade::computeTrackLength(o2::track::TrackParCov track, float radius
8785
(centerDistance + trcCircle.rC + radius));
8886

8987
// possible intercept points of track and TOF layer in 2D plane
90-
const float point1[2] = {radical * ux + displace * vx, radical * uy + displace * vy};
91-
const float point2[2] = {radical * ux - displace * vx, radical * uy - displace * vy};
88+
const std::array<float, 2> point1 = {radical * ux + displace * vx, radical * uy + displace * vy};
89+
const std::array<float, 2> point2 = {radical * ux - displace * vx, radical * uy - displace * vy};
9290

9391
// decide on correct intercept point
94-
std::array<float, 3> mom;
92+
std::array<float, 3> mom{};
9593
track.getPxPyPzGlo(mom);
9694
const float scalarProduct1 = point1[0] * mom[0] + point1[1] * mom[1];
9795
const float scalarProduct2 = point2[0] * mom[0] + point2[1] * mom[1];
9896

9997
// get start point
100-
std::array<float, 3> startPoint;
98+
std::array<float, 3> startPoint{};
10199
track.getXYZGlo(startPoint);
102100

103101
float cosAngle = -1000, modulus = -1000;

ALICE3/Core/TrackUtilities.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ namespace o2::upgrade
3636
/// \param productionVertex where the particle was produced
3737
/// \param o2track the address of the resulting TrackParCov
3838
void convertTLorentzVectorToO2Track(const int charge,
39-
const TLorentzVector particle,
40-
const std::vector<double> productionVertex,
39+
const TLorentzVector& particle,
40+
const std::vector<double>& productionVertex,
4141
o2::track::TrackParCov& o2track);
4242

4343
/// Function to convert a TLorentzVector into a perfect Track
@@ -47,9 +47,9 @@ void convertTLorentzVectorToO2Track(const int charge,
4747
/// \param o2track the address of the resulting TrackParCov
4848
/// \param pdg the pdg service
4949
template <typename PdgService>
50-
void convertTLorentzVectorToO2Track(int pdgCode,
51-
TLorentzVector particle,
52-
std::vector<double> productionVertex,
50+
void convertTLorentzVectorToO2Track(const int pdgCode,
51+
const TLorentzVector& particle,
52+
const std::vector<double>& productionVertex,
5353
o2::track::TrackParCov& o2track,
5454
const PdgService& pdg)
5555
{
@@ -80,7 +80,7 @@ void convertOTFParticleToO2Track(const OTFParticle& particle,
8080
/// \param o2track the address of the resulting TrackParCov
8181
/// \param pdg the pdg service
8282
template <typename McParticleType, typename PdgService>
83-
void convertMCParticleToO2Track(McParticleType& particle,
83+
void convertMCParticleToO2Track(const McParticleType& particle,
8484
o2::track::TrackParCov& o2track,
8585
const PdgService& pdg)
8686
{
@@ -94,7 +94,7 @@ void convertMCParticleToO2Track(McParticleType& particle,
9494
/// \param o2track the address of the resulting TrackParCov
9595
/// \param pdg the pdg service
9696
template <typename McParticleType, typename PdgService>
97-
o2::track::TrackParCov convertMCParticleToO2Track(McParticleType& particle,
97+
o2::track::TrackParCov convertMCParticleToO2Track(const McParticleType& particle,
9898
const PdgService& pdg)
9999
{
100100
o2::track::TrackParCov o2track;
@@ -105,13 +105,13 @@ o2::track::TrackParCov convertMCParticleToO2Track(McParticleType& particle,
105105
/// returns velocity in centimeters per picoseconds
106106
/// \param momentum the momentum of the track
107107
/// \param mass the mass of the particle
108-
float computeParticleVelocity(float momentum, float mass);
108+
float computeParticleVelocity(const float momentum, const float mass);
109109

110110
/// function to calculate track length of this track up to a certain radius
111111
/// \param track the input track (TrackParCov)
112112
/// \param radius the radius of the layer you're calculating the length to
113113
/// \param magneticField the magnetic field to use when propagating
114-
float computeTrackLength(o2::track::TrackParCov track, float radius, float magneticField);
114+
float computeTrackLength(const o2::track::TrackParCov& track, const float radius, const float magneticField);
115115

116116
} // namespace o2::upgrade
117117

ALICE3/TableProducer/OTF/onTheFlyDecayer.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <Framework/InitContext.h>
3131
#include <Framework/O2DatabasePDGPlugin.h>
3232
#include <Framework/OutputObjHeader.h>
33+
#include <Framework/StringHelpers.h>
3334
#include <Framework/runDataProcessing.h>
3435
#include <ReconstructionDataFormats/Track.h>
3536

@@ -165,7 +166,7 @@ struct OnTheFlyDecayer {
165166
daughter.setCollisionId(particle.collisionId());
166167
daughter.setBitOn(o2::upgrade::DecayerBits::IsAlive);
167168
daughter.setBitOff(o2::upgrade::DecayerBits::IsPrimary);
168-
daughter.setProductionTime(trackTimeNS);
169+
daughter.setProductionTime(particle.vt() + trackTimeNS);
169170
allParticles.push_back(daughter);
170171
}
171172
ndau += decayStack.size();

ALICE3/TableProducer/alice3strangenessFinder.cxx

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ struct Alice3strangenessFinder {
8888
ConfigurableAxis axisXiMass{"axisXiMass", {200, 1.22f, 1.42f}, "Xi mass axis"};
8989
ConfigurableAxis axisOmegaMass{"axisOmegaMass", {200, 1.57f, 1.77f}, "Omega mass axis"};
9090

91+
ConfigurableAxis axisDCA{"axisDCA", {200, 0, 200}, "DCA axis"};
9192
ConfigurableAxis axisEta{"axisEta", {80, -4.f, 4.f}, "Eta axis"};
9293
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0f, 0.025f, 0.05f, 0.075f, 0.1f, 0.125f, 0.15f, 0.175f, 0.2f, 0.225f, 0.25f, 0.275f, 0.3f, 0.325f, 0.35f, 0.375f, 0.4f, 0.425f, 0.45f, 0.475f, 0.5f, 0.525f, 0.55f, 0.575f, 0.6f, 0.625f, 0.65f, 0.675f, 0.7f, 0.725f, 0.75f, 0.775f, 0.8f, 0.82f, 0.85f, 0.875f, 0.9f, 0.925f, 0.95f, 0.975f, 1.0f, 1.05f, 1.1f}, "pt axis for QA histograms"};
9394

@@ -129,6 +130,7 @@ struct Alice3strangenessFinder {
129130

130131
Configurable<float> v0MaxDauDCA{"v0MaxDauDCA", 0.005f, "DCA between v0 daughters (cm)"};
131132
Configurable<float> cascMaxDauDCA{"cascMaxDauDCA", 0.005f, "DCA between cascade daughters (cm)"};
133+
Configurable<float> cascMaxEta{"cascMaxEta", 2.5f, "DCA between cascade daughters (cm)"};
132134
} presel;
133135

134136
// Operation
@@ -143,6 +145,7 @@ struct Alice3strangenessFinder {
143145

144146
o2::vertexing::DCAFitterN<2> fitter;
145147
Service<o2::framework::O2DatabasePDG> pdgDB;
148+
static constexpr float ToMicrons = 1e+4;
146149

147150
// partitions for v0/casc dau tracks
148151
Partition<Alice3TracksACTS> positiveSecondaryTracksACTS =
@@ -177,6 +180,7 @@ struct Alice3strangenessFinder {
177180

178181
struct Candidate {
179182
int index{-1};
183+
180184
// decay properties
181185
float dcaDau{};
182186
float eta{};
@@ -239,6 +243,7 @@ struct Alice3strangenessFinder {
239243
histos.add("hPtPosDauAfterV0Finding", "", kTH2D, {axisPt, axisPt});
240244
histos.add("hPtNegDauAfterV0Finding", "", kTH2D, {axisPt, axisPt});
241245
histos.add("hEventCounter", "", kTH1D, {{1, 0, 2}}); // counting processed events
246+
242247
auto hV0Counter = histos.add<TH1>("hV0Counter", "hV0Counter", kTH1D, {{4, 0, 4}});
243248
hV0Counter->GetXaxis()->SetBinLabel(1, "K0S");
244249
hV0Counter->GetXaxis()->SetBinLabel(2, "Lambda");
@@ -248,9 +253,6 @@ struct Alice3strangenessFinder {
248253
histos.add("hRadiusVsHitsNeg", "", kTH2D, {{400, 0, 400}, {12, 0.5, 12.5}}); // radius vs hist for MC studies
249254
histos.add("hRadiusVsHitsPos", "", kTH2D, {{400, 0, 400}, {12, 0.5, 12.5}}); // radius vs hist for MC studies
250255

251-
histos.add("hXiMass", "", kTH1D, {axisXiMass});
252-
histos.add("hOmegaMass", "", kTH1D, {axisOmegaMass});
253-
254256
auto hV0Building = histos.add<TH1>("hV0Building", "hV0Building", kTH1D, {{10, 0.5, 10.5}});
255257
hV0Building->GetXaxis()->SetBinLabel(1, "Pair");
256258
hV0Building->GetXaxis()->SetBinLabel(2, "Pdg check");
@@ -272,6 +274,12 @@ struct Alice3strangenessFinder {
272274
histos.add("Generated/hGeneratedAntiOmega", "hGeneratedAntiOmega", kTH2D, {{axisPt}, {axisEta}});
273275
}
274276

277+
if (buildCascade) {
278+
histos.add("CascadeBuilding/hDcaBetweenDaus", "hDcaBetweenDaus", kTH1D, {{axisDCA}});
279+
histos.add("CascadeBuilding/hXiMass", "", kTH1D, {axisXiMass});
280+
histos.add("CascadeBuilding/hOmegaMass", "", kTH1D, {axisOmegaMass});
281+
}
282+
275283
histos.print();
276284
}
277285

@@ -585,6 +593,19 @@ struct Alice3strangenessFinder {
585593
continue; // failed at building candidate
586594
}
587595

596+
// Apply preselections
597+
if (cascCand.dcaDau > presel.cascMaxDauDCA) {
598+
continue; // combined tracks should be reasonanly close
599+
}
600+
601+
if (cascCand.eta > presel.cascMaxEta) {
602+
continue; // candidate outside of acceptance
603+
}
604+
605+
if (std::hypot(v0Cand.posSV[0], v0Cand.posSV[1]) < std::hypot(cascCand.posSV[0], cascCand.posSV[1])) {
606+
continue; // causality
607+
}
608+
588609
const float massXi = RecoDecay::m(std::array{std::array{cascCand.pDau0[0], cascCand.pDau0[1], cascCand.pDau0[2]},
589610
std::array{cascCand.pDau1[0], cascCand.pDau1[1], cascCand.pDau1[2]}},
590611
std::array{o2::constants::physics::MassLambda, o2::constants::physics::MassPionCharged});
@@ -606,8 +627,9 @@ struct Alice3strangenessFinder {
606627
vtx[0], vtx[1], vtx[2]);
607628

608629
histos.fill(HIST("hCascadeBuilding"), 4.0);
609-
histos.fill(HIST("hXiMass"), massXi);
610-
histos.fill(HIST("hOmegaMass"), massOm);
630+
histos.fill(HIST("CascadeBuilding/hDcaBetweenDaus"), cascCand.dcaDau * ToMicrons);
631+
histos.fill(HIST("CascadeBuilding/hXiMass"), massXi);
632+
histos.fill(HIST("CascadeBuilding/hOmegaMass"), massOm);
611633

612634
tableA3CascadeMcLabels(cascCand.index);
613635
tableCascIndices(0, // cascade index, dummy value

ALICE3/Tasks/alice3-cdeuteron.cxx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@
2626
#include <Framework/OutputObjHeader.h>
2727
#include <Framework/SliceCache.h>
2828
#include <Framework/runDataProcessing.h>
29+
#include <GPU/GPUROOTCartesianFwd.h>
2930

3031
#include <TH1.h>
3132
#include <TLorentzVector.h>
3233
#include <TMath.h>
3334
#include <TString.h>
3435

35-
#include <GPUROOTCartesianFwd.h>
36-
3736
#include <array>
3837
#include <cmath>
3938

ALICE3/Tasks/alice3-dilepton.cxx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,20 @@
2424
#include <CommonConstants/PhysicsConstants.h>
2525
#include <Framework/ASoAHelpers.h>
2626
#include <Framework/AnalysisDataModel.h>
27+
#include <Framework/AnalysisHelpers.h>
2728
#include <Framework/AnalysisTask.h>
29+
#include <Framework/Configurable.h>
2830
#include <Framework/HistogramRegistry.h>
31+
#include <Framework/HistogramSpec.h>
32+
#include <Framework/InitContext.h>
2933
#include <Framework/O2DatabasePDGPlugin.h>
34+
#include <Framework/OutputObjHeader.h>
3035
#include <Framework/runDataProcessing.h>
3136

32-
#include <Math/Vector4D.h>
37+
#include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h)
38+
#include <Math/Vector4Dfwd.h>
39+
#include <THnSparse.h>
40+
#include <TMath.h>
3341

3442
#include <vector>
3543

ALICE3/Tasks/alice3-prefilterdilepton.cxx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,32 @@
1414
/// \author s.scheid@cern.ch, daiki.sekihata@cern.ch
1515
///
1616

17-
#include "ALICE3/DataModel/OTFCollision.h"
1817
#include "ALICE3/DataModel/OTFRICH.h"
1918
#include "ALICE3/DataModel/OTFTOF.h"
2019
#include "ALICE3/DataModel/prefilterDilepton.h"
2120
#include "ALICE3/DataModel/tracksAlice3.h"
22-
#include "Common/DataModel/TrackSelectionTables.h"
2321

2422
#include <CommonConstants/PhysicsConstants.h>
2523
#include <Framework/ASoAHelpers.h>
2624
#include <Framework/AnalysisDataModel.h>
25+
#include <Framework/AnalysisHelpers.h>
2726
#include <Framework/AnalysisTask.h>
27+
#include <Framework/Configurable.h>
2828
#include <Framework/HistogramRegistry.h>
29+
#include <Framework/HistogramSpec.h>
30+
#include <Framework/InitContext.h>
2931
#include <Framework/O2DatabasePDGPlugin.h>
32+
#include <Framework/OutputObjHeader.h>
3033
#include <Framework/runDataProcessing.h>
3134
#include <MathUtils/Utils.h>
3235

3336
#include <Math/GenVector/VectorUtil.h>
34-
#include <Math/Vector4D.h>
37+
#include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h)
38+
#include <Math/Vector4Dfwd.h>
39+
#include <TMath.h>
3540

41+
#include <cstdint>
42+
#include <cstdlib>
3643
#include <unordered_map>
3744
#include <vector>
3845

0 commit comments

Comments
 (0)