Skip to content

Commit c844cbc

Browse files
[DPG] Template FITAll producer to enable MC switch
1 parent 8d3f33c commit c844cbc

1 file changed

Lines changed: 35 additions & 12 deletions

File tree

DPG/Tasks/FIT/fitAll.cxx

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ DECLARE_SOA_COLUMN(EvSelCtpTriggerMask, evSelCtpTriggerMask, uint64_t);
8282
DECLARE_SOA_COLUMN(EvSelCtpInputMask, evSelCtpInputMask, uint64_t);
8383
DECLARE_SOA_COLUMN(EvSelTimestamp, evSelTimestamp, uint64_t);
8484

85+
// MC
86+
DECLARE_SOA_COLUMN(McGlobalBc, mcGlobalBc, uint64_t);
87+
DECLARE_SOA_COLUMN(McAmbiguousColl, mcAmbiguousColl, bool);
88+
8589
// Mults
8690
DECLARE_SOA_COLUMN(MultFt0A, multFt0A, float);
8791
DECLARE_SOA_COLUMN(MultFt0C, multFt0C, float);
@@ -157,6 +161,7 @@ DECLARE_SOA_TABLE(FITsAll, "AOD", "FITALL", ///< Standalone derived data used fo
157161
fit::CollRunNumber, fit::CollGlobalBc, fit::CollCtpTriggerMask, fit::CollCtpInputMask, fit::CollTimestamp,
158162
fit::TriggerAlias, fit::SelectionFlags, fit::RctFlags, fit::Sel8, fit::HasFoundBc, fit::HasFoundFt0, fit::HasFoundFv0, fit::HasFoundFdd, fit::HasFoundZdc,
159163
fit::EvSelRunNumber, fit::EvSelGlobalBc, fit::EvSelCtpTriggerMask, fit::EvSelCtpInputMask, fit::EvSelTimestamp,
164+
fit::McGlobalBc, fit::McAmbiguousColl,
160165
fit::MultFt0A, fit::MultFt0C, fit::MultFv0A, fit::MultFddA, fit::MultFddC, fit::MultZnA, fit::MultZnC, fit::MultZem1, fit::MultZem2, fit::MultZpA, fit::MultZpC,
161166
fit::Ft0GlobalBc, fit::Ft0AmplitudeA, fit::Ft0ChannelA, fit::Ft0AmplitudeC, fit::Ft0ChannelC,
162167
fit::Ft0TimeA, fit::Ft0TimeC, fit::Ft0TriggerMask, fit::Ft0PosZ, fit::Ft0CollTime, fit::Ft0SumAmpA, fit::Ft0SumAmpC,
@@ -225,9 +230,8 @@ struct FitAll {
225230
}
226231
}
227232

