Skip to content

Commit 54b64db

Browse files
Ankur YadavAnkur Yadav
authored andcommitted
Now computing M11REF and CORR2REF variables that are required for the 2PC flow aanalysis in dqFlow itself and filling them in the table rather than computing them in VarManager
1 parent 49beb77 commit 54b64db

File tree

3 files changed

+48
-81
lines changed

3 files changed

+48
-81
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -806,8 +806,6 @@ class VarManager : public TObject
806806
kS12A,
807807
kS13A,
808808
kS31A,
809-
kS11C,
810-
kS12C,
811809
kM11REF,
812810
kM11REFetagap,
813811
kM01POI,
@@ -5487,15 +5485,6 @@ void VarManager::FillQVectorFromCentralFW(C const& collision, float* values)
54875485
values[kR2EP_FT0MTPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFT0m, epBNegs, 2));
54885486
values[kR2EP_FV0ATPCPOS] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBPoss, 2));
54895487
values[kR2EP_FV0ATPCNEG] = TMath::Cos(2 * getDeltaPsiInRange(epFV0a, epBNegs, 2));
5490-
5491-
float S21C = values[kS11C] * values[kS11C];
5492-
std::complex<double> Q21C(values[kQ2X0C] * values[kS11C], values[kQ2Y0C] * values[kS11C]);
5493-
5494-
// Fill necessary quantities for cumulant calculations with weighted Q-vectors
5495-
values[kM11REF] = S21C - values[kS12C];
5496-
values[kCORR2REF] = (norm(Q21C) - values[kS12C]) / values[kM11REF];
5497-
values[kCORR2REF] = std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) ? 0 : values[kCORR2REF];
5498-
values[kM11REF] = std::isnan(values[kM11REF]) || std::isinf(values[kM11REF]) || std::isnan(values[kCORR2REF]) || std::isinf(values[kCORR2REF]) ? 0 : values[kM11REF];
54995488
}
55005489

55015490
template <typename C>

PWGDQ/Tasks/dqFlow.cxx

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ struct DQEventQvector {
142142
ConfigurableAxis axisMultiplicity{"axisMultiplicity", {VARIABLE_WIDTH, 0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100.1}, "multiplicity / centrality axis for histograms"};
143143

144144
// Define the filter for barrel tracks and forward tracks
145-
Filter trackFilter = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true);
145+
Filter trackFilter = (requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t)true);
146146
Filter fwdFilter = (aod::fwdtrack::eta < -2.45f) && (aod::fwdtrack::eta > -3.6f);
147147

148148
// Histograms used for optionnal efficiency and non-uniform acceptance corrections
@@ -359,6 +359,28 @@ struct DQEventQvector {
359359
VarManager::ResetValues(0, VarManager::kNVars);
360360
VarManager::FillEvent<TEventFillMap>(collision);
361361

362+
float S11C = collision.sumAmplFT0C();
363+
float S12C = 0.f;
364+
float S21C = S11C * S11C;
365+
366+
// Compute sum of squares of amplitudes from FT0C for flow analysis
367+
if (collision.has_foundFT0()) {
368+
auto ft0 = collision.foundFT0();
369+
auto const& ampC = ft0.amplitudeC();
370+
for (auto amp : ampC) {
371+
if (amp > 0.f) {
372+
S12C += amp * amp;
373+
}
374+
}
375+
}
376+
VarManager::FillQVectorFromCentralFW(collision);
377+
std::complex<double> Q21C(collision.qvecFT0CRe() * S11C, collision.qvecFT0CIm() * S11C);
378+
379+
// Fill necessary quantities for cumulant calculations with weighted Q-vectors
380+
float M11REF = S21C - S12C;
381+
float CORR2REF = (norm(Q21C) - S12C) / M11REF;
382+
CORR2REF = std::isnan(M11REF) || std::isinf(M11REF) || std::isnan(CORR2REF) || std::isinf(CORR2REF) ? 0 : CORR2REF;
383+
M11REF = std::isnan(M11REF) || std::isinf(M11REF) || std::isnan(CORR2REF) || std::isinf(CORR2REF) ? 0 : M11REF;
362384

363385
if (fConfigQA) {
364386
fHistMan->FillHistClass("Event_BeforeCuts_centralFW", VarManager::fgValues);
@@ -368,27 +390,11 @@ struct DQEventQvector {
368390
}
369391

370392
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-
387393
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(),
388394
collision.sumAmplFT0A(), collision.sumAmplFT0C(), collision.sumAmplFT0M(), collision.sumAmplFV0A(), collision.nTrkTPCpos(), collision.nTrkTPCneg());
389395
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);
396+
eventRefFlow(M11REF, -9999, -9999, CORR2REF, -9999, -9999, VarManager::fgValues[VarManager::kCentFT0C]);
397+
eventQvectorExtra(-9999, -9999, -9999, -9999, S11C, S12C, -9999, -9999);
392398
}
393399
}
394400

