Skip to content

Commit 4b8c968

Browse files
Ankur YadavAnkur Yadav
authored andcommitted
Added a new process function to add the sum of squared amplituted of FT0C for flow calculation using 2PC method
1 parent 07f05eb commit 4b8c968

File tree

2 files changed

+72
-8
lines changed

2 files changed

+72
-8
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -486,10 +486,11 @@ class VarManager : public TObject
486486
kV2ME_EP,
487487
kWV2ME_SP,
488488
kWV2ME_EP,
489-
kTwoR2SP1, // Scalar product resolution of event1 for ME technique
490-
kTwoR2SP2, // Scalar product resolution of event2 for ME technique
491-
kTwoR2EP1, // Event plane resolution of event2 for ME technique
492-
kTwoR2EP2, // Event plane resolution of event2 for ME technique
489+
kTwoR2SP1, // Scalar product resolution of event1 for ME technique
490+
kTwoR2SP2, // Scalar product resolution of event2 for ME technique
491+
kTwoR2EP1, // Event plane resolution of event2 for ME technique
492+
kTwoR2EP2, // Event plane resolution of event2 for ME technique
493+
kNPairsPerEvent, // number of pairs per event in same-event or mixed-event pairing
493494

494495
// Variables for event mixing with cumulant
495496
kV22m,
@@ -805,6 +806,8 @@ class VarManager : public TObject
805806
kS12A,
806807
kS13A,
807808
kS31A,
809+
kS11C,
810+
kS12C,
808811
kM11REF,
809812
kM11REFetagap,
810813
kM01POI,
@@ -1370,7 +1373,7 @@ class VarManager : public TObject
13701373
template <typename T1, typename T2, typename T3>
13711374
static void FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values = nullptr, float Translow = 1. / 3, float Transhigh = 2. / 3, bool applyFitMass = false, float sidebandMass = 0.0f);
13721375
template <int pairType, typename T1, typename T2, typename T3, typename T4, typename T5>
1373-
static void FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values = nullptr);
1376+
static void FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values = nullptr, bool applyFitMass = false);
13741377
template <typename T1, typename T2>
13751378
static void FillDileptonPhoton(T1 const& dilepton, T2 const& photon, float* values = nullptr);
13761379
template <typename T>
@@ -5451,6 +5454,15 @@ void VarManager::FillQVectorFromCentralFW(C const& collision, float* values)
54515454
values[kR2EP_FT0MTPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2));
54525455
values[kR2EP_FV0ATPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2));
54535456
values[kR2EP_FV0ATPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2));
5457+
5458+
float S21C = values[kS11C] * values[kS11C];
5459+
//complex<double> Q21C(values[kQ2X0C] * values[kS11C], values[kQ2Y0C] * values[kS11C]);
5460+
5461+
// Fill necessary quantities for cumulant calculations with weighted Q-vectors
5462+
values[kM11REF] = S21C - values[kS12C];
5463+
//values[kCORR2REF] = (norm(Q21C) - values[kS12C]) / values[kM11REF];
5464+
//values[kCORR2REF] = std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) ? 0 : values[kCORR2REF];
5465+
values[kM11REF] = std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) ? 0 : values[kM11REF];
54545466
}
54555467

54565468
template <typename C>
@@ -5867,7 +5879,7 @@ void VarManager::FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2
58675879
}
58685880

