Skip to content

Commit 910465b

Browse files
committed
PWGEM/Dilepton: add muons in struct CheckSmearing
1 parent eb98f56 commit 910465b

File tree

1 file changed

+69
-40
lines changed

1 file changed

+69
-40
lines changed

PWGEM/Dilepton/Tasks/smearing.cxx

Lines changed: 69 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "Framework/ASoA.h"
2626
#include "Framework/DataTypes.h"
2727
#include "Framework/HistogramRegistry.h"
28-
// #include "PWGDQ/DataModel/ReducedInfoTables.h" // remove this later, because 2 data tables (covariant matrix) in this header confilict against EM tables.
2928
#include "PWGEM/Dilepton/Utils/MomentumSmearer.h"
3029
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
3130

@@ -292,20 +291,16 @@ struct ApplySmearing {
292291
}
293292

294293
void processDummyMCanalysisEM(aod::EMMCParticles const&) {}
295-
// void processDummyMCanalysisDQ(ReducedMCTracks const&) {}
296294

297295
PROCESS_SWITCH(ApplySmearing, processMCanalysisEM, "Run for MC analysis which uses skimmed EM data format", false);
298-
// PROCESS_SWITCH(ApplySmearing, processMCanalysisDQ, "Run for MC analysis which uses skimmed DQ data format", false);
299296
PROCESS_SWITCH(ApplySmearing, processCocktail, "Run for cocktail analysis", false);
300297
PROCESS_SWITCH(ApplySmearing, processDummyMCanalysisEM, "Dummy process function", false);
301-
// PROCESS_SWITCH(ApplySmearing, processDummyMCanalysisDQ, "Dummy process function", false);
302298
PROCESS_SWITCH(ApplySmearing, processDummyCocktail, "Dummy process function", true);
303299
};
304300

305301
struct CheckSmearing {
306-
using EMMCParticlesWithSmearing = soa::Join<aod::EMMCParticles, aod::SmearedElectrons>; // this is only for electrons
307-
// using MyReducedTracks = soa::Join<ReducedMCTracks, aod::SmearedElectrons>; // this is only for electrons
308-
using MyCocktailTracks = soa::Join<aod::McParticles, aod::SmearedElectrons>; // this is only for electrons
302+
using EMMCParticlesWithSmearing = soa::Join<aod::EMMCParticles, aod::SmearedElectrons, aod::SmearedMuons>;
303+
using MyCocktailTracks = soa::Join<aod::McParticles, aod::SmearedElectrons, aod::SmearedMuons>;
309304

310305
// Run for electrons or muons
311306
Configurable<int> fPdgCode{"cfgPdgCode", 11, "Set the type of particle to be checked"};
@@ -322,9 +317,9 @@ struct CheckSmearing {
322317

323318
void init(o2::framework::InitContext&)
324319
{
325-
registry.add<TH2>("hCorrelation_Pt", "pT correlation;p_{T,l}^{gen} (GeV/c);p_{T,l}^{smeared} (GeV/c)", {HistType::kTH2F, {{1000, 0.0f, 10.0f}, {1000, 0.0f, 10.0f}}});
326-
registry.add<TH2>("hCorrelation_Eta", "eta correlation;#eta_{l}^{gen};#eta_{l}^{smeared}", {HistType::kTH2F, {{200, -1.0f, +1.0f}, {200, -1.0f, +1.0f}}});
327-
registry.add<TH2>("hCorrelation_Phi", "phi correlation;#varphi_{l}^{gen} (rad.);#varphi_{l}^{smeared} (rad.)", {HistType::kTH2F, {{100, 0.0f, TMath::TwoPi()}, {100, 0.0f, TMath::TwoPi()}}});
320+
registry.add<TH2>("Electron/hCorrelation_Pt", "pT correlation;p_{T,l}^{gen} (GeV/c);p_{T,l}^{smeared} (GeV/c)", {HistType::kTH2F, {{1000, 0.0f, 10.0f}, {1000, 0.0f, 10.0f}}});
321+
registry.add<TH2>("Electron/hCorrelation_Eta", "eta correlation;#eta_{l}^{gen};#eta_{l}^{smeared}", {HistType::kTH2F, {{200, -1.0f, +1.0f}, {200, -1.0f, +1.0f}}});
322+
registry.add<TH2>("Electron/hCorrelation_Phi", "phi correlation;#varphi_{l}^{gen} (rad.);#varphi_{l}^{smeared} (rad.)", {HistType::kTH2F, {{100, 0.0f, TMath::TwoPi()}, {100, 0.0f, TMath::TwoPi()}}});
328323

329324
// Binning for resolution
330325
AxisSpec axisPtRes{ptResBins, "#it{p}^{gen}_{T,l} (GeV/#it{c})"};
@@ -333,16 +328,20 @@ struct CheckSmearing {
333328
AxisSpec axisDeltaphiRes{deltaphiResBins, "#varphi^{gen} - #varphi^{rec} (rad.)"};
334329

335330
if (!fConfigUsePtVecRes) {
336-
registry.add<TH2>("PtGen_DeltaPtOverPtGen", "", HistType::kTH2D, {axisPtRes, axisDeltaptRes}, true);
337-
registry.add<TH2>("PtGen_DeltaEta", "", HistType::kTH2D, {axisPtRes, axisDeltaetaRes}, true);
338-
registry.add<TH2>("PtGen_DeltaPhi_Neg", "", HistType::kTH2D, {axisPtRes, axisDeltaphiRes}, true);
339-
registry.add<TH2>("PtGen_DeltaPhi_Pos", "", HistType::kTH2D, {axisPtRes, axisDeltaphiRes}, true);
331+
registry.add<TH2>("Electron/PtGen_DeltaPtOverPtGen", "", HistType::kTH2D, {axisPtRes, axisDeltaptRes}, true);
332+
registry.add<TH2>("Electron/PtGen_DeltaEta", "", HistType::kTH2D, {axisPtRes, axisDeltaetaRes}, true);
333+
registry.add<TH2>("Electron/PtGen_DeltaPhi_Neg", "", HistType::kTH2D, {axisPtRes, axisDeltaphiRes}, true);
334+
registry.add<TH2>("Electron/PtGen_DeltaPhi_Pos", "", HistType::kTH2D, {axisPtRes, axisDeltaphiRes}, true);
340335
} else {
341-
registry.add<TH2>("PtGen_DeltaPtOverPtGen", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaptRes}, true);
342-
registry.add<TH2>("PtGen_DeltaEta", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaetaRes}, true);
343-
registry.add<TH2>("PtGen_DeltaPhi_Neg", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaphiRes}, true);
344-
registry.add<TH2>("PtGen_DeltaPhi_Pos", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaphiRes}, true);
336+
registry.add<TH2>("Electron/PtGen_DeltaPtOverPtGen", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaptRes}, true);
337+
registry.add<TH2>("Electron/PtGen_DeltaEta", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaetaRes}, true);
338+
registry.add<TH2>("Electron/PtGen_DeltaPhi_Neg", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaphiRes}, true);
339+
registry.add<TH2>("Electron/PtGen_DeltaPhi_Pos", "", HistType::kTH2D, {{ptResBinsVec, "#it{p}^{gen}_{T,l} (GeV/#it{c})"}, axisDeltaphiRes}, true);
345340
}
341+
342+
registry.addClone("Electron/", "GlobalMuon/");
343+
registry.addClone("Electron/", "StandaloneMuon/");
344+
346345
}
347346

