Skip to content

Commit 964a2ed

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 953b290 + ec85005 commit 964a2ed

File tree

204 files changed

+21667
-6933
lines changed

Some content is hidden

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

204 files changed

+21667
-6933
lines changed

ALICE3/DataModel/OTFMcTrackExtra.h

Lines changed: 0 additions & 42 deletions
This file was deleted.

ALICE3/DataModel/OTFMulticharm.h

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#define ALICE3_DATAMODEL_OTFMULTICHARM_H_
2222

2323
// O2 includes
24+
#include "ALICE3/DataModel/OTFStrangeness.h"
25+
2426
#include "Framework/AnalysisDataModel.h"
2527

2628
namespace o2::aod
@@ -36,8 +38,10 @@ DECLARE_SOA_COLUMN(XicMass, xicMass, float);
3638
DECLARE_SOA_COLUMN(XiccMass, xiccMass, float);
3739

3840
// kine vars
39-
DECLARE_SOA_COLUMN(Pt, pt, float);
40-
DECLARE_SOA_COLUMN(Eta, eta, float);
41+
DECLARE_SOA_COLUMN(XiccPt, xiccPt, float);
42+
DECLARE_SOA_COLUMN(XiccEta, xiccEta, float);
43+
DECLARE_SOA_COLUMN(XicPt, xicPt, float);
44+
DECLARE_SOA_COLUMN(XicEta, xicEta, float);
4145

4246
// topo vars
4347
DECLARE_SOA_COLUMN(XiDCAz, xiDCAz, float);
@@ -49,18 +53,18 @@ DECLARE_SOA_COLUMN(XiccDauDCA, xiccDauDCA, float);
4953
DECLARE_SOA_COLUMN(XiccDCAxy, xiccDCAxy, float);
5054
DECLARE_SOA_COLUMN(XiccDCAz, xiccDCAz, float);
5155

52-
DECLARE_SOA_COLUMN(PiFromXiDCAxy, piFromXiDCAxy, float);
53-
DECLARE_SOA_COLUMN(PiFromLaDCAxy, piFromLaDCAxy, float);
54-
DECLARE_SOA_COLUMN(PrFromLaDCAxy, prFromLaDCAxy, float);
55-
DECLARE_SOA_COLUMN(PiFromXiDCAz, piFromXiDCAz, float);
56-
DECLARE_SOA_COLUMN(PiFromLaDCAz, piFromLaDCAz, float);
57-
DECLARE_SOA_COLUMN(PrFromLaDCAz, prFromLaDCAz, float);
56+
DECLARE_SOA_COLUMN(BachDCAxy, bachDCAxy, float);
57+
DECLARE_SOA_COLUMN(BachDCAz, bachDCAz, float);
58+
DECLARE_SOA_COLUMN(PosDCAxy, posDCAxy, float);
59+
DECLARE_SOA_COLUMN(PosDCAz, posDCAz, float);
60+
DECLARE_SOA_COLUMN(NegDCAxy, negDCAxy, float);
61+
DECLARE_SOA_COLUMN(NegDCAz, negDCAz, float);
5862

5963
DECLARE_SOA_COLUMN(Pi1cDCAxy, pi1cDCAxy, float);
60-
DECLARE_SOA_COLUMN(Pi2cDCAxy, pi2cDCAxy, float);
61-
DECLARE_SOA_COLUMN(PiccDCAxy, piccDCAxy, float);
6264
DECLARE_SOA_COLUMN(Pi1cDCAz, pi1cDCAz, float);
65+
DECLARE_SOA_COLUMN(Pi2cDCAxy, pi2cDCAxy, float);
6366
DECLARE_SOA_COLUMN(Pi2cDCAz, pi2cDCAz, float);
67+
DECLARE_SOA_COLUMN(PiccDCAxy, piccDCAxy, float);
6468
DECLARE_SOA_COLUMN(PiccDCAz, piccDCAz, float);
6569

