Skip to content

Commit de94171

Browse files
author
Ankur Yadav
committed
Removed the FT0C cumulant calculation from TableMaker_withAssociation and implemented it in dqFlow which still has the cumulant calculation for froward rapidity using GFW to keep all cumulant calculations in one place. New process function in dqFlow for FT0C cumulant
1 parent 1ed03d1 commit de94171

2 files changed

Lines changed: 54 additions & 34 deletions

File tree

PWGDQ/TableProducer/tableMaker_withAssoc.cxx

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,6 @@ struct TableMaker {
210210
struct : ProducesGroup {
211211
Produces<ReducedEventsQvectorCentr> eventQvectorCentr;
212212
Produces<ReducedEventsQvectorCentrExtra> eventQvectorCentrExtra;
213-
Produces<ReducedEventsQvectorExtra> eventQvectorExtra;
214-
Produces<ReducedEventsRefFlow> eventRefFlow;
215213
} qvecGroup;
216214

217215
OutputObj<THashList> fOutputList{"output"}; //! the histogram manager output list
@@ -296,7 +294,6 @@ struct TableMaker {
296294

297295
//
298296
struct : ConfigurableGroup {
299-
Configurable<bool> fConfigFT0CCumulant{"cfgFT0CCumulant", false, "If true, compute RefFlow cumulants from FT0C amplitudes (requires FT0s subscription)"};
300297
Configurable<bool> fConfigQvectCalibAvailable{"cfgQvectCalibAvailable", false, "If true, qvector calibration objects are available in CCDB for this run"};
301298
} fConfigQvector;
302299

@@ -479,11 +476,7 @@ struct TableMaker {
479476
}
480477

481478
// Check whether we have to define barrel or muon histograms
482-
<<<<<<< HEAD
483479
bool enableBarrelHistos = (context.mOptions.get<bool>("processPP") || context.mOptions.get<bool>("processPPWithFilter") || context.mOptions.get<bool>("processPPWithFilterBarrelOnly") || context.mOptions.get<bool>("processPPBarrelOnly") ||
484-
=======
485-
bool enableBarrelHistos = (context.mOptions.get<bool>("processPPWithFilter") || context.mOptions.get<bool>("processPPWithFilterBarrelOnly") || context.mOptions.get<bool>("processPPBarrelOnly") ||
486-
>>>>>>> daa02bd72 (Qvector-tables shall be filled for all PbPb processes (except for processPbPbWithFilterBarrelOnly). Added a configurable for Qvector calibration path. The tables shall only be filled if the calibrations are available)
487480
context.mOptions.get<bool>("processPbPb") || context.mOptions.get<bool>("processPbPbBarrelOnly") || context.mOptions.get<bool>("processPbPbBarrelOnlyWithV0Bits") || context.mOptions.get<bool>("processPbPbBarrelOnlyWithV0BitsNoTOF")) ||
488481
context.mOptions.get<bool>("processPbPbWithFilterBarrelOnly") || context.mOptions.get<bool>("processPPBarrelOnlyWithV0s") || context.mOptions.get<bool>("processPbPbBarrelOnlyNoTOF");
489482

@@ -1198,33 +1191,6 @@ struct TableMaker {
11981191
qvecGroup.eventQvectorCentr(collision.qvecFT0ARe(), collision.qvecFT0AIm(), collision.qvecFT0CRe(), collision.qvecFT0CIm(), collision.qvecFT0MRe(), collision.qvecFT0MIm(), collision.qvecFV0ARe(), collision.qvecFV0AIm(), collision.qvecTPCposRe(), collision.qvecTPCposIm(), collision.qvecTPCnegRe(), collision.qvecTPCnegIm(),
11991192
collision.sumAmplFT0A(), collision.sumAmplFT0C(), collision.sumAmplFT0M(), collision.sumAmplFV0A(), collision.nTrkTPCpos(), collision.nTrkTPCneg());
12001193
qvecGroup.eventQvectorCentrExtra(collision.qvecTPCallRe(), collision.qvecTPCallIm(), collision.nTrkTPCall());
1201-
1202-
if (fConfigQvector.fConfigFT0CCumulant) {
1203-
// FT0C cumulants for RefFlow and QvectorExtra
1204-
float S11C = collision.sumAmplFT0C();
1205-
float S12C = 0.f;
1206-
if constexpr (!std::is_same_v<std::decay_t<TFt0s>, std::nullptr_t>) {
1207-
if (collision.has_foundFT0()) {
1208-
auto ft0 = collision.foundFT0();
1209-
for (auto amp : ft0.amplitudeC()) {
1210-
if (amp > 0.f) {
1211-
S12C += amp * amp;
1212-
}
1213-
}
1214-
}
1215-
}
1216-
float S21C = S11C * S11C;
1217-
float M11REF = S21C - S12C;
1218-
std::complex<double> Q21C(collision.qvecFT0CRe() * S11C, collision.qvecFT0CIm() * S11C);
1219-
float CORR2REF = (std::norm(Q21C) - S12C) / M11REF;
1220-
1221-
if (std::isnan(M11REF) || std::isinf(M11REF) || std::isnan(CORR2REF) || std::isinf(CORR2REF)) {
1222-
M11REF = 0.f;
1223-
CORR2REF = 0.f;
1224-
}
1225-
qvecGroup.eventRefFlow(M11REF, -9999, -9999, CORR2REF, -9999, -9999, VarManager::fgValues[VarManager::kCentFT0C]);
1226-
qvecGroup.eventQvectorExtra(-9999, -9999, -9999, -9999, S11C, S12C, -9999, -9999);
1227-
}
12281194
}
12291195
}
12301196
if constexpr ((TEventFillMap & VarManager::ObjTypes::Zdc) > 0) {

PWGDQ/Tasks/dqFlow.cxx

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,53 @@ struct DQEventQvector {
353353
// }
354354
}
355355

356+
// Templated function instantianed for all of the process functions
357+
template <uint32_t TEventFillMap, typename TEvent, typename TFT0s>
358+
void runFillQvectorFromCentralFWWithFT0CCumulants(TEvent const& collision, TFT0s const& /*ft0s*/)
359+
{
360+
VarManager::ResetValues(0, VarManager::kNVars);
361+
VarManager::FillEvent<TEventFillMap>(collision);
362+
363+
float S11C = collision.sumAmplFT0C();
364+
float S12C = 0.f;
365+
float S21C = S11C * S11C;
366+
367+
// Compute sum of squares of amplitudes from FT0C for flow analysis
368+
if (collision.has_foundFT0()) {
369+
auto ft0 = collision.foundFT0();
370+
auto const& ampC = ft0.amplitudeC();
371+
for (auto amp : ampC) {
372+
if (amp > 0.f) {
373+
S12C += amp * amp;
374+
}
375+
}
376+
}
377+
VarManager::FillQVectorFromCentralFW(collision);
378+
std::complex<double> Q21C(collision.qvecFT0CRe() * S11C, collision.qvecFT0CIm() * S11C);
379+
380+
// Fill necessary quantities for cumulant calculations with weighted Q-vectors
381+
float M11REF = S21C - S12C;
382+
float CORR2REF = (norm(Q21C) - S12C) / M11REF;
383+
CORR2REF = std::isnan(M11REF) || std::isinf(M11REF) || std::isnan(CORR2REF) || std::isinf(CORR2REF) ? 0 : CORR2REF;
384+
M11REF = std::isnan(M11REF) || std::isinf(M11REF) || std::isnan(CORR2REF) || std::isinf(CORR2REF) ? 0 : M11REF;
385+
386+
if (fConfigQA) {
387+
fHistMan->FillHistClass("Event_BeforeCuts_centralFW", VarManager::fgValues);
388+
if (fEventCut->IsSelected(VarManager::fgValues)) {
389+
fHistMan->FillHistClass("Event_AfterCuts_centralFW", VarManager::fgValues);
390+
}
391+
}
392+
393+
if (fEventCut->IsSelected(VarManager::fgValues)) {
394+
// temporarily removed --> this table is filled in the table-maker directly
395+
// eventQvectorCentr(collision.qvecFT0ARe(), collision.qvecFT0AIm(), collision.qvecFT0CRe(), collision.qvecFT0CIm(), collision.qvecFT0MRe(), collision.qvecFT0MIm(), collision.qvecFV0ARe(), collision.qvecFV0AIm(), collision.qvecTPCposRe(), collision.qvecTPCposIm(), collision.qvecTPCnegRe(), collision.qvecTPCnegIm(),
396+
// collision.sumAmplFT0A(), collision.sumAmplFT0C(), collision.sumAmplFT0M(), collision.sumAmplFV0A(), collision.nTrkTPCpos(), collision.nTrkTPCneg());
397+
// eventQvectorCentrExtra(collision.qvecTPCallRe(), collision.qvecTPCallIm(), collision.nTrkTPCall());
398+
eventRefFlow(M11REF, -9999, -9999, CORR2REF, -9999, -9999, VarManager::fgValues[VarManager::kCentFT0C]);
399+
eventQvectorExtra(-9999, -9999, -9999, -9999, S11C, S12C, -9999, -9999);
400+
}
401+
}
402+
356403
// Templated function instantianed for all of the process functions
357404
template <uint32_t TEventFillMap, uint32_t TTrackFillMap, typename TEvent, typename TTracks>
358405
void runFillQvector(TEvent const& collision, MyBcs const&, TTracks const& tracks1, aod::Zdcs const&)
@@ -576,6 +623,12 @@ struct DQEventQvector {
576623
runFillQvectorFromCentralFW<gkEventFillMapRun3>(collisions);
577624
}
578625

626+
// Process to fill Q vector using barrel tracks in a reduced event table for barrel/muon tracks flow related analyses Run 3
627+
void processCentralQvectorWithFT0CCumulants(MyEventsWithCentQvectRun3::iterator const& collision, aod::FT0s const& ft0s)
628+
{
629+
runFillQvectorFromCentralFWWithFT0CCumulants<gkEventFillMapRun3>(collision, ft0s);
630+
}
631+
579632
// Process to fill Q vector using forward tracks in a reduced event table for barrel/muon tracks flow related analyses Run 3
580633
void processForwardQvector(MyEventsWithCentRun3::iterator const& collisions, MyBcs const& bcs, soa::Filtered<aod::MFTTracks> const& tracks, aod::Zdcs const& zdcs)
581634
{
@@ -592,6 +645,7 @@ struct DQEventQvector {
592645
PROCESS_SWITCH(DQEventQvector, processBarrelQvector, "Run q-vector task on barrel tracks for Run3", false);
593646
PROCESS_SWITCH(DQEventQvector, processAllQvector, "Run q-vector task on barrel tracks for Run3 and using central q-vector", false);
594647
PROCESS_SWITCH(DQEventQvector, processCentralQvector, "Run q-vector task using central q-vector", false);
648+
PROCESS_SWITCH(DQEventQvector, processCentralQvectorWithFT0CCumulants, "Run q-vector task using central q-vector with FT0C cumulants", false);
595649
PROCESS_SWITCH(DQEventQvector, processForwardQvector, "Run q-vector task on forward tracks for Run3", false);
596650
PROCESS_SWITCH(DQEventQvector, processDummy, "Dummy function", false);
597651
};

0 commit comments

Comments
 (0)