Skip to content

Commit eeb1f2f

Browse files
committed
fix
1 parent 7a7d992 commit eeb1f2f

3 files changed

Lines changed: 83 additions & 24 deletions

File tree

lib/public/views/Runs/RunPerDataPass/RunsPerDataPassOverviewModel.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ export class RunsPerDataPassOverviewModel extends FixedPdpBeamTypeRunsOverviewMo
139139
mcReproducibleAsNotBad: this._mcReproducibleAsNotBad,
140140
};
141141
}
142+
filter.detectorsQc = {
143+
mcReproducibleAsNotBad: this._mcReproducibleAsNotBad,
144+
};
142145

143146
return buildUrl(super.getRootEndpoint(), { filter });
144147
}

lib/usecases/run/GetAllRunsUseCase.js

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -396,31 +396,33 @@ class GetAllRunsUseCase {
396396
const [lhcPeriodId] = lhcPeriodIds ?? [];
397397
const { mcReproducibleAsNotBad } = detectorsQc;
398398
delete detectorsQc.mcReproducibleAsNotBad;
399-
delete detectorsQc.operator;
400-
401-
const qcSummary = await qcFlagSummaryService.getSummary(
402-
{
403-
dataPassId,
404-
simulationPassId,
405-
lhcPeriodId,
406-
dplDetectorIds: Object.keys(detectorsQc).map((id) => parseInt(id.slice(1), 10)),
407-
},
408-
{ mcReproducibleAsNotBad },
409-
);
410399

411-
const runNumbers = Object.entries(qcSummary)
412-
.filter(([_, runSummary]) => {
413-
const mask = Object.entries(runSummary).map(([dplDetecotrId, { badEffectiveRunCoverage }]) => {
414-
if (!(`_${dplDetecotrId}` in detectorsQc)) {
415-
return false;
416-
}
417-
const { operator: forDetectorOperator, limit } = detectorsQc[`_${dplDetecotrId}`].notBadFraction;
418-
return badEffectiveRunCoverageComparison(badEffectiveRunCoverage, forDetectorOperator, limit);
419-
});
420-
return mask.every((valid) => valid);
421-
})
422-
.map(([runNumber]) => runNumber);
423-
filteringQueryBuilder.where('runNumber').oneOf(...runNumbers);
400+
const dplDetectorIds = Object.keys(detectorsQc).map((id) => parseInt(id.slice(1), 10));
401+
if (dplDetectorIds.length > 0) {
402+
const qcSummary = await qcFlagSummaryService.getSummary(
403+
{
404+
dataPassId,
405+
simulationPassId,
406+
lhcPeriodId,
407+
dplDetectorIds,
408+
},
409+
{ mcReproducibleAsNotBad },
410+
);
411+
412+
const runNumbers = Object.entries(qcSummary)
413+
.filter(([_, runSummary]) => {
414+
const mask = Object.entries(runSummary).map(([dplDetecotrId, { badEffectiveRunCoverage }]) => {
415+
if (!(`_${dplDetecotrId}` in detectorsQc)) {
416+
return false;
417+
}
418+
const { operator: forDetectorOperator, limit } = detectorsQc[`_${dplDetecotrId}`].notBadFraction;
419+
return badEffectiveRunCoverageComparison(badEffectiveRunCoverage, forDetectorOperator, limit);
420+
});
421+
return mask.every((valid) => valid);
422+
})
423+
.map(([runNumber]) => runNumber);
424+
filteringQueryBuilder.where('runNumber').oneOf(...runNumbers);
425+
}
424426
}
425427

426428
if (simulationPassIds) {

test/lib/usecases/run/GetAllRunsUseCase.test.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,4 +795,58 @@ module.exports = () => {
795795
expect(runs).to.have.lengthOf(0);
796796
}
797797
});
798+
799+
it('should successfully filter by detectors\' notBadFraction', async () => {
800+
const dataPassIds = [1];
801+
{
802+
const { runs } = await new GetAllRunsUseCase().execute({
803+
query: {
804+
filter: {
805+
dataPassIds,
806+
detectorsQc: { '_1': { notBadFraction: { operator: '<', limit: 0.7 } } },
807+
},
808+
},
809+
});
810+
expect(runs).to.be.an('array');
811+
expect(runs.map(({ runNumber }) => runNumber)).to.have.all.members([106]);
812+
}
813+
{
814+
const { runs } = await new GetAllRunsUseCase().execute({
815+
query: {
816+
filter: {
817+
dataPassIds,
818+
detectorsQc: { '_1': { notBadFraction: { operator: '<', limit: 0.8 } } },
819+
},
820+
},
821+
});
822+
expect(runs.map(({ runNumber }) => runNumber)).to.have.all.members([107, 106]);
823+
}
824+
825+
{
826+
const { runs } = await new GetAllRunsUseCase().execute({
827+
query: {
828+
filter: {
829+
dataPassIds,
830+
detectorsQc: { '_1': { notBadFraction: { operator: '<', limit: 0.8 } }, mcReproducibleAsNotBad: true },
831+
},
832+
},
833+
});
834+
expect(runs.map(({ runNumber }) => runNumber)).to.have.all.members([106]);
835+
}
836+
837+
{
838+
const { runs } = await new GetAllRunsUseCase().execute({
839+
query: {
840+
filter: {
841+
dataPassIds,
842+
detectorsQc: {
843+
'_2': { notBadFraction: { operator: '>', limit: 0.8 } },
844+
'_1': { notBadFraction: {operator: '<', limit: 0.8 } },
845+
},
846+
},
847+
},
848+
});
849+
expect(runs.map(({ runNumber }) => runNumber)).to.have.all.members([107]);
850+
}
851+
});
798852
};

0 commit comments

Comments
 (0)