Skip to content

Commit 606b334

Browse files
author
Jifeng Deng
committed
Add a pair type to process ppbar pairing in tableReader_withAssoc
The motivation is to analyse Jpsi->ppbar and gamma gamma->ppbar in DQ framework. Since same event pairing in table reader is designed to analyse leptons, asymmetric pairing is suitable for proton pairing. - Modification in VarManager::FillPair is necessary for complex proton PID - The results of pairing have been proved to be good
1 parent c5313c8 commit 606b334

5 files changed

Lines changed: 61 additions & 0 deletions

File tree

PWGDQ/Core/CutsLibrary.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7173,6 +7173,11 @@ AnalysisCut* o2::aod::dqcuts::GetAnalysisCut(const char* cutName)
71737173
return cut;
71747174
}
71757175

7176+
if (nameStr == "pairIsPr") {
7177+
cut->AddCut(VarManager::kIsPrPair, 0.5, 1.5);
7178+
return cut;
7179+
}
7180+
71767181
// -------------------------------------------------------------------------------------------------
71777182
//
71787183
// Below are a list of single electron single muon and pair selection in order or optimize the trigger

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1584,6 +1584,12 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
15841584
hm->AddHistogram(histClass, "Mass_cos2DeltaPhi", "cos 2(#varphi-#Psi_{2}^{A}) vs m", true, 125, 0.0, 5.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos2DeltaPhi);
15851585
hm->AddHistogram(histClass, "Mass_cos3DeltaPhi", "cos 3(#varphi-#Psi_{3}^{A}) vs m", true, 125, 0.0, 5.0, VarManager::kMass, 100, -1.0, 1.0, VarManager::kCos3DeltaPhi);
15861586
}
1587+
1588+
if (subGroupStr.Contains("prpairpid")) {
1589+
hm->AddHistogram(histClass, "nSigmaPr1_nSigmaPr2", "", false, 100, -8.0, 8.0, VarManager::kTPCorTOFnSigmaPr1, 100, -8.0, 8.0, VarManager::kTPCorTOFnSigmaPr2);
1590+
hm->AddHistogram(histClass, "t1Pt", "", false, 2000, 0.0, 20.0, VarManager::kPt1);
1591+
hm->AddHistogram(histClass, "t2Pt", "", false, 2000, 0.0, 20.0, VarManager::kPt2);
1592+
}
15871593
} else if (subGroupStr.Contains("dimuon")) {
15881594
hm->AddHistogram(histClass, "Mass_Pt", "", false, 750, 0.0, 15.0, VarManager::kMass, 120, 0.0, 30.0, VarManager::kPt);
15891595
hm->AddHistogram(histClass, "Mass_Rapidity", "", false, 750, 0.0, 15.0, VarManager::kMass, 150, 2.5, 4.0, VarManager::kRap);

PWGDQ/Core/VarManager.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,6 +2237,8 @@ void VarManager::SetDefaultVarNames()
22372237
fgVarNamesMap["kDCAz2"] = kDCAz2;
22382238
fgVarNamesMap["kITSclusterMap2"] = kITSclusterMap2;
22392239
fgVarNamesMap["kTPCnSigmaEl2"] = kTPCnSigmaEl2;
2240+
fgVarNamesMap["kTPCorTOFnSigmaPr1"] = kTPCorTOFnSigmaPr1;
2241+
fgVarNamesMap["kTPCorTOFnSigmaPr2"] = kTPCorTOFnSigmaPr2;
22402242
fgVarNamesMap["kPin"] = kPin;
22412243
fgVarNamesMap["kSignedPin"] = kSignedPin;
22422244
fgVarNamesMap["kTOFExpMom"] = kTOFExpMom;
@@ -2315,6 +2317,7 @@ void VarManager::SetDefaultVarNames()
23152317
fgVarNamesMap["kIsLegFromOmega"] = kIsLegFromOmega;
23162318
fgVarNamesMap["kIsProtonFromLambdaAndAntiLambda"] = kIsProtonFromLambdaAndAntiLambda;
23172319
fgVarNamesMap["kIsDalitzLeg"] = kIsDalitzLeg;
2320+
fgVarNamesMap["kIsPrPair"] = kIsPrPair;
23182321
fgVarNamesMap["kBarrelNAssocsInBunch"] = kBarrelNAssocsInBunch;
23192322
fgVarNamesMap["kBarrelNAssocsOutOfBunch"] = kBarrelNAssocsOutOfBunch;
23202323
fgVarNamesMap["kNBarrelTrackVariables"] = kNBarrelTrackVariables;

PWGDQ/Core/VarManager.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ class VarManager : public TObject
158158
kDecayToEE = 0, // e.g. J/psi -> e+ e-
159159
kDecayToMuMu, // e.g. J/psi -> mu+ mu-
160160
kDecayToPiPi,
161+
kDecayToPrPr,
161162
kElectronMuon, // e.g. Electron - muon correlations
162163
kBcToThreeMuons, // e.g. Bc -> mu+ mu- mu+
163164
kBtoJpsiEEK, // e.g. B+ -> e+ e- K+
@@ -986,6 +987,9 @@ class VarManager : public TObject
986987
kPairEfficiency,
987988
kPairWeight,
988989
kNPairVariables,
990+
kTPCorTOFnSigmaPr1,
991+
kTPCorTOFnSigmaPr2,
992+
kIsPrPair,
989993

990994
// Candidate-track correlation variables
991995
kPairMass,
@@ -3686,6 +3690,11 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
36863690
values[kTPCnSigmaKa_leg1] = t1.tpcNSigmaKa();
36873691
}
36883692

