Skip to content

Commit 36adc3d

Browse files
committed
removed hard code for q vector track selection
1 parent 265d10d commit 36adc3d

3 files changed

Lines changed: 51 additions & 54 deletions

File tree

PWGDQ/Core/CutsLibrary.cxx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1593,6 +1593,34 @@ AnalysisCompositeCut* o2::aod::dqcuts::GetCompositeCut(const char* cutName)
15931593
cut->AddCut(GetAnalysisCut("electronPID1shiftDown"));
15941594
return cut;
15951595
}
1596+
// -------------------------------------------------------------------------------------------------
1597+
//
1598+
// Q vector contributor cut
1599+
//
1600+
if (!nameStr.compare("selTPCCentral")) {
1601+
AnalysisCut* kineCut = new AnalysisCut("kineCut", "kine cut");
1602+
kineCut->AddCut(VarManager::kEta, -0.8, 0.8);
1603+
kineCut->AddCut(VarManager::kPt, 0.15, 5);
1604+
1605+
AnalysisCut* qualityCuts = new AnalysisCut("qualityCuts", "quality cuts");
1606+
qualityCuts->AddCut(VarManager::kTPCchi2, 0., 4.);
1607+
qualityCuts->AddCut(VarManager::kTPCnCRoverFindCls, 0.8, 1.);
1608+
qualityCuts->AddCut(VarManager::kIsITSibAny, 0.5, 1.5);
1609+
qualityCuts->AddCut(VarManager::kITSchi2, 0., 36.);
1610+
1611+
AnalysisCut* dcaCuts = new AnalysisCut("dcaCuts", "DCA cuts");
1612+
std::shared_ptr<TF1> f1dcaxyHigh = std::make_shared<TF1>("f1dcaxy", "[0]+[1]/pow(x,[2])", 0., 10.);
1613+
f1dcaxyHigh->SetParameters(0.0105, 0.035, 1.1);
1614+
std::shared_ptr<TF1> f1dcaxyLow = std::make_shared<TF1>("f1dcaxy_low", "[0]+[1]/pow(x,[2])", 0., 10.);
1615+
f1dcaxyLow->SetParameters(-0.0105, -0.035, 1.1);
1616+
dcaCuts->AddCut(VarManager::kTrackDCAxy, f1dcaxyLow, f1dcaxyHigh);
1617+
dcaCuts->AddCut(VarManager::kTrackDCAz, -2., 2.);
1618+
1619+
cut->AddCut(kineCut);
1620+
cut->AddCut(qualityCuts);
1621+
cut->AddCut(dcaCuts);
1622+
}
1623+
15961624
// -------------------------------------------------------------------------------------------------
15971625
//
15981626
// LMee cuts

PWGDQ/Core/VarManager.h

Lines changed: 7 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -823,8 +823,8 @@ class VarManager : public TObject
823823
kCos2DeltaPhiPP_FT0C,
824824
kNullA2,
825825
kInfA2,
826-
kAmbi1,
827-
kAmbi2,
826+
kSel1,
827+
kSel2,
828828
kDeltaPhiPair,
829829
kOpeningAngle,
830830
kQuadDCAabsXY,
@@ -1592,8 +1592,6 @@ class VarManager : public TObject
15921592
static float calculatePhiV(const T1& t1, const T2& t2);
15931593
template <typename T1, typename T2>
15941594
static float LorentzTransformJpsihadroncosChi(TString Option, const T1& v1, const T2& v2);
1595-
template <typename T>
1596-
static bool isSelectedinTPC(const T& t);
15971595

