Skip to content

Commit 15dd387

Browse files
committed
Implements RCT-based selections in Data and MC
1 parent c91e688 commit 15dd387

File tree

1 file changed

+94
-24
lines changed

1 file changed

+94
-24
lines changed

PWGLF/Tasks/Nuspex/piKpRAA.cxx

Lines changed: 94 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ struct PiKpRAA {
269269
Configurable<bool> rctCheckZDC{"rctCheckZDC", false, "RCT flag to check whether the ZDC is present or not"};
270270
Configurable<bool> rctTreatLimitedAcceptanceAsBad{"rctTreatLimitedAcceptanceAsBad", false, "RCT flag to reject events with limited acceptance for selected detectors"};
271271
Configurable<bool> requireGoodRct{"requireGoodRct", true, "RCT flag to reject events with limited acceptance for selected detectors"};
272-
Configurable<bool> requireGoodPIDRct{"requireGoodPIDRct", true, "RCT flag to reject events with limited acceptance for selected detectors"};
272+
Configurable<bool> requireBCRct{"requireBCRct", true, "RCT flag to reject events with limited acceptance for selected detectors"};
273273

274274
// RCT Checker instance
275275
RCTFlagsChecker rctChecker;
@@ -403,9 +403,10 @@ struct PiKpRAA {
403403
registry.add("HasBCVsFT0VsTVXVsEvSel", "Alls=1 | BC=2 | FT0=3 | TVX=4 | EvSel=5;;", kTH1F, {{5, 0.5, 5.5}});
404404
registry.add("zPos", "With Event Selection;;Entries;", kTH1F, {axisZpos});
405405
registry.add("T0Ccent", ";;Entries", kTH1F, {axisCent});
406+
registry.add("RCTSel", "Event accepted if flag=false: All=1 | RTC sel=2;;;", kTH1F, {{2, 0.5, 2.5}});
407+
registry.add("T0CcentVsRCTSel", "Event accepted if flag=false;;RCT Status;", kTH2F, {{{axisCent}, {9, 0.5, 9.5}}});
406408
registry.add("T0CcentVsFoundFT0", "Found(=1.5) NOT Found(=0.5);;Status;", kTH2F, {{{axisCent}, {2, 0, 2}}});
407409
registry.add("T0CcentVsBCVsFT0VsTVXVsEvSel", "All=1 | BC=2 | FT0=3 | TVX=4 | EvSel=5;;Status;", kTH2F, {{axisCent}, {5, 0.5, 5.5}});
408-
// registry.add("T0CcentVsFoundFT0AndTVX", "Found(=1.5) NOT Found(=0.5);;Status;", kTH2F, {{{axisCent}, {2, 0, 2}}});
409410
registry.add("NchVsCent", "Measured Nch v.s. Centrality (At least Once Rec. Coll. + Sel. criteria);;Nch", kTH2F, {{axisCent, {nBinsNch, minNch, maxNch}}});
410411
registry.add("NclVsEtaPID", ";#eta;Ncl used for PID", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}});
411412
registry.add("NclVsEtaPIDp", ";#eta;#LTNcl#GT used for PID", kTProfile, {axisEta});
@@ -435,8 +436,19 @@ struct PiKpRAA {
435436
x->SetBinLabel(19, "Nch Sel.");
436437
x->SetBinLabel(20, "INEL > 0");
437438

439+
auto hrct = registry.get<TH2>(HIST("T0CcentVsRCTSel"));
440+
auto* y = hrct->GetYaxis();
441+
y->SetBinLabel(1, "All");
442+
y->SetBinLabel(2, "kFT0Bad");
443+
y->SetBinLabel(3, "kITSBad");
444+
y->SetBinLabel(4, "kITSLimAccMCRepr");
445+
y->SetBinLabel(5, "kTOFBad");
446+
y->SetBinLabel(6, "kTOFLimAccMCRepr");
447+
y->SetBinLabel(7, "kTPCBadTracking");
448+
y->SetBinLabel(8, "kTPCBadPID");
449+
y->SetBinLabel(9, "kTPCLimAccMCRepr");
450+
438451
if (doprocessCalibrationAndV0s) {
439-
registry.add("T0CcentVsRCTSel", "Bad RCT(=0.5) Good RCT(=1.5) Good RCT & Good PID RCT(=2.5);;RCT Status;", kTH2F, {{{axisCent}, {3, 0, 3}}});
440452
registry.add("NchVsNPV", ";Nch; NPV;", kTH2F, {{{nBinsNPV, minNpv, maxNpv}, {nBinsNch, minNch, maxNch}}});
441453
registry.add("ExcludedEvtVsNch", ";Nch;Entries;", kTH1F, {{nBinsNch, minNch, maxNch}});
442454
registry.add("ExcludedEvtVsNPV", ";NPV;Entries;", kTH1F, {{nBinsNPV, minNpv, maxNpv}});
@@ -673,16 +685,52 @@ struct PiKpRAA {
673685
// Table's size: " << collisions.tableSize() << "\n";
674686
// LOG(info) << "Run number: " << foundBC.runNumber() << "\n";
675687

676-
if (!isEventSelected(collision)) {
677-
return;
678-
}
679-
680688
const auto& foundBC = collision.foundBC_as<BCsRun3>();
681689
const uint64_t timeStamp{foundBC.timestamp()};
682690
const int magField{getMagneticField(timeStamp)};
683691
const double nPV{collision.multNTracksPVeta1() / 1.};
684692
const float centrality{isT0Ccent ? collision.centFT0C() : collision.centFT0M()};
685693

694+
// Apply RCT selection?
695+
if (requireGoodRct) {
696+
// Checks if collisions passes RCT selection
697+
const bool isFT0Bad{requireBCRct ? foundBC.rct_bit(kFT0Bad) : collision.rct_bit(kFT0Bad)};
698+
const bool isITSBad{requireBCRct ? foundBC.rct_bit(kITSBad) : collision.rct_bit(kITSBad)};
699+
const bool isITSLimAcc{requireBCRct ? foundBC.rct_bit(kITSLimAccMCRepr) : collision.rct_bit(kITSLimAccMCRepr)};
700+
const bool isTOFBad{requireBCRct ? foundBC.rct_bit(kTOFBad) : collision.rct_bit(kTOFBad)};
701+
const bool isTOFLimAcc{requireBCRct ? foundBC.rct_bit(kTOFLimAccMCRepr) : collision.rct_bit(kTOFLimAccMCRepr)};
702+
const bool isTPCTrackingBad{requireBCRct ? foundBC.rct_bit(kTPCBadTracking) : collision.rct_bit(kTPCBadTracking)};
703+
const bool isTPCPIDBad{requireBCRct ? foundBC.rct_bit(kTPCBadPID) : collision.rct_bit(kTPCBadPID)};
704+
const bool isTPCLimAcc{requireBCRct ? foundBC.rct_bit(kTPCLimAccMCRepr) : collision.rct_bit(kTPCLimAccMCRepr)};
705+
706+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 1.0);
707+
if (!isFT0Bad)
708+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 2.0);
709+
if (!isITSBad)
710+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 3.0);
711+
if (!isITSLimAcc)
712+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 4.0);
713+
if (!isTOFBad)
714+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 5.0);
715+
if (!isTOFLimAcc)
716+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 6.0);
717+
if (!isTPCTrackingBad)
718+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 7.0);
719+
if (!isTPCPIDBad)
720+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 8.0);
721+
if (!isTPCLimAcc)
722+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 9.0);
723+
724+
registry.fill(HIST("RCTSel"), 1.0);
725+
if (!rctChecker(collision))
726+
return;
727+
728+
registry.fill(HIST("RCTSel"), 2.0);
729+
}
730+
731+
if (!isEventSelected(collision))
732+
return;
733+
686734
//---------------------------
687735
// Control histogram
688736
//---------------------------
@@ -691,23 +739,6 @@ struct PiKpRAA {
691739
}
692740
registry.fill(HIST("T0CcentVsFoundFT0"), centrality, 1.5);
693741