@@ -665,4 +671,4 @@ void DefineHistograms(HistogramManager* histMan, TString histClasses)
665671
dqhistograms::DefineHistograms(histMan, objArray->At(iclass)->GetName(), "track", "cent,kine,time,map,its,clssize,tpc");
666672
}
667673
}
668-
}
674+
}

PWGJE/Tasks/jetSpectraEseTask.cxx

Lines changed: 22 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
#include <Framework/InitContext.h>
3636
#include <Framework/Logger.h>
3737
#include <Framework/O2DatabasePDGPlugin.h>
38-
#include <Framework/O2DatabasePDGPlugin.h>
3938
#include <Framework/OutputObjHeader.h>
4039
#include <Framework/runDataProcessing.h>
4140

@@ -61,7 +60,6 @@ using namespace o2::framework;
6160
using namespace o2::framework::expressions;
6261

6362
struct JetSpectraEseTask {
64-
Configurable<std::string> cfgEfficiency{"cfgEfficiency", "", "CCDB path to efficiency"};
6563
Configurable<std::string> cfgEfficiency{"cfgEfficiency", "", "CCDB path to efficiency"};
6664
Configurable<float> jetPtMin{"jetPtMin", 5.0, "minimum jet pT cut"};
6765
Configurable<float> jetR{"jetR", 0.2, "jet resolution parameter"};
@@ -149,12 +147,6 @@ struct JetSpectraEseTask {
149147
bool isLoaded = false;
150148
} cfg;
151149

152-
Service<ccdb::BasicCCDBManager> ccdb;
153-
struct Efficiency {
154-
TH1D* hEff = nullptr;
155-
bool isLoaded = false;
156-
} cfg;
157-
158150
Filter trackCuts = (aod::jtrack::pt >= trackPtMin && aod::jtrack::pt < trackPtMax && aod::jtrack::eta > trackEtaMin && aod::jtrack::eta < trackEtaMax);
159151
Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * Scaler) && nabs(aod::jet::eta) < Acceptance - jetR;
160152
Filter colFilter = nabs(aod::jcollision::posZ) < vertexZCut;
@@ -163,13 +155,11 @@ struct JetSpectraEseTask {
163155
Preslice<ChargedMCDJets> mcdjetsPerJCollision = o2::aod::jet::collisionId;
164156
Preslice<aod::JetTracks> tracksPerJCollision = o2::aod::jtrack::collisionId;
165157
Preslice<aod::JetTracksMCD> mcdTracksPerJCollision = o2::aod::jtrack::collisionId;
166-
Preslice<aod::JetParticles> particlesPerJMcCollision = o2::aod::jmcparticle::mcCollisionId;
167158

168159
SliceCache cache;
169160
using BinningType = ColumnBinningPolicy<aod::jcollision::PosZ, aod::jcollision::CentFT0C>;
170161
BinningType corrBinning{{binsZVtx, binsCentrality}, true};
171162
Service<o2::framework::O2DatabasePDG> pdg;
172-
Service<o2::framework::O2DatabasePDG> pdg;
173163

174164
enum class DetID { FT0C,
175165
FT0A,
@@ -420,19 +410,20 @@ struct JetSpectraEseTask {
420410
}
421411
if (doprocessMCGenTrack) {
422412
LOGF(info, "JetSpectraEseTask::init() - MCGen track");
423-
registry.add("hTrackPtGen", "", {HistType::kTH1F, {{assocTrackPt}}});
424-
registry.add("hTrackEtaGen", "", {HistType::kTH1F, {{etaAxis}}});
425-
registry.add("hTrackPhiGen", "", {HistType::kTH1F, {{phiAxis}}});
413+
registry.add("mcgen/hTrackPtGen", "", {HistType::kTH1F, {{assocTrackPt}}});
414+
registry.add("mcgen/hTrackEtaGen", "", {HistType::kTH1F, {{etaAxis}}});
415+
registry.add("mcgen/hTrackPhiGen", "", {HistType::kTH1F, {{phiAxis}}});
426416
}
427417
if (doprocessMCRecoTrack) {
428418
LOGF(info, "JetSpectraEseTask::init() - MCRec track");
429-
registry.add("hTrackPtReco", "", {HistType::kTH1F, {{assocTrackPt}}});
430-
registry.add("hTrackEtaReco", "", {HistType::kTH1F, {{etaAxis}}});
431-
registry.add("hTrackPhiReco", "", {HistType::kTH1F, {{phiAxis}}});
419+
registry.add("mcrec/hTrackPtReco", "", {HistType::kTH1F, {{assocTrackPt}}});
420+
registry.add("mcrec/hTrackEtaReco", "", {HistType::kTH1F, {{etaAxis}}});
421+
registry.add("mcrec/hTrackPhiReco", "", {HistType::kTH1F, {{phiAxis}}});
432422
}
433423
}
434424

435-
void loadEfficiency(aod::BCsWithTimestamps::iterator const& bc)
425+
template <typename TBC>
426+
void loadEfficiency(TBC const& bc)
436427
{
437428
uint64_t timestamp = bc.timestamp();
438429
if (cfg.isLoaded) {
@@ -534,24 +525,15 @@ struct JetSpectraEseTask {
534525
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
535526
continue;
536527
double weff = getEfficiency(track);
537-
if (weff < 0)
538-
continue;
539-
double weff = getEfficiency(track);
540528
if (weff < 0)
541529
continue;
542530
auto deta = track.eta() - jet.eta();
543531
auto dphi = RecoDecay::constrainAngle(track.phi() - jet.phi(), -o2::constants::math::PIHalf);
544532
registry.fill(HIST("thn_jethad_corr_same"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
545533
hSameSub[lRndInd]->Fill(centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
546-
registry.fill(HIST("thn_jethad_corr_same"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
547-
hSameSub[lRndInd]->Fill(centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
548534
}
549535
}
550536
for (const auto& track : tracks) {
551-
double weff = getEfficiency(track);
552-
if (weff < 0)
553-
continue;
554-
registry.fill(HIST("trackQA/before/hTrackPt"), centrality, track.pt(), weff);
555537
double weff = getEfficiency(track);
556538
if (weff < 0)
557539
continue;
@@ -561,7 +543,6 @@ struct JetSpectraEseTask {
561543
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
562544
continue;
563545
registry.fill(HIST("trackQA/after/hTrackPt"), centrality, track.pt(), weff);
564-
registry.fill(HIST("trackQA/after/hTrackPt"), centrality, track.pt(), weff);
565546
registry.fill(HIST("trackQA/after/hTrackEta"), centrality, track.eta());
566547
registry.fill(HIST("trackQA/after/hTrackPhi"), centrality, track.phi());
567548
registry.fill(HIST("h3CenttrPhiPsi2"), centrality, RecoDecay::constrainAngle(track.phi() - psi.psi2, -o2::constants::math::PI), qPerc[0]);
@@ -576,9 +557,8 @@ struct JetSpectraEseTask {
576557
auto tracksTuple = std::make_tuple(jets, tracks);
577558
Pair<TCollisions, TJets, TTracks, BinningType> pairData{corrBinning, numberEventsMixed, -1, collisions, tracksTuple, &cache};
578559

579-
580560
for (const auto& [c1, jets1, c2, tracks2] : pairData) {
581-
auto bc = c2.template bc_as<aod::BCsWithTimestamps>();
561+
auto bc = c2.template bc_as<aod::JBCs>();
582562
loadEfficiency(bc);
583563
auto c1Tracks = tracks.sliceBy(tracksPerJCollision, c1.globalIndex());
584564
registry.fill(HIST("eventQA/before/hVtxZMixed"), c1.posZ());
@@ -638,29 +618,20 @@ struct JetSpectraEseTask {
638618
auto vCorrL = cfgrhoPhi ? corrL(jet) : vCorr;
639619
float dPhi{RecoDecay::constrainAngle(jet.phi() - psi.psi2, -o2::constants::math::PI)};
640620

641-
registry.fill(HIST("hNtrigMixed"), centrality, vCorrL, dPhi, qPerc[0]);
642621
registry.fill(HIST("hNtrigMixed"), centrality, vCorrL, dPhi, qPerc[0]);
643622
for (const auto& track : tracks2) {
644623
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
645624
continue;
646625
double weff = getEfficiency(track);
647-
if (weff < 0)
648-
continue;
649-
double weff = getEfficiency(track);
650626
if (weff < 0)
651627
continue;
652628
auto deta = track.eta() - jet.eta();
653629
auto dphi = RecoDecay::constrainAngle(track.phi() - jet.phi(), -o2::constants::math::PIHalf);
654630
registry.fill(HIST("thn_jethad_corr_mixed"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
655-
registry.fill(HIST("thn_jethad_corr_mixed"), centrality, vCorrL, track.pt(), deta, dphi, dPhi, qPerc[0], weff);
656631
}
657632
}
658633

659634
for (const auto& track : tracks2) {
660-
double weff = getEfficiency(track);
661-
if (weff < 0)
662-
continue;
663-
registry.fill(HIST("trackQA/before/hTrackPtMixed"), centrality, track.pt(), weff);
664635
double weff = getEfficiency(track);
665636
if (weff < 0)
666637
continue;
@@ -670,7 +641,6 @@ struct JetSpectraEseTask {
670641
if (!jetderiveddatautilities::selectTrack(track, trackSelection))
671642
continue;
672643
registry.fill(HIST("trackQA/after/hTrackPtMixed"), centrality, track.pt(), weff);
673-
registry.fill(HIST("trackQA/after/hTrackPtMixed"), centrality, track.pt(), weff);
674644
registry.fill(HIST("trackQA/after/hTrackEtaMixed"), centrality, track.eta());
675645
registry.fill(HIST("trackQA/after/hTrackPhiMixed"), centrality, track.phi());
676646
}
@@ -679,7 +649,7 @@ struct JetSpectraEseTask {
679649

680650
void processESEDataCharged(soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs>::iterator const& collision,
681651
soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const& jets,
682-
aod::JetTracks const& tracks, aod::BCsWithTimestamps const&)
652+
aod::JetTracks const& tracks, aod::JBCs const&)
683653
{
684654
registry.fill(HIST("eventQA/hEventCounter"), kFilteredInputEv);
685655
registry.fill(HIST("eventQA/before/hVtxZ"), collision.posZ());
@@ -691,15 +661,15 @@ struct JetSpectraEseTask {
691661
return;
692662
registry.fill(HIST("eventQA/hEventCounter"), kOccupancyCut);
693663

694-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
664+
auto bc = collision.bc_as<aod::JBCs>();
695665
loadEfficiency(bc);
696666
jetSpectra(collision, jets, tracks);
697667
}
698668
PROCESS_SWITCH(JetSpectraEseTask, processESEDataCharged, "process ese collisions", true);
699669

700670
void processESEDataChargedMixed(soa::Join<aod::JetCollisions, aod::BkgChargedRhos, aod::Qvectors, aod::QPercentileFT0Cs> const& collisions,
701671
soa::Filtered<soa::Join<aod::ChargedJets, aod::ChargedJetConstituents>> const& jets,
702-
aod::JetTracks const& tracks, aod::BCsWithTimestamps const&)
672+
aod::JetTracks const& tracks, aod::JBCs const&)
703673
{
704674
jetMixed(collisions, jets, tracks);
705675
}
@@ -916,8 +886,10 @@ struct JetSpectraEseTask {
916886
return;
917887
}
918888

919-
auto particlesInCollision = particles.sliceBy(particlesPerJMcCollision, mcCollision.globalIndex());
920-
for (const auto& particle : particlesInCollision) {
889+
for (const auto& particle : particles) {
890+
if (particle.mcCollisionId() != mcCollision.globalIndex()) {
891+
continue;
892+
}
921893
if (!isChargedParticle(particle.pdgCode())) {
922894
continue;
923895
}
@@ -931,9 +903,9 @@ struct JetSpectraEseTask {
931903
continue;
932904
}
933905

934-
registry.fill(HIST("hTrackPtGen"), particle.pt());
935-
registry.fill(HIST("hTrackEtaGen"), particle.eta());
936-
registry.fill(HIST("hTrackPhiGen"), particle.phi());
906+
registry.fill(HIST("mcgen/hTrackPtGen"), particle.pt());
907+
registry.fill(HIST("mcgen/hTrackEtaGen"), particle.eta());
908+
registry.fill(HIST("mcgen/hTrackPhiGen"), particle.phi());
937909
}
938910
}
939911
PROCESS_SWITCH(JetSpectraEseTask, processMCGenTrack, "jet MC process: Generated track", false);
@@ -996,9 +968,9 @@ struct JetSpectraEseTask {
996968
}
997969
seenMcParticles.push_back(particle.globalIndex());
998970

999-
registry.fill(HIST("hTrackPtReco"), track.pt());
1000-
registry.fill(HIST("hTrackEtaReco"), track.eta());
1001-
registry.fill(HIST("hTrackPhiReco"), track.phi());
971+
registry.fill(HIST("mcrec/hTrackPtReco"), track.pt());
972+
registry.fill(HIST("mcrec/hTrackEtaReco"), track.eta());
973+
registry.fill(HIST("mcrec/hTrackPhiReco"), track.phi());
1002974
}
1003975
}
1004976
}

0 commit comments

Comments
 (0)