348347
template <o2::aod::pwgem::dilepton::smearing::EMAnaType type, typename TTracksMC, typename TMCCollisions>
@@ -360,21 +359,59 @@ struct CheckSmearing {
360359
}
361360
}
362361

363-
float deltaptoverpt = -1000.;
364-
if (mctrack.pt() > 0.)
365-
deltaptoverpt = (mctrack.pt() - mctrack.ptSmeared()) / mctrack.pt();
366-
float deltaeta = mctrack.eta() - mctrack.etaSmeared();
367-
float deltaphi = mctrack.phi() - mctrack.phiSmeared();
368-
registry.fill(HIST("PtGen_DeltaPtOverPtGen"), mctrack.pt(), deltaptoverpt);
369-
registry.fill(HIST("PtGen_DeltaEta"), mctrack.pt(), deltaeta);
370-
if (mctrack.pdgCode() < 0) {
371-
registry.fill(HIST("PtGen_DeltaPhi_Neg"), mctrack.pt(), deltaphi);
372-
} else {
373-
registry.fill(HIST("PtGen_DeltaPhi_Pos"), mctrack.pt(), deltaphi);
362+
if (std::abs(mctrack.pdgCode()) == 11) { // for electrons
363+
float deltaptoverpt = -1000.f;
364+
if (mctrack.pt() > 0.f){
365+
deltaptoverpt = (mctrack.pt() - mctrack.ptSmeared()) / mctrack.pt();
366+
}
367+
float deltaeta = mctrack.eta() - mctrack.etaSmeared();
368+
float deltaphi = mctrack.phi() - mctrack.phiSmeared();
369+
registry.fill(HIST("Electron/PtGen_DeltaPtOverPtGen"), mctrack.pt(), deltaptoverpt);
370+
registry.fill(HIST("Electron/PtGen_DeltaEta"), mctrack.pt(), deltaeta);
371+
if (mctrack.pdgCode() < 0) { // e+
372+
registry.fill(HIST("Electron/PtGen_DeltaPhi_Pos"), mctrack.pt(), deltaphi);
373+
} else { // e-
374+
registry.fill(HIST("Electron/PtGen_DeltaPhi_Neg"), mctrack.pt(), deltaphi);
375+
}
376+
registry.fill(HIST("Electron/hCorrelation_Pt"), mctrack.pt(), mctrack.ptSmeared());
377+
registry.fill(HIST("Electron/hCorrelation_Eta"), mctrack.eta(), mctrack.etaSmeared());
378+
registry.fill(HIST("Electron/hCorrelation_Phi"), mctrack.phi(), mctrack.phiSmeared());
379+
} else if (std::abs(mctrack.pdgCode()) == 13) { // for muons
380+
float deltaptoverpt = -1000.f;
381+
// for standalone muons
382+
if (mctrack.pt() > 0.f){
383+
deltaptoverpt = (mctrack.pt() - mctrack.ptSmeared_sa_muon()) / mctrack.pt();
384+
}
385+
float deltaeta = mctrack.eta() - mctrack.etaSmeared_sa_muon();
386+
float deltaphi = mctrack.phi() - mctrack.phiSmeared_sa_muon();
387+
registry.fill(HIST("StandaloneMuon/PtGen_DeltaPtOverPtGen"), mctrack.pt(), deltaptoverpt);
388+
registry.fill(HIST("StandaloneMuon/PtGen_DeltaEta"), mctrack.pt(), deltaeta);
389+
if (mctrack.pdgCode() < 0) { // mu+
390+
registry.fill(HIST("StandaloneMuon/PtGen_DeltaPhi_Pos"), mctrack.pt(), deltaphi);
391+
} else { // mu-
392+
registry.fill(HIST("StandaloneMuon/PtGen_DeltaPhi_Neg"), mctrack.pt(), deltaphi);
393+
}
394+
registry.fill(HIST("StandaloneMuon/hCorrelation_Pt"), mctrack.pt(), mctrack.ptSmeared_sa_muon());
395+
registry.fill(HIST("StandaloneMuon/hCorrelation_Eta"), mctrack.eta(), mctrack.etaSmeared_sa_muon());
396+
registry.fill(HIST("StandaloneMuon/hCorrelation_Phi"), mctrack.phi(), mctrack.phiSmeared_sa_muon());
397+
398+
// for global muons
399+
if (mctrack.pt() > 0.f){
400+
deltaptoverpt = (mctrack.pt() - mctrack.ptSmeared_gl_muon()) / mctrack.pt();
401+
}
402+
deltaeta = mctrack.eta() - mctrack.etaSmeared_gl_muon();
403+
deltaphi = mctrack.phi() - mctrack.phiSmeared_gl_muon();
404+
registry.fill(HIST("GlobalMuon/PtGen_DeltaPtOverPtGen"), mctrack.pt(), deltaptoverpt);
405+
registry.fill(HIST("GlobalMuon/PtGen_DeltaEta"), mctrack.pt(), deltaeta);
406+
if (mctrack.pdgCode() < 0) { // mu+
407+
registry.fill(HIST("GlobalMuon/PtGen_DeltaPhi_Pos"), mctrack.pt(), deltaphi);
408+
} else { // mu-
409+
registry.fill(HIST("GlobalMuon/PtGen_DeltaPhi_Neg"), mctrack.pt(), deltaphi);
410+
}
411+
registry.fill(HIST("GlobalMuon/hCorrelation_Pt"), mctrack.pt(), mctrack.ptSmeared_gl_muon());
412+
registry.fill(HIST("GlobalMuon/hCorrelation_Eta"), mctrack.eta(), mctrack.etaSmeared_gl_muon());
413+
registry.fill(HIST("GlobalMuon/hCorrelation_Phi"), mctrack.phi(), mctrack.phiSmeared_gl_muon());
374414
}
375-
registry.fill(HIST("hCorrelation_Pt"), mctrack.pt(), mctrack.ptSmeared());
376-
registry.fill(HIST("hCorrelation_Eta"), mctrack.eta(), mctrack.etaSmeared());
377-
registry.fill(HIST("hCorrelation_Phi"), mctrack.phi(), mctrack.phiSmeared());
378415
} // end of mctrack loop
379416
}
380417