694-
// Apply RCT selection?
695-
if (requireGoodRct) {
696-
697-
// Checks if collisions passes RCT selection
698-
if (!rctChecker(*collision)) {
699-
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 0.5);
700-
return;
701-
}
702-
703-
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 1.5);
704-
// Checks if collisions passes good PID RCT status
705-
if (requireGoodPIDRct && collision.rct_bit(kTPCBadPID)) {
706-
return;
707-
}
708-
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 2.5);
709-
}
710-
711742
if (applyNchSel) {
712743
const int nextRunNumber{foundBC.runNumber()};
713744
if (currentRunNumberNchSel != nextRunNumber) {
@@ -1404,6 +1435,45 @@ struct PiKpRAA {
14041435
registry.fill(HIST("HasBCVsFT0VsTVXVsEvSel"), 4.0);
14051436
}
14061437

1438+
//---------------------------
1439+
// RCT Selection
1440+
//---------------------------
1441+
if (requireGoodRct) {
1442+
// Checks if collisions passes RCT selection
1443+
const bool isFT0Bad{requireBCRct ? foundBC.rct_bit(kFT0Bad) : collision.rct_bit(kFT0Bad)};
1444+
const bool isITSBad{requireBCRct ? foundBC.rct_bit(kITSBad) : collision.rct_bit(kITSBad)};
1445+
const bool isITSLimAcc{requireBCRct ? foundBC.rct_bit(kITSLimAccMCRepr) : collision.rct_bit(kITSLimAccMCRepr)};
1446+
const bool isTOFBad{requireBCRct ? foundBC.rct_bit(kTOFBad) : collision.rct_bit(kTOFBad)};
1447+
const bool isTOFLimAcc{requireBCRct ? foundBC.rct_bit(kTOFLimAccMCRepr) : collision.rct_bit(kTOFLimAccMCRepr)};
1448+
const bool isTPCTrackingBad{requireBCRct ? foundBC.rct_bit(kTPCBadTracking) : collision.rct_bit(kTPCBadTracking)};
1449+
const bool isTPCPIDBad{requireBCRct ? foundBC.rct_bit(kTPCBadPID) : collision.rct_bit(kTPCBadPID)};
1450+
const bool isTPCLimAcc{requireBCRct ? foundBC.rct_bit(kTPCLimAccMCRepr) : collision.rct_bit(kTPCLimAccMCRepr)};
1451+
1452+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 1.0);
1453+
if (!isFT0Bad)
1454+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 2.0);
1455+
if (!isITSBad)
1456+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 3.0);
1457+
if (!isITSLimAcc)
1458+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 4.0);
1459+
if (!isTOFBad)
1460+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 5.0);
1461+
if (!isTOFLimAcc)
1462+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 6.0);
1463+
if (!isTPCTrackingBad)
1464+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 7.0);
1465+
if (!isTPCPIDBad)
1466+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 8.0);
1467+
if (!isTPCLimAcc)
1468+
registry.fill(HIST("T0CcentVsRCTSel"), centrality, 9.0);
1469+
1470+
registry.fill(HIST("RCTSel"), 1.0);
1471+
if (!rctChecker(collision))
1472+
return;
1473+
1474+
registry.fill(HIST("RCTSel"), 2.0);
1475+
}
1476+
14071477
//---------------------------
14081478
// Event Selection
14091479
//---------------------------

0 commit comments

Comments
 (0)