6670
// Lengths
@@ -75,14 +79,25 @@ DECLARE_SOA_COLUMN(Pi1cTofDeltaInner, pi1cTofDeltaInner, float);
7579
DECLARE_SOA_COLUMN(Pi1cTofNSigmaInner, pi1cTofNSigmaInner, float);
7680
DECLARE_SOA_COLUMN(Pi1cTofDeltaOuter, pi1cTofDeltaOuter, float);
7781
DECLARE_SOA_COLUMN(Pi1cTofNSigmaOuter, pi1cTofNSigmaOuter, float);
82+
DECLARE_SOA_COLUMN(Pi1cHasRichSignal, pi1cHasRichSignal, bool);
83+
DECLARE_SOA_COLUMN(Pi1cRichNSigma, pi1cRichNSigma, float);
84+
DECLARE_SOA_COLUMN(Pi1cPdgCode, pi1cPdgCode, int);
85+
7886
DECLARE_SOA_COLUMN(Pi2cTofDeltaInner, pi2cTofDeltaInner, float);
7987
DECLARE_SOA_COLUMN(Pi2cTofNSigmaInner, pi2cTofNSigmaInner, float);
8088
DECLARE_SOA_COLUMN(Pi2cTofDeltaOuter, pi2cTofDeltaOuter, float);
8189
DECLARE_SOA_COLUMN(Pi2cTofNSigmaOuter, pi2cTofNSigmaOuter, float);
90+
DECLARE_SOA_COLUMN(Pi2cHasRichSignal, pi2cHasRichSignal, bool);
91+
DECLARE_SOA_COLUMN(Pi2cRichNSigma, pi2cRichNSigma, float);
92+
DECLARE_SOA_COLUMN(Pi2cPdgCode, pi2cPdgCode, int);
93+
8294
DECLARE_SOA_COLUMN(PiccTofDeltaInner, piccTofDeltaInner, float);
8395
DECLARE_SOA_COLUMN(PiccTofNSigmaInner, piccTofNSigmaInner, float);
8496
DECLARE_SOA_COLUMN(PiccTofDeltaOuter, piccTofDeltaOuter, float);
8597
DECLARE_SOA_COLUMN(PiccTofNSigmaOuter, piccTofNSigmaOuter, float);
98+
DECLARE_SOA_COLUMN(PiccHasRichSignal, piccHasRichSignal, bool);
99+
DECLARE_SOA_COLUMN(PiccRichNSigma, piccRichNSigma, float);
100+
DECLARE_SOA_COLUMN(PiccPdgCode, piccPdgCode, int);
86101

87102
// Daughter info
88103
DECLARE_SOA_COLUMN(PosPt, posPt, float);
@@ -100,6 +115,7 @@ DECLARE_SOA_COLUMN(PiccPt, piccPt, float);
100115
DECLARE_SOA_COLUMN(PiccEta, piccEta, float);
101116

