Skip to content

Commit 46f2490

Browse files
authored
[PWGJE] Update JP weighted and modification of prong and sv acceptance (AliceO2Group#7944)
* Update JP weighted and modification of prong and sv acceptance * fix merge master
1 parent 40cd69b commit 46f2490

File tree

3 files changed

+106
-166
lines changed

3 files changed

+106
-166
lines changed

PWGJE/Core/JetTaggingUtilities.h

Lines changed: 21 additions & 151 deletions
Original file line numberDiff line numberDiff line change
@@ -384,17 +384,15 @@ bool trackAcceptanceWithDca(T const& track, float trackDcaXYMax, float trackDcaZ
384384
}
385385

386386
/**
387-
* retrun acceptance of prong about chi2 and error of decay length due to cut for high quality secondary vertex
387+
* retrun acceptance of prong due to cut for high quality secondary vertex
388388
*/
389389
template <typename T>
390-
bool prongAcceptance(T const& prong, float prongChi2PCAMin, float prongChi2PCAMax, float prongsigmaLxyMax, float prongIPxyMin, float prongIPxyMax, float prongDispersionMax, bool doXYZ)
390+
bool prongAcceptance(T const& prong, float prongChi2PCAMin, float prongChi2PCAMax, float prongsigmaLxyMax, float prongIPxyMin, float prongIPxyMax, bool doXYZ)
391391
{
392392
if (prong.chi2PCA() < prongChi2PCAMin)
393393
return false;
394394
if (prong.chi2PCA() > prongChi2PCAMax)
395395
return false;
396-
if (prong.dispersion() > prongDispersionMax)
397-
return false;
398396
if (!doXYZ) {
399397
if (prong.errorDecayLengthXY() > prongsigmaLxyMax)
400398
return false;
@@ -414,6 +412,17 @@ bool prongAcceptance(T const& prong, float prongChi2PCAMin, float prongChi2PCAMa
414412
return true;
415413
}
416414

415+
/**
416+
* retrun acceptance of secondary vertex due to cut for high quality secondary vertex
417+
*/
418+
template <typename T>
419+
bool svAcceptance(T const& sv, float svDispersionMax)
420+
{
421+
if (sv.dispersion() > svDispersionMax)
422+
return false;
423+
return true;
424+
}
425+
417426
/**
418427
* return geometric sign which is calculated scalar product between jet axis with DCA (track propagated to PV )
419428
* positive and negative value are expected from primary vertex
@@ -569,166 +578,27 @@ float getJetProbability(T const& fResoFuncjet, U const& jet, V const& jtracks, f
569578
}
570579

571580
// For secaondy vertex method utilites
572-
class bjetCandSV
573-
{
574-
public:
575-
bjetCandSV() = default;
576-
577-
bjetCandSV(float xpv, float ypv, float zpv, float xsv, float ysv, float zsv,
578-
float pxVal, float pyVal, float pzVal, float eVal, float mVal, float chi2Val,
579-
float dispersion, float errDecayLength, float errDecayLengthXY,
580-
float rSecVertex, float ptVal, float pVal,
581-
std::array<float, 3> pVec, float etaVal, float phiVal,
582-
float yVal, float decayLen, float decayLenXY,
583-
float decayLenNorm, float decayLenXYNorm,
584-
float cpaVal, float impParXY)
585-
: m_xPVertex(xpv), m_yPVertex(ypv), m_zPVertex(zpv), m_xSecondaryVertex(xsv), m_ySecondaryVertex(ysv), m_zSecondaryVertex(zsv), m_px(pxVal), m_py(pyVal), m_pz(pzVal), m_e(eVal), m_m(mVal), m_chi2PCA(chi2Val), m_dispersion(dispersion), m_errorDecayLength(errDecayLength), m_errorDecayLengthXY(errDecayLengthXY), m_rSecondaryVertex(rSecVertex), m_pt(ptVal), m_p(pVal), m_pVector(pVec), m_eta(etaVal), m_phi(phiVal), m_y(yVal), m_decayLength(decayLen), m_decayLengthXY(decayLenXY), m_decayLengthNormalised(decayLenNorm), m_decayLengthXYNormalised(decayLenXYNorm), m_cpa(cpaVal), m_impactParameterXY(impParXY)
586-
{
587-
}
588-
589-
float xPVertex() const { return m_xPVertex; }
590-
float yPVertex() const { return m_yPVertex; }
591-
float zPVertex() const { return m_zPVertex; }
592-
593-
float xSecondaryVertex() const { return m_xSecondaryVertex; }
594-
float ySecondaryVertex() const { return m_ySecondaryVertex; }
595-
float zSecondaryVertex() const { return m_zSecondaryVertex; }
596-
597-
float px() const { return m_px; }
598-
float py() const { return m_py; }
599-
float pz() const { return m_pz; }
600-
float e() const { return m_e; }
601-
float m() const { return m_m; }
602-
float chi2PCA() const { return m_chi2PCA; }
603-
float dispersion() const { return m_dispersion; }
604-
605-
float errorDecayLength() const { return m_errorDecayLength; }
606-
float errorDecayLengthXY() const { return m_errorDecayLengthXY; }
607-
608-
float rSecondaryVertex() const { return m_rSecondaryVertex; }
609-
float pt() const { return m_pt; }
610-
float p() const { return m_p; }
611-
612-
std::array<float, 3> pVector() const { return m_pVector; }
613-
614-
float eta() const { return m_eta; }
615-
float phi() const { return m_phi; }
616-
float y() const { return m_y; }
617-
618-
float decayLength() const { return m_decayLength; }
619-
float decayLengthXY() const { return m_decayLengthXY; }
620-
float decayLengthNormalised() const { return m_decayLengthNormalised; }
621-
float decayLengthXYNormalised() const { return m_decayLengthXYNormalised; }
622-
623-
float cpa() const { return m_cpa; }
624-
float impactParameterXY() const { return m_impactParameterXY; }
625-
626-
private:
627-
float m_xPVertex, m_yPVertex, m_zPVertex;
628-
float m_xSecondaryVertex, m_ySecondaryVertex, m_zSecondaryVertex;
629-
float m_px, m_py, m_pz, m_e, m_m, m_chi2PCA, m_dispersion;
630-
float m_errorDecayLength, m_errorDecayLengthXY;
631-
float m_rSecondaryVertex, m_pt, m_p;
632-
std::array<float, 3> m_pVector;
633-
float m_eta, m_phi, m_y;
634-
float m_decayLength, m_decayLengthXY, m_decayLengthNormalised, m_decayLengthXYNormalised;
635-
float m_cpa, m_impactParameterXY;
636-
};
637-
638581
template <typename ProngType, typename JetType>
639-
bjetCandSV jetFromProngMaxDecayLength(const JetType& jet, float const& prongChi2PCAMin, float const& prongChi2PCAMax, float const& prongsigmaLxyMax, float const& prongIPxyMin, float const& prongIPxyMax, const bool& doXYZ = false)
582+
typename ProngType::iterator jetFromProngMaxDecayLength(const JetType& jet, float const& prongChi2PCAMin, float const& prongChi2PCAMax, float const& prongsigmaLxyMax, float const& prongIPxyMin, float const& prongIPxyMax, const bool& doXYZ = false)
640583
{
641-
float xPVertex = 0.0f;
642-
float yPVertex = 0.0f;
643-
float zPVertex = 0.0f;
644-
float xSecondaryVertex = 0.0f;
645-
float ySecondaryVertex = 0.0f;
646-
float zSecondaryVertex = 0.0f;
647-
float px = 0.0f;
648-
float py = 0.0f;
649-
float pz = 0.0f;
650-
float e = 0.0f;
651-
float m = 0.0f;
652-
float chi2PCA = 0.0f;
653-
float dispersion = 0.0f;
654-
float errorDecayLength = 0.0f;
655-
float errorDecayLengthXY = 0.0f;
656-
657-
float rSecondaryVertex = 0.0f;
658-
float pt = 0.0f;
659-
float p = 0.0f;
660-
std::array<float, 3> pVector = {0.0f, 0.0f, 0.0f};
661-
float eta = 0.0f;
662-
float phi = 0.0f;
663-
float y = 0.0f;
664-
float decayLength = 0.0f;
665-
float decayLengthXY = 0.0f;
666-
float decayLengthNormalised = 0.0f;
667-
float decayLengthXYNormalised = 0.0f;
668-
float cpa = 0.0f;
669-
float impactParameterXY = 0.0f;
670-
671584
float maxSxy = -1.0f;
672-
585+
typename ProngType::iterator bjetCand;
673586
for (const auto& prong : jet.template secondaryVertices_as<ProngType>()) {
674-
float Sxy = -1.;
675-
if (!doXYZ) {
676-
Sxy = prong.decayLengthXY() / prong.errorDecayLengthXY();
677-
} else {
678-
Sxy = prong.decayLength() / prong.errorDecayLength();
679-
}
680-
587+
if (!prongAcceptance(prong, prongChi2PCAMin, prongChi2PCAMax, prongsigmaLxyMax, prongIPxyMin, prongIPxyMax, doXYZ))
588+
continue;
589+
auto Sxy = prong.decayLengthXY() / prong.errorDecayLengthXY();
681590
if (maxSxy < Sxy) {
682-
maxSxy = Sxy;
683-
684-
xPVertex = prong.xPVertex();
685-
yPVertex = prong.yPVertex();
686-
zPVertex = prong.zPVertex();
687-
xSecondaryVertex = prong.xSecondaryVertex();
688-
ySecondaryVertex = prong.ySecondaryVertex();
689-
zSecondaryVertex = prong.zSecondaryVertex();
690-
px = prong.px();
691-
py = prong.py();
692-
pz = prong.pz();
693-
e = prong.e();
694-
m = prong.m();
695-
chi2PCA = prong.chi2PCA();
696-
dispersion = prong.dispersion();
697-
errorDecayLength = prong.errorDecayLength();
698-
errorDecayLengthXY = prong.errorDecayLengthXY();
699-
rSecondaryVertex = prong.rSecondaryVertex();
700-
pt = prong.pt();
701-
p = prong.p();
702-
pVector = prong.pVector();
703-
eta = prong.eta();
704-
phi = prong.phi();
705-
y = prong.y();
706-
decayLength = prong.decayLength();
707-
decayLengthXY = prong.decayLengthXY();
708-
decayLengthNormalised = prong.decayLengthNormalised();
709-
decayLengthXYNormalised = prong.decayLengthXYNormalised();
710-
cpa = prong.cpa();
711-
impactParameterXY = prong.impactParameterXY();
591+
bjetCand = prong;
712592
}
713593
}
714-
715-
return bjetCandSV(
716-
xPVertex, yPVertex, zPVertex,
717-
xSecondaryVertex, ySecondaryVertex, zSecondaryVertex,
718-
px, py, pz, e, m, chi2PCA,
719-
dispersion, errorDecayLength, errorDecayLengthXY,
720-
rSecondaryVertex, pt, p,
721-
pVector, eta, phi,
722-
y, decayLength, decayLengthXY,
723-
decayLengthNormalised, decayLengthXYNormalised,
724-
cpa, impactParameterXY);
594+
return bjetCand;
725595
}
726596

727597
template <typename T, typename U>
728598
bool isTaggedJetSV(T const jet, U const& /*prongs*/, float const& prongChi2PCAMin, float const& prongChi2PCAMax, float const& prongsigmaLxyMax, float const& prongIPxyMin, float const& prongIPxyMax, float prongDispersionMax, float const& doXYZ = false, float const& tagPointForSV = 15.)
729599
{
730600
auto bjetCand = jetFromProngMaxDecayLength<U>(jet, prongChi2PCAMin, prongChi2PCAMax, prongsigmaLxyMax, prongIPxyMin, prongIPxyMax, doXYZ);
731-
if (!prongAcceptance(bjetCand, prongChi2PCAMin, prongChi2PCAMax, prongsigmaLxyMax, prongIPxyMin, prongIPxyMax, prongDispersionMax, doXYZ))
601+
if (!svAcceptance(bjetCand, prongDispersionMax))
732602
return false;
733603
if (!doXYZ) {
734604
auto maxSxy = bjetCand.decayLengthXY() / bjetCand.errorDecayLengthXY();

PWGJE/TableProducer/jettaggerhf.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,15 @@ struct JetTaggerHFTask {
197197
break;
198198
case 4: // TODO
199199
vecParamsData = (std::vector<float>)paramsResoFuncData;
200-
vecParamsCharmJetMC = {281446.003, -0.063, 0.894, 11.598, 0.943, 8.025, 0.130, 6.227, 0.027};
201-
vecParamsBeautyJetMC = {74839.065, -0.081, 0.875, 10.314, 0.939, 7.326, 0.101, 6.309, 0.024};
202-
vecParamsLfJetMC = {1531580.038, -0.062, -0.896, 13.267, 1.034, 5.866, 0.004, 7.836, 0.090};
203-
LOG(info) << "defined parameters of resolution function: PYTHIA8, JJ, LHC23d4";
200+
vecParamsCharmJetMC = {743719.121, -0.960, -0.240, 13.765, 1.314, 10.761, 0.293, 8.538, 0.052};
201+
vecParamsBeautyJetMC = {88888.418, 0.256, 1.003, 10.185, 0.740, 8.216, 0.147, 7.228, 0.040};
202+
vecParamsLfJetMC = {414860.372, -1.000, 0.285, 14.561, 1.464, 11.693, 0.339, 9.183, 0.052};
203+
LOG(info) << "defined parameters of resolution function: PYTHIA8, JJ, weighted, LHC24g4";
204204
break;
205205
case 5: // TODO
206206
vecParamsData = (std::vector<float>)paramsResoFuncData;
207-
vecParamsIncJetMC = {1900387.527, -0.059, 0.895, 13.461, 1.004, 8.860, 0.098, 6.931, 0.011};
208-
LOG(info) << "defined parameters of resolution function: PYTHIA8, JJ, LHC23d4 & use inclusive distribution";
207+
vecParamsIncJetMC = {2211391.862, 0.360, 1.028, 13.019, 0.650, 11.151, 0.215, 9.462, 0.044};
208+
LOG(info) << "defined parameters of resolution function: PYTHIA8, JJ, weighted, LHC24g4 & use inclusive distribution";
209209
useResoFuncFromIncJet = true;
210210
break;
211211
default:

0 commit comments

Comments
 (0)