58695881
template <int pairType, typename T1, typename T2, typename T3, typename T4, typename T5>
5870-
void VarManager::FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values)
5882+
void VarManager::FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values, bool applyFitMass)
58715883
{
58725884
if (fgUsedVars[kMCCosChi_gen] || fgUsedVars[kMCWeight_gen] || fgUsedVars[kMCdeltaeta_gen] || fgUsedVars[kMCCosChi_rec] || fgUsedVars[kMCWeight_rec] || fgUsedVars[kMCdeltaeta_rec]) {
58735885
// energy correlators
@@ -5879,6 +5891,11 @@ void VarManager::FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 cons
58795891
ROOT::Math::PtEtaPhiMVector v_lepton2(lepton2.pt(), lepton2.eta(), lepton2.phi(), m2);
58805892
ROOT::Math::PtEtaPhiMVector dilepton = v_lepton1 + v_lepton2;
58815893

5894+
float dileptonmass = o2::constants::physics::MassJPsi;
5895+
if (applyFitMass) {
5896+
dileptonmass = dilepton.mass();
5897+
}
5898+
58825899
float MassHadron;
58835900
if constexpr (pairType == kJpsiHadronMass) {
58845901
MassHadron = TMath::Sqrt(t1.e() * t1.e() - t1.p() * t1.p());
@@ -5894,7 +5911,7 @@ void VarManager::FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 cons
58945911
values[kMCWeight_gen] = E_boost_gen / o2::constants::physics::MassJPsi;
58955912
values[kMCdeltaeta_gen] = track.eta() - t1.eta();
58965913

5897-
ROOT::Math::PtEtaPhiMVector v1_rec(dilepton.pt(), dilepton.eta(), dilepton.phi(), dilepton.mass());
5914+
ROOT::Math::PtEtaPhiMVector v1_rec(dilepton.pt(), dilepton.eta(), dilepton.phi(), dileptonmass);
58985915
ROOT::Math::PtEtaPhiMVector v2_rec(hadron.pt(), hadron.eta(), hadron.phi(), o2::constants::physics::MassPionCharged);
58995916
values[kMCCosChi_rec] = LorentzTransformJpsihadroncosChi("coschi", v1_rec, v2_rec);
59005917
float E_boost_rec = LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_rec);

PWGDQ/Tasks/dqFlow.cxx

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,46 @@ struct DQEventQvector {
352352
}
353353
}
354354

355+
// Templated function instantianed for all of the process functions
356+
template <uint32_t TEventFillMap, typename TEvent, typename TFT0s>
357+
void runFillQvectorFromCentralFWWithFT0CCumulants(TEvent const& collision, TFT0s const& /*ft0s*/)
358+
{
359+
VarManager::ResetValues(0, VarManager::kNVars);
360+
VarManager::FillEvent<TEventFillMap>(collision);
361+
362+
363+
if (fConfigQA) {
364+
fHistMan->FillHistClass("Event_BeforeCuts_centralFW", VarManager::fgValues);
365+
if (fEventCut->IsSelected(VarManager::fgValues)) {
366+
fHistMan->FillHistClass("Event_AfterCuts_centralFW", VarManager::fgValues);
367+
}
368+
}
369+
370+
if (fEventCut->IsSelected(VarManager::fgValues)) {
371+
float S11C = collision.sumAmplFT0C();
372+
float S12C = 0.f;
373+
374+
if (collision.has_foundFT0()) {
375+
auto ft0 = collision.foundFT0();
376+
auto const& ampC = ft0.amplitudeC();
377+
for (auto amp : ampC) {
378+
if (amp > 0.f) {
379+
S12C += amp * amp;
380+
}
381+
}
382+
}
383+
VarManager::fgValues[VarManager::kS11C] = S11C;
384+
VarManager::fgValues[VarManager::kS12C] = S12C;
385+
VarManager::FillQVectorFromCentralFW(collision);
386+
387+
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(),
388+
collision.sumAmplFT0A(), collision.sumAmplFT0C(), collision.sumAmplFT0M(), collision.sumAmplFV0A(), collision.nTrkTPCpos(), collision.nTrkTPCneg());
389+
eventQvectorCentrExtra(collision.qvecTPCallRe(), collision.qvecTPCallIm(), collision.nTrkTPCall());
390+
eventRefFlow(VarManager::fgValues[VarManager::kM11REF], VarManager::fgValues[VarManager::kM11REFetagap], VarManager::fgValues[VarManager::kM1111REF], VarManager::fgValues[VarManager::kCORR2REF], VarManager::fgValues[VarManager::kCORR2REFetagap], VarManager::fgValues[VarManager::kCORR4REF], VarManager::fgValues[VarManager::kCentFT0C]);
391+
eventQvectorExtra(0.f, 0.f, 0.f, 0.f, S11C, S12C, 0.f, 0.f);
392+
}
393+
}
394+
355395
// Templated function instantianed for all of the process functions
356396
template <uint32_t TEventFillMap, uint32_t TTrackFillMap, typename TEvent, typename TTracks>
357397
void runFillQvector(TEvent const& collision, MyBcs const&, TTracks const& tracks1, aod::Zdcs const&)
@@ -574,6 +614,12 @@ struct DQEventQvector {
574614
runFillQvectorFromCentralFW<gkEventFillMapRun3>(collisions);
575615
}
576616

617+
// Process to fill Q vector using barrel tracks in a reduced event table for barrel/muon tracks flow related analyses Run 3
618+
void processCentralQvectorWithFT0CCumulants(MyEventsWithCentQvectRun3::iterator const& collision, aod::FT0s const& ft0s)
619+
{
620+
runFillQvectorFromCentralFWWithFT0CCumulants<gkEventFillMapRun3>(collision, ft0s);
621+
}
622+
577623
// Process to fill Q vector using forward tracks in a reduced event table for barrel/muon tracks flow related analyses Run 3
578624
void processForwardQvector(MyEventsWithCentRun3::iterator const& collisions, MyBcs const& bcs, soa::Filtered<aod::MFTTracks> const& tracks, aod::Zdcs const& zdcs)
579625
{
@@ -590,6 +636,7 @@ struct DQEventQvector {
590636
PROCESS_SWITCH(DQEventQvector, processBarrelQvector, "Run q-vector task on barrel tracks for Run3", false);
591637
PROCESS_SWITCH(DQEventQvector, processAllQvector, "Run q-vector task on barrel tracks for Run3 and using central q-vector", false);
592638
PROCESS_SWITCH(DQEventQvector, processCentralQvector, "Run q-vector task using central q-vector", false);
639+
PROCESS_SWITCH(DQEventQvector, processCentralQvectorWithFT0CCumulants, "Run q-vector task using central q-vector with FT0C cumulants", false);
593640
PROCESS_SWITCH(DQEventQvector, processForwardQvector, "Run q-vector task on forward tracks for Run3", false);
594641
PROCESS_SWITCH(DQEventQvector, processDummy, "Dummy function", false);
595642
};
@@ -618,4 +665,4 @@ void DefineHistograms(HistogramManager* histMan, TString histClasses)
618665
dqhistograms::DefineHistograms(histMan, objArray->At(iclass)->GetName(), "track", "cent,kine,time,map,its,clssize,tpc");
619666
}
620667
}
621-
}
668+
}

0 commit comments

Comments
 (0)