102117
} // namespace otfmulticharm
118+
103119
DECLARE_SOA_TABLE(MCharmIndices, "AOD", "MCharmIndices",
104120
o2::soa::Index<>,
105121
otfmulticharm::CascadeId,
@@ -108,12 +124,15 @@ DECLARE_SOA_TABLE(MCharmIndices, "AOD", "MCharmIndices",
108124
otfmulticharm::XiCCPionId);
109125

110126
DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
111-
otfmulticharm::XicDauDCA,
127+
otfmulticharm::XiccMass,
128+
otfmulticharm::XiccPt,
129+
otfmulticharm::XiccEta,
112130
otfmulticharm::XiccDauDCA,
131+
113132
otfmulticharm::XicMass,
114-
otfmulticharm::XiccMass,
115-
otfmulticharm::Pt,
116-
otfmulticharm::Eta,
133+
otfmulticharm::XicPt,
134+
otfmulticharm::XicEta,
135+
otfmulticharm::XicDauDCA,
117136

118137
otfmulticharm::XiDCAxy,
119138
otfmulticharm::XiDCAz,
@@ -122,13 +141,6 @@ DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
122141
otfmulticharm::XiccDCAxy,
123142
otfmulticharm::XiccDCAz,
124143

125-
otfmulticharm::PiFromXiDCAxy,
126-
otfmulticharm::PiFromXiDCAz,
127-
otfmulticharm::PiFromLaDCAxy,
128-
otfmulticharm::PiFromLaDCAz,
129-
otfmulticharm::PrFromLaDCAxy,
130-
otfmulticharm::PrFromLaDCAz,
131-
132144
otfmulticharm::Pi1cDCAxy,
133145
otfmulticharm::Pi1cDCAz,
134146
otfmulticharm::Pi2cDCAxy,
@@ -141,38 +153,53 @@ DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
141153
otfmulticharm::XicProperLength,
142154
otfmulticharm::XicDistanceFromPV,
143155
otfmulticharm::XiccProperLength,
156+
otfmulticharm::Pi1cPt,
157+
otfmulticharm::Pi2cPt,
158+
otfmulticharm::PiccPt);
144159

160+
DECLARE_SOA_TABLE(MCharmPID, "AOD", "MCharmPID",
145161
otfmulticharm::Pi1cTofDeltaInner,
146162
otfmulticharm::Pi1cTofNSigmaInner,
147163
otfmulticharm::Pi1cTofDeltaOuter,
148164
otfmulticharm::Pi1cTofNSigmaOuter,
165+
otfmulticharm::Pi1cHasRichSignal,
166+
otfmulticharm::Pi1cRichNSigma,
167+
otfmulticharm::Pi1cPdgCode,
149168

150169
otfmulticharm::Pi2cTofDeltaInner,
151170
otfmulticharm::Pi2cTofNSigmaInner,
152171
otfmulticharm::Pi2cTofDeltaOuter,
153172
otfmulticharm::Pi2cTofNSigmaOuter,
173+
otfmulticharm::Pi2cHasRichSignal,
174+
otfmulticharm::Pi2cRichNSigma,
175+
otfmulticharm::Pi2cPdgCode,
154176

155177
otfmulticharm::PiccTofDeltaInner,
156178
otfmulticharm::PiccTofNSigmaInner,
157179
otfmulticharm::PiccTofDeltaOuter,
158180
otfmulticharm::PiccTofNSigmaOuter,
181+
otfmulticharm::PiccHasRichSignal,
182+
otfmulticharm::PiccRichNSigma,
183+
otfmulticharm::PiccPdgCode);
159184

185+
DECLARE_SOA_TABLE(MCharmExtra, "AOD", "MCharmExtra",
160186
otfmulticharm::BachPt,
161187
otfmulticharm::BachEta,
188+
otfmulticharm::BachDCAxy,
189+
otfmulticharm::BachDCAz,
162190

163191
otfmulticharm::PosPt,
164192
otfmulticharm::PosEta,
193+
otfmulticharm::PosDCAxy,
194+
otfmulticharm::PosDCAz,
165195

166196
otfmulticharm::NegPt,
167197
otfmulticharm::NegEta,
198+
otfmulticharm::NegDCAxy,
199+
otfmulticharm::NegDCAz,
168200

169-
otfmulticharm::Pi1cPt,
170201
otfmulticharm::Pi1cEta,
171-
172-
otfmulticharm::Pi2cPt,
173202
otfmulticharm::Pi2cEta,
174-
175-
otfmulticharm::PiccPt,
176203
otfmulticharm::PiccEta);
177204

178205
} // namespace o2::aod

ALICE3/DataModel/OTFRICH.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ DECLARE_SOA_DYNAMIC_COLUMN(NSigmaRich, nSigmaRich, //! General f
5555
}
5656
});
5757