@@ -383,25 +420,17 @@ struct CheckSmearing {
383420
Check<o2::aod::pwgem::dilepton::smearing::EMAnaType::kEfficiency>(tracksMC, mccollisions);
384421
}
385422

386-
// void processCheckMCanalysisDQ(MyReducedTracks const& tracksMC)
387-
// {
388-
// Check(tracksMC);
389-
// }
390-
391423
void processCheckCocktail(MyCocktailTracks const& tracksMC)
392424
{
393425
Check<o2::aod::pwgem::dilepton::smearing::EMAnaType::kCocktail>(tracksMC, nullptr);
394426
}
395427

396428
void processDummyMCanalysisEM(aod::EMMCParticles const&) {}
397-
// void processDummyMCanalysisDQ(ReducedMCTracks const&) {}
398429
void processDummyCocktail(aod::McParticles const&) {}
399430

400431
PROCESS_SWITCH(CheckSmearing, processCheckMCanalysisEM, "Run for MC analysis", false);
401-
// PROCESS_SWITCH(CheckSmearing, processCheckMCanalysisDQ, "Run for MC analysis", false);
402432
PROCESS_SWITCH(CheckSmearing, processCheckCocktail, "Run for cocktail analysis", false);
403433
PROCESS_SWITCH(CheckSmearing, processDummyMCanalysisEM, "Dummy process function", false);
404-
// PROCESS_SWITCH(CheckSmearing, processDummyMCanalysisDQ, "Dummy process function", false);
405434
PROCESS_SWITCH(CheckSmearing, processDummyCocktail, "Dummy process function", true);
406435
};
407436
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)