3693+
if constexpr (pairType == kDecayToPrPr) {
3694+
m1 = o2::constants::physics::MassProton;
3695+
m2 = o2::constants::physics::MassProtonBar;
3696+
}
3697+
36893698
if constexpr (pairType == kElectronMuon) {
36903699
m2 = o2::constants::physics::MassMuon;
36913700
}
@@ -3744,6 +3753,36 @@ void VarManager::FillPair(T1 const& t1, T2 const& t2, float* values)
37443753
}
37453754
}
37463755

3756+
if constexpr (pairType == kDecayToPrPr && (fillMap & ReducedTrackBarrelPID) > 0 && (fillMap & ReducedTrackBarrel) > 0) {
3757+
3758+
if (t1.hasTOF()) {
3759+
values[kTPCorTOFnSigmaPr1] = t1.tofNSigmaPr();
3760+
} else if (t1.hasTPC()) {
3761+
values[kTPCorTOFnSigmaPr1] = t1.tpcNSigmaPr();
3762+
} else {
3763+
values[kTPCorTOFnSigmaPr1] = -999.f;
3764+
}
3765+
3766+
if (t2.hasTOF()) {
3767+
values[kTPCorTOFnSigmaPr2] = t2.tofNSigmaPr();
3768+
} else if (t2.hasTPC()) {
3769+
values[kTPCorTOFnSigmaPr2] = t2.tpcNSigmaPr();
3770+
} else {
3771+
values[kTPCorTOFnSigmaPr2] = -999.f;
3772+
}
3773+
3774+
bool tof1 = t1.hasTOF(), tpc1 = t1.hasTPC();
3775+
bool tof2 = t2.hasTOF(), tpc2 = t2.hasTPC();
3776+
bool hasTOForgood = (tof1 && tpc2) || (tpc1 && tof2) || (tof1 && tof2);
3777+
if (hasTOForgood) {
3778+
float nsigma1 = values[kTPCorTOFnSigmaPr1];
3779+
float nsigma2 = values[kTPCorTOFnSigmaPr2];
3780+
values[kIsPrPair] = (std::abs(nsigma1) < 4.f && std::abs(nsigma2) < 4.f && std::pow(nsigma1, 2.0) + std::pow(nsigma2, 2.0) < 16.f) ? 1 : 0;
3781+
} else {
3782+
values[kIsPrPair] = 0;
3783+
}
3784+
}
3785+
37473786
// polarization parameters
37483787
bool useHE = fgUsedVars[kCosThetaHE] || fgUsedVars[kPhiHE]; // helicity frame
37493788
bool useCS = fgUsedVars[kCosThetaCS] || fgUsedVars[kPhiCS]; // Collins-Soper frame

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3814,6 +3814,13 @@ struct AnalysisAsymmetricPairing {
38143814
runAsymmetricPairing<true, VarManager::kDecayToKPi, gkEventFillMapWithCovZdcFitMultExtra, gkTrackFillMapWithCov>(events, trackAssocsPerCollision, barrelAssocs, barrelTracks);
38153815
}
38163816

3817+
void processProtonPairSkimmed(MyEventsVtxCovZdcFitSelected const& events,
3818+
soa::Join<aod::ReducedTracksAssoc, aod::BarrelTrackCuts> const& barrelAssocs,
3819+
MyBarrelTracksWithCovWithAmbiguities const& barrelTracks)
3820+
{
3821+
runAsymmetricPairing<false, VarManager::kDecayToPrPr, gkEventFillMapWithCovZdcFit, gkTrackFillMapWithCov>(events, trackAssocsPerCollision, barrelAssocs, barrelTracks);
3822+
}
3823+
38173824
void processKaonPionPionSkimmed(MyEventsVtxCovZdcFitSelected const& events,
38183825
soa::Join<aod::ReducedTracksAssoc, aod::BarrelTrackCuts> const& barrelAssocs,
38193826
MyBarrelTracksWithCovWithAmbiguities const& barrelTracks)
@@ -3841,6 +3848,7 @@ struct AnalysisAsymmetricPairing {
38413848
}
38423849

38433850
PROCESS_SWITCH(AnalysisAsymmetricPairing, processKaonPionSkimmed, "Run kaon pion pairing, with skimmed tracks", false);
3851+
PROCESS_SWITCH(AnalysisAsymmetricPairing, processProtonPairSkimmed, "Run proton anti-proton pairing, with skimmed tracks", false);
38443852
PROCESS_SWITCH(AnalysisAsymmetricPairing, processKaonPionPionSkimmed, "Run kaon pion pion triplets, with skimmed tracks", false);
38453853
PROCESS_SWITCH(AnalysisAsymmetricPairing, processKaonPionSkimmedMultExtra, "Run kaon pion pairing, with skimmed tracks", false);
38463854
PROCESS_SWITCH(AnalysisAsymmetricPairing, processKaonPionPionSkimmedMultExtra, "Run kaon pion pion triplets, with skimmed tracks", false);

0 commit comments

Comments
 (0)