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
305301struct 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};
407436WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments