Skip to content

Commit e702ca6

Browse files
committed
Add calculation of TF border check in VarManager
1 parent 2e13835 commit e702ca6

3 files changed

Lines changed: 44 additions & 2 deletions

File tree

PWGDQ/Core/VarManager.cxx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ int VarManager::fgITSROFbias = 0;
6060
int VarManager::fgITSROFlength = 100;
6161
int VarManager::fgITSROFBorderMarginLow = 0;
6262
int VarManager::fgITSROFBorderMarginHigh = 0;
63+
int64_t VarManager::fgBCSOR = -1;
64+
int64_t VarManager::fgNBCsPerTF = -1;
65+
int VarManager::fgTFBorderMarginLow = 300;
66+
int VarManager::fgTFBorderMarginHigh = 4000;
6367
uint64_t VarManager::fgSOR = 0;
6468
uint64_t VarManager::fgEOR = 0;
6569
ROOT::Math::PxPyPzEVector VarManager::fgBeamA(0, 0, 6799.99, 6800); // GeV, beam from A-side 4-momentum vector
@@ -718,6 +722,14 @@ void VarManager::SetDefaultVarNames()
718722
fgVariableUnits[kMultDimuonsME] = "";
719723
fgVariableNames[kCentFT0C] = "Centrality FT0C";
720724
fgVariableUnits[kCentFT0C] = "%";
725+
fgVariableNames[kIsNoTFBorder] = "Is not TF border";
726+
fgVariableUnits[kIsNoTFBorder] = "";
727+
fgVariableNames[kIsNoTFBorderRecomputed] = "Is not TF border";
728+
fgVariableUnits[kIsNoTFBorderRecomputed] = "";
729+
fgVariableNames[kIsNoITSROFBorder] = "Is not ITS ROF border";
730+
fgVariableUnits[kIsNoITSROFBorder] = "";
731+
fgVariableNames[kIsNoITSROFBorderRecomputed] = "Is not ITS ROF border";
732+
fgVariableUnits[kIsNoITSROFBorderRecomputed] = "";
721733
fgVariableNames[kMCEventGeneratorId] = "MC Generator ID";
722734
fgVariableNames[kMCEventSubGeneratorId] = "MC SubGenerator ID";
723735
fgVariableNames[kMCVtxX] = "MC Vtx X";
@@ -1912,6 +1924,7 @@ void VarManager::SetDefaultVarNames()
19121924
fgVarNamesMap["kIsPhysicsSelection"] = kIsPhysicsSelection;
19131925
fgVarNamesMap["kIsTVXTriggered"] = kIsTVXTriggered;
19141926
fgVarNamesMap["kIsNoTFBorder"] = kIsNoTFBorder;
1927+
fgVarNamesMap["kIsNoTFBorderRecomputed"] = kIsNoTFBorderRecomputed;
19151928
fgVarNamesMap["kIsNoITSROFBorder"] = kIsNoITSROFBorder;
19161929
fgVarNamesMap["kIsNoITSROFBorderRecomputed"] = kIsNoITSROFBorderRecomputed;
19171930
fgVarNamesMap["kIsNoSameBunch"] = kIsNoSameBunch;

PWGDQ/Core/VarManager.h

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,8 @@ class VarManager : public TObject
218218
kCollisionRandom, // random number generated per collision (if required, can be used to perform random selections at the collision level)
219219
kIsPhysicsSelection,
220220
kIsTVXTriggered, // Is trigger TVX
221-
kIsNoTFBorder, // No time frame border
221+
kIsNoTFBorder, // No time frame border (from event selection)
222+
kIsNoTFBorderRecomputed, // No time frame border, computed here
222223
kIsNoITSROFBorder, // No ITS read out frame border (from event selection)
223224
kIsNoITSROFBorderRecomputed, // No ITS read out frame border, computed here
224225
kIsNoSameBunch, // No collisions with same T0 BC
@@ -1506,6 +1507,14 @@ class VarManager : public TObject
15061507
fgITSROFBorderMarginHigh = marginHigh;
15071508
}
15081509

1510+
static void SetTFBorderselection(int64_t bcSOR, int64_t nBCsPerTF, int marginLow, int marginHigh)
1511+
{
1512+
fgBCSOR = bcSOR;
1513+
fgNBCsPerTF = nBCsPerTF;
1514+
fgTFBorderMarginLow = marginLow;
1515+
fgTFBorderMarginHigh = marginHigh;
1516+
}
1517+
15091518
static void SetSORandEOR(uint64_t sor, uint64_t eor)
15101519
{
15111520
fgSOR = sor;
@@ -1535,6 +1544,10 @@ class VarManager : public TObject
15351544
static int fgITSROFlength; // ITS ROF length (from ALPIDE parameters)
15361545
static int fgITSROFBorderMarginLow; // ITS ROF border low margin
15371546
static int fgITSROFBorderMarginHigh; // ITS ROF border high margin
1547+
static int64_t fgBCSOR; // BC for start of run
1548+
static int64_t fgNBCsPerTF; // duration of TF in bcs, should be 128*3564 or 32*3564
1549+
static int fgTFBorderMarginLow; // TF border low margin
1550+
static int fgTFBorderMarginHigh; // TF border high margin
15381551
static uint64_t fgSOR; // Timestamp for start of run
15391552
static uint64_t fgEOR; // Timestamp for end of run
15401553
static ROOT::Math::PxPyPzEVector fgBeamA; // beam from A-side 4-momentum vector
@@ -2118,7 +2131,7 @@ void VarManager::FillEvent(T const& event, float* values)
21182131
values[kCentVZERO] = event.centRun2V0M();
21192132
values[kCentFT0C] = event.centFT0C();
21202133
if (fgUsedVars[kIsNoITSROFBorderRecomputed]) {
2121-
uint16_t bcInITSROF = (event.globalBC() + 3564 - fgITSROFbias) % fgITSROFlength;
2134+
uint16_t bcInITSROF = (event.globalBC() + o2::constants::lhc::LHCMaxBunches - fgITSROFbias) % fgITSROFlength;
21222135
values[kIsNoITSROFBorderRecomputed] = bcInITSROF > fgITSROFBorderMarginLow && bcInITSROF < fgITSROFlength - fgITSROFBorderMarginHigh ? 1.0 : 0.0;
21232136
}
21242137
if (fgUsedVars[kIsNoITSROFBorder]) {
@@ -2127,6 +2140,10 @@ void VarManager::FillEvent(T const& event, float* values)
21272140
if (fgUsedVars[kIsTVXTriggered]) {
21282141
values[kIsTVXTriggered] = (event.selection_bit(o2::aod::evsel::kIsTriggerTVX) > 0);
21292142
}
2143+
if (fgUsedVars[kIsNoTFBorderRecomputed]) {
2144+
int64_t bcInTF = (event.globalBC() - fgBCSOR) % fgNBCsPerTF;
2145+
values[kIsNoTFBorderRecomputed] = bcInTF > fgTFBorderMarginLow && bcInTF < fgNBCsPerTF - fgTFBorderMarginHigh ? 1.0 : 0.0;
2146+
}
21302147
if (fgUsedVars[kIsNoTFBorder]) {
21312148
values[kIsNoTFBorder] = (event.selection_bit(o2::aod::evsel::kNoTimeFrameBorder) > 0);
21322149
}

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <CCDB/CcdbApi.h>
3232
#include <CommonConstants/MathConstants.h>
3333
#include <DataFormatsITSMFT/DPLAlpideParam.h>
34+
#include <DataFormatsParameters/AggregatedRunInfo.h>
3435
#include <DataFormatsParameters/GRPLHCIFData.h>
3536
#include <DataFormatsParameters/GRPMagField.h>
3637
#include <DetectorsBase/GeometryManager.h>
@@ -314,6 +315,9 @@ struct AnalysisEventSelection {
314315

315316
Configurable<int> fConfigITSROFrameStartBorderMargin{"cfgITSROFrameStartBorderMargin", -1, "Number of bcs at the start of ITS RO Frame border. Take from CCDB if -1"};
316317
Configurable<int> fConfigITSROFrameEndBorderMargin{"cfgITSROFrameEndBorderMargin", -1, "Number of bcs at the end of ITS RO Frame border. Take from CCDB if -1"};
318+
Configurable<int> fConfigTFStartBorderMargin{"cfgTFStartBorderMargin", -1, "Number of bcs at the start of TF border. Take from CCDB if -1"};
319+
Configurable<int> fConfigTFEndBorderMargin{"cfgTFEndBorderMargin", -1, "Number of bcs at the end of TF border. Take from CCDB if -1"};
320+
Configurable<int> fConfigNumberOfOrbitsPerTF{"cfgNumberOfOrbitsPerTF", -1, "Number of orbits per Time Frame. Take from CCDB if -1"};
317321

318322
Configurable<float> fConfigSplitCollisionsDeltaZ{"cfgSplitCollisionsDeltaZ", 1.0, "maximum delta-z (cm) between two collisions to consider them as split candidates"};
319323
Configurable<unsigned int> fConfigSplitCollisionsDeltaBC{"cfgSplitCollisionsDeltaBC", 100, "maximum delta-BC between two collisions to consider them as split candidates; do not apply if value is negative"};
@@ -424,6 +428,14 @@ struct AnalysisEventSelection {
424428
int itsROFrameStartBorderMargin = fConfigITSROFrameStartBorderMargin < 0 ? par->fITSROFrameStartBorderMargin : fConfigITSROFrameStartBorderMargin;
425429
int itsROFrameEndBorderMargin = fConfigITSROFrameEndBorderMargin < 0 ? par->fITSROFrameEndBorderMargin : fConfigITSROFrameEndBorderMargin;
426430
VarManager::SetITSROFBorderselection(alppar->roFrameBiasInBC, alppar->roFrameLengthInBC, itsROFrameStartBorderMargin, itsROFrameEndBorderMargin);
431+
432+
int timeFrameStartBorderMargin = fConfigTFStartBorderMargin < 0 ? par->fTimeFrameStartBorderMargin : fConfigTFStartBorderMargin;
433+
int timeFrameEndBorderMargin = fConfigTFEndBorderMargin < 0 ? par->fTimeFrameEndBorderMargin : fConfigTFEndBorderMargin;
434+
auto runInfo = o2::parameters::AggregatedRunInfo::buildAggregatedRunInfo(o2::ccdb::BasicCCDBManager::instance(), events.begin().runNumber());
435+
int64_t bcSOR = runInfo.orbitSOR * o2::constants::lhc::LHCMaxBunches;
436+
int64_t nBCsPerTF = fConfigNumberOfOrbitsPerTF < 0 ? runInfo.orbitsPerTF * o2::constants::lhc::LHCMaxBunches : fConfigNumberOfOrbitsPerTF * o2::constants::lhc::LHCMaxBunches;
437+
VarManager::SetTFBorderselection(bcSOR, nBCsPerTF, timeFrameStartBorderMargin, timeFrameEndBorderMargin);
438+
427439
fCurrentRun = events.begin().runNumber();
428440
}
429441

0 commit comments

Comments
 (0)