58-
DECLARE_SOA_COLUMN(HasSig, hasSig, bool); //! Has signal in the barrel rich (is particle over threshold)
59-
DECLARE_SOA_COLUMN(HasSigEl, hasSigEl, bool); //! Has nSigma electron BarrelRich (is electron over threshold)
60-
DECLARE_SOA_COLUMN(HasSigMu, hasSigMu, bool); //! Has nSigma muon BarrelRich (is muon over threshold)
61-
DECLARE_SOA_COLUMN(HasSigPi, hasSigPi, bool); //! Has nSigma pion BarrelRich (is pion over threshold)
62-
DECLARE_SOA_COLUMN(HasSigKa, hasSigKa, bool); //! Has nSigma kaon BarrelRich (is kaon over threshold)
63-
DECLARE_SOA_COLUMN(HasSigPr, hasSigPr, bool); //! Has nSigma proton BarrelRich (is proton over threshold)
58+
DECLARE_SOA_COLUMN(HasSig, hasSig, bool); //! Has signal in the barrel rich (is particle over threshold)
59+
DECLARE_SOA_COLUMN(HasSigInGas, hasSigInGas, bool); //! Has signal in the gas radiator in the barrel rich (is particle over threshold)
60+
DECLARE_SOA_COLUMN(HasSigEl, hasSigEl, bool); //! Has nSigma electron BarrelRich (is electron over threshold)
61+
DECLARE_SOA_COLUMN(HasSigMu, hasSigMu, bool); //! Has nSigma muon BarrelRich (is muon over threshold)
62+
DECLARE_SOA_COLUMN(HasSigPi, hasSigPi, bool); //! Has nSigma pion BarrelRich (is pion over threshold)
63+
DECLARE_SOA_COLUMN(HasSigKa, hasSigKa, bool); //! Has nSigma kaon BarrelRich (is kaon over threshold)
64+
DECLARE_SOA_COLUMN(HasSigPr, hasSigPr, bool); //! Has nSigma proton BarrelRich (is proton over threshold)
6465

6566
} // namespace upgrade_rich
6667
DECLARE_SOA_TABLE(UpgradeRichs, "AOD", "UPGRADERICH",
@@ -83,7 +84,8 @@ DECLARE_SOA_TABLE(UpgradeRichSignals, "AOD", "UPGRADERICHSIG",
8384
upgrade_rich::HasSigMu,
8485
upgrade_rich::HasSigPi,
8586
upgrade_rich::HasSigKa,
86-
upgrade_rich::HasSigPr);
87+
upgrade_rich::HasSigPr,
88+
upgrade_rich::HasSigInGas);
8789

8890
using UpgradeRichSignal = UpgradeRichSignals::iterator;
8991

