@@ -193,6 +193,7 @@ struct JetDerivedDataProducerTask {
193193
194194 std::vector<bool > trackMCSelection;
195195
196+ std::vector<uint16_t > bcSelMapping;
196197 std::vector<uint32_t > bcRctMapping;
197198
198199 ctpRateFetcher rateFetcher;
@@ -267,18 +268,23 @@ struct JetDerivedDataProducerTask {
267268
268269 void processBunchCrossings (soa::Join<aod::BCs, aod::Timestamps, aod::BcSels> const & bcs)
269270 {
271+ bcSelMapping.clear ();
272+ bcSelMapping.resize (bcs.size (), ~uint16_t {0 });
270273 bcRctMapping.clear ();
271274 bcRctMapping.resize (bcs.size (), ~uint32_t {0 });
272275 for (const auto & bc : bcs) {
273276 products.jBCsTable (bc.runNumber (), bc.globalBC (), bc.triggerMask (), bc.timestamp (), bc.alias_raw (), bc.selection_raw (), bc.rct_raw ());
274277 products.jBCParentIndexTable (bc.globalIndex ());
278+ bcSelMapping[bc.globalIndex ()] = jetderiveddatautilities::setMCEventSelectionBit (bc);
275279 bcRctMapping[bc.globalIndex ()] = bc.rct_raw ();
276280 }
277281 }
278282 PROCESS_SWITCH (JetDerivedDataProducerTask, processBunchCrossings, " produces derived bunch crossing table" , true );
279283
280284 void processBunchCrossingsWithoutSels (soa::Join<aod::BCs, aod::Timestamps> const & bcs)
281285 {
286+ bcSelMapping.clear ();
287+ bcSelMapping.resize (bcs.size (), ~uint16_t {0 });
282288 bcRctMapping.clear ();
283289 bcRctMapping.resize (bcs.size (), ~uint32_t {0 });
284290 for (const auto & bc : bcs) {
@@ -377,64 +383,73 @@ struct JetDerivedDataProducerTask {
377383
378384 void processMcCollisions (soa::Join<aod::McCollisions, aod::HepMCXSections, aod::MultsExtraMC, aod::McCentFT0Ms>::iterator const & mcCollision)
379385 {
386+ uint32_t selDecision = ~uint16_t {0 };
380387 uint32_t rctDecision = ~uint32_t {0 };
381388 int32_t bcId = -1 ;
382389 if (!config.isMCGenOnly ) {
383390 bcId = mcCollision.bcId ();
391+ selDecision = bcSelMapping[bcId];
384392 rctDecision = bcRctMapping[bcId];
385393 } else {
386394 products.jBCsTable (-1 , -1 , -1 , -1 , ~uint32_t {0 }, ~uint32_t {0 }, ~uint32_t {0 });
387395 bcId = products.jBCsTable .lastIndex ();
388396 }
389- products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), mcCollision.multMCFV0A (), mcCollision.multMCFT0A (), mcCollision.multMCFT0C (), mcCollision.centFT0M (), mcCollision.weight (), mcCollision.accepted (), mcCollision.attempted (), mcCollision.xsectGen (), mcCollision.xsectErr (), mcCollision.ptHard (), rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
397+ products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), mcCollision.multMCFV0A (), mcCollision.multMCFT0A (), mcCollision.multMCFT0C (), mcCollision.centFT0M (), mcCollision.weight (), mcCollision.accepted (), mcCollision.attempted (), mcCollision.xsectGen (), mcCollision.xsectErr (), mcCollision.ptHard (), selDecision, rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
390398 products.jMcCollisionsParentIndexTable (mcCollision.globalIndex ());
391399 }
392400 PROCESS_SWITCH (JetDerivedDataProducerTask, processMcCollisions, " produces derived MC collision table" , false );
393401
394402 void processMcCollisionsWithoutCentralityAndMultiplicity (soa::Join<aod::McCollisions, aod::HepMCXSections>::iterator const & mcCollision)
395403 {
404+
405+ uint32_t selDecision = ~uint16_t {0 };
396406 uint32_t rctDecision = ~uint32_t {0 };
397407 int32_t bcId = -1 ;
398408 if (!config.isMCGenOnly ) {
399409 bcId = mcCollision.bcId ();
410+ selDecision = bcSelMapping[bcId];
400411 rctDecision = bcRctMapping[bcId];
401412 } else {
402413 products.jBCsTable (-1 , -1 , -1 , -1 , ~uint32_t {0 }, ~uint32_t {0 }, ~uint32_t {0 });
403414 bcId = products.jBCsTable .lastIndex ();
404415 }
405- products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), -1.0 , -1.0 , -1.0 , -1.0 , mcCollision.weight (), mcCollision.accepted (), mcCollision.attempted (), mcCollision.xsectGen (), mcCollision.xsectErr (), mcCollision.ptHard (), rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
416+ products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), -1.0 , -1.0 , -1.0 , -1.0 , mcCollision.weight (), mcCollision.accepted (), mcCollision.attempted (), mcCollision.xsectGen (), mcCollision.xsectErr (), mcCollision.ptHard (), selDecision, rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
406417 products.jMcCollisionsParentIndexTable (mcCollision.globalIndex ());
407418 }
408419 PROCESS_SWITCH (JetDerivedDataProducerTask, processMcCollisionsWithoutCentralityAndMultiplicity, " produces derived MC collision table without centraility and multiplicity" , false );
409420
410421 void processMcCollisionsWithoutXsection (soa::Join<aod::McCollisions, aod::MultsExtraMC, aod::McCentFT0Ms>::iterator const & mcCollision)
411422 {
423+ uint32_t selDecision = ~uint16_t {0 };
412424 uint32_t rctDecision = ~uint32_t {0 };
413425 int32_t bcId = -1 ;
414426 if (!config.isMCGenOnly ) {
415427 bcId = mcCollision.bcId ();
428+ selDecision = bcSelMapping[bcId];
416429 rctDecision = bcRctMapping[bcId];
417430 } else {
418431 products.jBCsTable (-1 , -1 , -1 , -1 , ~uint32_t {0 }, ~uint32_t {0 }, ~uint32_t {0 });
419432 bcId = products.jBCsTable .lastIndex ();
420433 }
421- products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), mcCollision.multMCFV0A (), mcCollision.multMCFT0A (), mcCollision.multMCFT0C (), mcCollision.centFT0M (), mcCollision.weight (), 1 , 1 , 1.0 , 1.0 , 999.0 , rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
434+ products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), mcCollision.multMCFV0A (), mcCollision.multMCFT0A (), mcCollision.multMCFT0C (), mcCollision.centFT0M (), mcCollision.weight (), 1 , 1 , 1.0 , 1.0 , 999.0 , selDecision, rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
422435 products.jMcCollisionsParentIndexTable (mcCollision.globalIndex ());
423436 }
424437 PROCESS_SWITCH (JetDerivedDataProducerTask, processMcCollisionsWithoutXsection, " produces derived MC collision table without cross section information" , false );
425438
426439 void processMcCollisionsWithoutCentralityAndMultiplicityAndXsection (aod::McCollision const & mcCollision)
427440 {
441+ uint32_t selDecision = ~uint16_t {0 };
428442 uint32_t rctDecision = ~uint32_t {0 };
429443 int32_t bcId = -1 ;
430444 if (!config.isMCGenOnly ) {
431445 bcId = mcCollision.bcId ();
446+ selDecision = bcSelMapping[bcId];
432447 rctDecision = bcRctMapping[bcId];
433448 } else {
434449 products.jBCsTable (-1 , -1 , -1 , -1 , ~uint32_t {0 }, ~uint32_t {0 }, ~uint32_t {0 });
435450 bcId = products.jBCsTable .lastIndex ();
436451 }
437- products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), -1.0 , -1.0 , -1.0 , -1.0 , mcCollision.weight (), 1 , 1 , 1.0 , 1.0 , 999.0 , rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
452+ products.jMcCollisionsTable (bcId, mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (), -1.0 , -1.0 , -1.0 , -1.0 , mcCollision.weight (), 1 , 1 , 1.0 , 1.0 , 999.0 , selDecision, rctDecision, mcCollision.getGeneratorId (), mcCollision.getSubGeneratorId (), mcCollision.getSourceId (), mcCollision.impactParameter (), mcCollision.eventPlaneAngle ());
438453 products.jMcCollisionsParentIndexTable (mcCollision.globalIndex ());
439454 }
440455 PROCESS_SWITCH (JetDerivedDataProducerTask, processMcCollisionsWithoutCentralityAndMultiplicityAndXsection, " produces derived MC collision table without centrality, multiplicity and cross section information" , false );
0 commit comments