228-
void process(soa::Join<aod::Collisions, aod::EvSels, aod::MultsRun3, aod::FT0sCorrected> const& collisions,
229-
aod::BCsWithTimestamps const&,
230-
aod::FT0s const&, aod::FV0As const&, aod::FDDs const&, aod::Zdcs const&)
233+
template <typename TCollision>
234+
void fillTable(TCollision const& collisions)
231235
{
232236
table.reserve(collisions.size());
233237

@@ -246,7 +250,7 @@ struct FitAll {
246250
float collisionTimeRes = collision.collisionTimeRes();
247251

248252
// Collision BC with timestamp
249-
auto collBc = collision.bc_as<aod::BCsWithTimestamps>();
253+
auto collBc = collision.template bc_as<aod::BCsWithTimestamps>();
250254
int collRunNumber = collBc.runNumber();
251255
uint64_t collGlobalBc = collBc.globalBC();
252256
uint64_t collCtpTriggerMask = collBc.triggerMask();
@@ -271,7 +275,7 @@ struct FitAll {
271275
uint64_t evSelCtpInputMask = 0;
272276
uint64_t evSelTimestamp = 0;
273277
if (hasFoundBc) {
274-
auto evSelBc = collision.foundBC_as<aod::BCsWithTimestamps>();
278+
auto evSelBc = collision.template foundBC_as<aod::BCsWithTimestamps>();
275279
evSelRunNumber = evSelBc.runNumber();
276280
evSelGlobalBc = evSelBc.globalBC();
277281
evSelCtpTriggerMask = evSelBc.triggerMask();
@@ -288,6 +292,14 @@ struct FitAll {
288292
}
289293
}
290294

295+
// MC
296+
uint64_t mcGlobalBc = 0;
297+
if constexpr (requires { collision.mcCollision(); }) {
298+
mcGlobalBc = collision.mcCollision().template bc_as<aod::BCsWithTimestamps>().globalBC();
299+
}
300+
301+
bool mcAmbiguousColl = false;
302+
291303
// Multiplicities
292304
float multFT0A = collision.multFT0A();
293305
float multFT0C = collision.multFT0C();
@@ -327,9 +339,8 @@ struct FitAll {
327339
float ft0TotAmplC = 0;
328340

329341
if (hasFoundFt0) {
330-
// FT0
331342
auto ft0 = collision.foundFT0();
332-
auto ft0bc = ft0.bc_as<aod::BCsWithTimestamps>();
343+
auto ft0bc = ft0.template bc_as<aod::BCsWithTimestamps>();
333344
ft0GlobalBc = ft0bc.globalBC();
334345
ft0TimeA = ft0.timeA();
335346
ft0TimeC = ft0.timeC();
@@ -387,9 +398,8 @@ struct FitAll {
387398
float fv0TotAmpl = 0;
388399

389400
if (hasFoundFv0) {
390-
// FV0A
391401
auto fv0 = collision.foundFV0();
392-
auto fv0bc = fv0.bc_as<aod::BCsWithTimestamps>();
402+
auto fv0bc = fv0.template bc_as<aod::BCsWithTimestamps>();
393403
fv0GlobalBc = fv0bc.globalBC();
394404
fv0Time = fv0.time();
395405
fv0TriggerMask = fv0.triggerMask();
@@ -430,9 +440,8 @@ struct FitAll {
430440
float fddTotAmplC = 0;
431441

432442
if (hasFoundFdd) {
433-
// FDD
434443
auto fdd = collision.foundFDD();
435-
auto fddbc = fdd.bc_as<aod::BCsWithTimestamps>();
444+
auto fddbc = fdd.template bc_as<aod::BCsWithTimestamps>();
436445
fddGlobalBc = fddbc.globalBC();
437446
fddTimeA = fdd.timeA();
438447
fddTimeC = fdd.timeC();
@@ -469,7 +478,6 @@ struct FitAll {
469478
float timeZEM2 = -std::numeric_limits<float>::infinity();
470479

471480
if (hasFoundZdc) {
472-
// ZDC
473481
auto zdc = collision.foundZDC();
474482
energyCommonZNA = zdc.energyCommonZNA();
475483
energyCommonZNC = zdc.energyCommonZNC();
@@ -481,6 +489,7 @@ struct FitAll {
481489
collRunNumber, collGlobalBc, collCtpTriggerMask, collCtpInputMask, collTimestamp,
482490
triggerAlias, selectionFlags, rctFlags, sel8, hasFoundBc, hasFoundFt0, hasFoundFv0, hasFoundFdd, hasFoundZdc,
483491
evSelRunNumber, evSelGlobalBc, evSelCtpTriggerMask, evSelCtpInputMask, evSelTimestamp,
492+
mcGlobalBc, mcAmbiguousColl,
484493
multFT0A, multFT0C, multFV0A, multFDDA, multFDDC, multZNA, multZNC, multZEM1, multZEM2, multZPA, multZPC,
485494
ft0GlobalBc, ft0AmplitudeA, ft0ChannelA, ft0AmplitudeC, ft0ChannelC,
486495
ft0TimeA, ft0TimeC, ft0TriggerMask, ft0PosZ, ft0CollTime, ft0SumAmpA, ft0SumAmpC,
@@ -493,6 +502,20 @@ struct FitAll {
493502
energyCommonZNA, energyCommonZNC, timeZEM1, timeZEM2);
494503
}
495504
}
505+
506+
void processData(soa::Join<aod::Collisions, aod::EvSels, aod::MultsRun3, aod::FT0sCorrected> const& collisions,
507+
aod::BCsWithTimestamps const&, aod::FT0s const&, aod::FV0As const&, aod::FDDs const&, aod::Zdcs const&)
508+
{
509+
fillTable(collisions);
510+
}
511+
PROCESS_SWITCH(FitAll, processData, "Process data", true);
512+
513+
void processMc(soa::Join<aod::Collisions, aod::EvSels, aod::MultsRun3, aod::FT0sCorrected, aod::McCollisionLabels> const& collisions,
514+
aod::BCsWithTimestamps const&, aod::FT0s const&, aod::FV0As const&, aod::FDDs const&, aod::Zdcs const&, aod::McCollisions const& mcCols)
515+
{
516+
fillTable(collisions);
517+
}
518+
PROCESS_SWITCH(FitAll, processMc, "Process Mc", false);
496519
};
497520

498521
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)