ALICE3/TableProducer/OTF/onTheFlyRichPid.cxx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ struct OnTheFlyRichPid {
105105
Configurable<bool> flagIncludeTrackAngularRes{"flagIncludeTrackAngularRes", true, "flag to include or exclude track time resolution"};
106106
Configurable<float> multiplicityEtaRange{"multiplicityEtaRange", 0.800000012, "eta range to compute the multiplicity"};
107107
Configurable<bool> flagRICHLoadDelphesLUTs{"flagRICHLoadDelphesLUTs", false, "flag to load Delphes LUTs for tracking correction (use recoTrack parameters if false)"};
108+
Configurable<float> gasRadiatorRindex{"gasRadiatorRindex", 1.0006f, "gas radiator refractive index"};
109+
Configurable<float> gasRichRadiatorThickness{"gasRichRadiatorThickness", 25.f, "gas radiator thickness (cm)"};
108110
Configurable<float> bRichRefractiveIndexSector0{"bRichRefractiveIndexSector0", 1.03, "barrel RICH refractive index central(s)"}; // central(s)
109111
Configurable<float> bRichRefractiveIndexSector1{"bRichRefractiveIndexSector1", 1.03, "barrel RICH refractive index central(s)-1 and central(s)+1"}; // central(s)-1 and central(s)+1
110112
Configurable<float> bRichRefractiveIndexSector2{"bRichRefractiveIndexSector2", 1.03, "barrel RICH refractive index central(s)-2 and central(s)+2"}; // central(s)-2 and central(s)+2
@@ -505,6 +507,22 @@ struct OnTheFlyRichPid {
505507
return false; // Particle is below the threshold
506508
}
507509

510+
bool isOverTrhesholdInGasRadiator(const float momentum, const float mass)
511+
{
512+
if (momentum < mass / std::sqrt(gasRadiatorRindex * gasRadiatorRindex - 1.0)) { // Check if particle is above the threshold
513+
return false;
514+
}
515+
const float angle = std::acos(std::sqrt(momentum * momentum + mass * mass) / (momentum * gasRadiatorRindex));
516+
const float meanNumberofDetectedPhotons = 230. * std::sin(angle) * std::sin(angle) * gasRichRadiatorThickness;
517+
518+
// Require at least 3 photons on average for real angle reconstruction
519+
static constexpr float kMinPhotons = 3.f;
520+
if (meanNumberofDetectedPhotons <= kMinPhotons) {
521+
return false;
522+
}
523+
return true;
524+
}
525+
508526
/// returns linear interpolation
509527
/// \param x the eta we want the resolution for
510528
/// \param x0 the closest smaller available eta
@@ -742,9 +760,9 @@ struct OnTheFlyRichPid {
742760

743761
for (const auto& track : tracks) {
744762

745-
auto fillDummyValues = [&]() {
763+
auto fillDummyValues = [&](bool gasRich = false) {
746764
upgradeRich(kErrorValue, kErrorValue, kErrorValue, kErrorValue, kErrorValue);
747-
upgradeRichSignal(false, false, false, false, false, false);
765+
upgradeRichSignal(false, false, false, false, false, false, gasRich);
748766
};
749767

750768
// first step: find precise arrival time (if any)
@@ -770,16 +788,17 @@ struct OnTheFlyRichPid {
770788
}
771789

772790
// find track bRICH sector
773-
int iSecor = findSector(o2track.getEta());
791+
const int iSecor = findSector(o2track.getEta());
774792
if (iSecor < 0) {
775793
fillDummyValues();
776794
continue;
777795
}
778796

797+
const bool expectedAngleBarrelGasRichOk = isOverTrhesholdInGasRadiator(o2track.getP(), pdgInfo->Mass());
779798
float expectedAngleBarrelRich = kErrorValue;
780799
const bool expectedAngleBarrelRichOk = cherenkovAngle(o2track.getP(), pdgInfo->Mass(), aerogelRindex[iSecor], expectedAngleBarrelRich);
781800
if (!expectedAngleBarrelRichOk) {
782-
fillDummyValues();
801+
fillDummyValues(expectedAngleBarrelGasRichOk);
783802
continue; // Particle is below the threshold or not enough photons
784803
}
785804
// float barrelRICHAngularResolution = angularResolution(o2track.getEta());
@@ -959,7 +978,7 @@ struct OnTheFlyRichPid {
959978

960979
// Sigmas have been fully calculated. Please populate the NSigma helper table (once per track)
961980
upgradeRich(nSigmaBarrelRich[0], nSigmaBarrelRich[1], nSigmaBarrelRich[2], nSigmaBarrelRich[3], nSigmaBarrelRich[4]);
962-
upgradeRichSignal(expectedAngleBarrelRichOk, signalBarrelRich[0], signalBarrelRich[1], signalBarrelRich[2], signalBarrelRich[3], signalBarrelRich[4]);
981+
upgradeRichSignal(expectedAngleBarrelRichOk, signalBarrelRich[0], signalBarrelRich[1], signalBarrelRich[2], signalBarrelRich[3], signalBarrelRich[4], expectedAngleBarrelGasRichOk);
963982
}
964983
}
965984
};

0 commit comments

Comments
 (0)