15981596
static o2::vertexing::DCAFitterN<2> fgFitterTwoProngBarrel;
15991597
static o2::vertexing::DCAFitterN<3> fgFitterThreeProngBarrel;
@@ -3106,6 +3104,9 @@ void VarManager::FillTrack(T const& track, float* values)
31063104
values[kITSncls] += ((track.itsClusterMap() & (1 << i)) ? 1 : 0);
31073105
}
31083106
}
3107+
if (fgUsedVars[kTPCnCRoverFindCls]) {
3108+
values[kTPCnCRoverFindCls] = values[kTPCnclsCR] / values[kTPCncls];
3109+
}
31093110
values[kTrackDCAxy] = track.dcaXY();
31103111
values[kTrackDCAz] = track.dcaZ();
31113112
if constexpr ((fillMap & ReducedTrackBarrelCov) > 0) {
@@ -6078,15 +6079,15 @@ void VarManager::FillPairVn(T1 const& t1, T2 const& t2, float* values)
60786079
float nNorm = values[kMultA];
60796080

60806081
// checkTrack(t1);
6081-
if (isSelectedinTPC(t1) && values[kAmbi1] > 0) {
6082+
if (values[kSel1] > 0) {
60826083
float qx1 = t1.pt() * TMath::Cos(2. * t1.phi());
60836084
float qy1 = t1.pt() * TMath::Sin(2. * t1.phi());
60846085
Q2X0A = Q2X0A - qx1;
60856086
Q2Y0A = Q2Y0A - qy1;
60866087
nNorm = nNorm - 1.;
60876088
}
60886089
// checkTrack(t2);
6089-
if (isSelectedinTPC(t2) && values[kAmbi2] > 0) {
6090+
if (values[kSel2] > 0) {
60906091
float qx2 = t2.pt() * TMath::Cos(2. * t2.phi());
60916092
float qy2 = t2.pt() * TMath::Sin(2. * t2.phi());
60926093
Q2X0A = Q2X0A - qx2;
@@ -7024,48 +7025,6 @@ float VarManager::LorentzTransformJpsihadroncosChi(TString Option, T1 const& v1,
70247025
return value;
70257026
}
70267027

7027-
template <typename T>
7028-
bool VarManager::isSelectedinTPC(const T& t)
7029-
{
7030-
bool trackSelected = false;
7031-
if constexpr (requires { t.hasTPC(); }) {
7032-
trackSelected = true;
7033-
if (!t.hasTPC()) {
7034-
trackSelected = false;
7035-
return trackSelected;
7036-
}
7037-
if (std::abs(t.eta()) > 0.8) { // eta cut used in q vector table. Todo: read from config
7038-
trackSelected = false;
7039-
return trackSelected;
7040-
}
7041-
if (t.pt() < 0.15 || t.pt() > 5.) { // pt cut used in q vector table. Todo: read from config
7042-
trackSelected = false;
7043-
return trackSelected;
7044-
}
7045-
if (t.tpcNClsCrossedRows() / t.tpcNClsFound() < 0.8 || t.tpcChi2NCl() > 4.) {
7046-
trackSelected = false;
7047-
return trackSelected;
7048-
}
7049-
if (!((t.itsClusterMap() & (1 << uint8_t(0))) > 0 || (t.itsClusterMap() & (1 << uint8_t(1))) > 0 || (t.itsClusterMap() & (1 << uint8_t(2))) > 0)) {
7050-
trackSelected = false;
7051-
return trackSelected;
7052-
}
7053-
if (t.itsChi2NCl() > 36.) {
7054-
trackSelected = false;
7055-
return trackSelected;
7056-
}
7057-
if (t.dcaZ() > 2) {
7058-
trackSelected = false;
7059-
return trackSelected;
7060-
}
7061-
if (t.dcaXY() > 0.0105 + 0.0350 / std::pow(t.pt(), 1.1)) {
7062-
trackSelected = false;
7063-
return trackSelected;
7064-
}
7065-
}
7066-
return trackSelected;
7067-
}
7068-
70697028
template <typename T1, typename T2, typename T3, typename T4, typename T5>
70707029
void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, T4 const& fv0as, T5 const& fdds, float* values)
70717030
{

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,6 +1313,7 @@ struct AnalysisSameEventPairing {
13131313
Configurable<std::string> track{"cfgTrackCuts", "jpsiO2MCdebugCuts2", "Comma separated list of barrel track cuts"};
13141314
Configurable<std::string> muon{"cfgMuonCuts", "", "Comma separated list of muon cuts"};
13151315
Configurable<std::string> pair{"cfgPairCuts", "", "Comma separated list of pair cuts"};
1316+
Configurable<std::string> qVector{"cfgQvectorTrackCut", "", "Track cut of Q-vector, enable this if you want to remove the auto-correlation in TPC"};
13161317
Configurable<bool> event{"cfgRemoveCollSplittingCandidates", false, "If true, remove collision splitting candidates as determined by the event selection task upstream"};
13171318
// TODO: Add pair cuts via JSON
13181319
} fConfigCuts;
@@ -1390,6 +1391,7 @@ struct AnalysisSameEventPairing {
13901391

13911392
uint32_t fTrackFilterMask = 0; // mask for the track cuts required in this task to be applied on the barrel cuts produced upstream
13921393
uint32_t fMuonFilterMask = 0; // mask for the muon cuts required in this task to be applied on the muon cuts produced upstream
1394+
uint32_t fQvectorFilterMask = 0; // mask for the track cuts required to be applied on the tracks used for the Q-vector calculation
13931395
int fNCutsBarrel = 0;
13941396
int fNCutsMuon = 0;
13951397
int fNPairCuts = 0;
@@ -1462,6 +1464,7 @@ struct AnalysisSameEventPairing {
14621464
if (!muonCutsStr.IsNull()) {
14631465
objArrayMuonCuts = muonCutsStr.Tokenize(",");
14641466
}
1467+
TString qVectorCutStr = fConfigCuts.qVector.value;
14651468

14661469
if (fConfigML.applyBDT) {
14671470
// BDT cuts via JSON
@@ -1529,6 +1532,9 @@ struct AnalysisSameEventPairing {
15291532
fNCutsBarrel = objArray->GetEntries();
15301533
for (int icut = 0; icut < objArray->GetEntries(); ++icut) {
15311534
TString tempStr = objArray->At(icut)->GetName();
1535+
if (tempStr.CompareTo(qVectorCutStr) == 0) {
1536+
fQvectorFilterMask |= (static_cast<uint32_t>(1) << icut);
1537+
}
15321538
fTrackCuts.push_back(tempStr);
15331539
if (objArrayTrackCuts->FindObject(tempStr.Data()) != nullptr) {
15341540
fTrackFilterMask |= (static_cast<uint32_t>(1) << icut);
@@ -1966,13 +1972,17 @@ struct AnalysisSameEventPairing {
19661972

19671973
fNPairPerEvent++;
19681974

1969-
VarManager::fgValues[VarManager::kAmbi1] = -999.;
1970-
VarManager::fgValues[VarManager::kAmbi2] = -999.;
1971-
if (t1.reducedeventId() != event.globalIndex()) {
1972-
VarManager::fgValues[VarManager::kAmbi1] = 1.;
1975+
VarManager::fgValues[VarManager::kSel1] = -999.;
1976+
VarManager::fgValues[VarManager::kSel2] = -999.;
1977+
if (t1.reducedeventId() == event.globalIndex()) {
1978+
if ((a1.isBarrelSelected_raw() & fQvectorFilterMask) > 0) {
1979+
VarManager::fgValues[VarManager::kSel1] = 1.;
1980+
}
19731981
}
1974-
if (t2.reducedeventId() != event.globalIndex()) {
1975-
VarManager::fgValues[VarManager::kAmbi2] = 1.;
1982+
if (t2.reducedeventId() == event.globalIndex()) {
1983+
if ((a2.isBarrelSelected_raw() & fQvectorFilterMask) > 0) {
1984+
VarManager::fgValues[VarManager::kSel2] = 1.;
1985+
}
19761986
}
19771987
VarManager::FillPair<TPairType, TTrackFillMap>(t1, t2);
19781988
// compute quantities which depend on the associated collision, such as DCA

0 commit comments

Comments
 (0)