From b12ae8c6a96b8df2bdb32829b21704a92f460824 Mon Sep 17 00:00:00 2001 From: Raphaelle Bailhache Date: Tue, 4 Oct 2022 18:32:25 +0200 Subject: [PATCH 1/2] Update of the efficiency task --- PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx | 247 ++++++++++++++++++++---- 1 file changed, 207 insertions(+), 40 deletions(-) diff --git a/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx b/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx index a07a00cb2c8..adeed0f3c3f 100644 --- a/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx +++ b/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx @@ -261,17 +261,20 @@ struct AnalysisTrackSelection { Configurable fConfigCuts{"cfgTrackCuts", "jpsiPID1", "Comma separated list of barrel track cuts"}; Configurable fConfigMCSignals{"cfgTrackMCSignals", "", "Comma separated list of MC signals"}; - // 3D histos - Configurable fConfigUsePtVec{"cfgUsePtVec", true, "If true, non-linear pt bins predefined"}; - Configurable fConfigMinPt{"cfgMinPt", 0., "min Pt in 3D histos"}; - Configurable fConfigMaxPt{"cfgMaxPt", 10., "max Pt in 3D histos"}; - Configurable fConfigStepPt{"cfgStepPt", 1, "Nb of steps in pt in 3D histos"}; - Configurable fConfigMinEta{"cfgMinEta", -0.8, "min Eta in 3D histos"}; - Configurable fConfigMaxEta{"cfgMaxEta", 0.8, "max Eta in 3D histos"}; - Configurable fConfigStepEta{"cfgStepEta", 16, "Nb of steps in Eta in 3D histos"}; - Configurable fConfigMinPhi{"cfgMinPhi", 0., "min Phi in 3D histos"}; - Configurable fConfigMaxPhi{"cfgMaxPhi", 6.3, "max Phi in 3D histos"}; - Configurable fConfigStepPhi{"cfgStepPhi", 63, "Nb of steps in Phi in 3D histos"}; + // 3D histos for efficiency + Configurable fConfigUsePtVec{"cfgUsePtVecEff", true, "If true, non-linear pt bins predefined"}; + Configurable fConfigMinPt{"cfgMinPtEff", 0., "min Pt in 3D histos"}; + Configurable fConfigMaxPt{"cfgMaxPtEff", 10., "max Pt in 3D histos"}; + Configurable fConfigStepPt{"cfgStepPtEff", 1, "Nb of steps in pt in 3D histos"}; + Configurable fConfigMinEta{"cfgMinEtaEff", -0.8, "min Eta in 3D histos"}; + Configurable fConfigMaxEta{"cfgMaxEtaEff", 0.8, "max Eta in 3D histos"}; + Configurable fConfigStepEta{"cfgStepEtaEff", 16, "Nb of steps in Eta in 3D histos"}; + Configurable fConfigMinPhi{"cfgMinPhiEff", 0., "min Phi in 3D histos"}; + Configurable fConfigMaxPhi{"cfgMaxPhiEff", 6.3, "max Phi in 3D histos"}; + Configurable fConfigStepPhi{"cfgStepPhiEff", 63, "Nb of steps in Phi in 3D histos"}; + + Configurable fConfigRecWithMC{"cfgEffRecWithMCVars", false, "If true, fill also 3D histograms at reconstructed level with mc variables"}; + // Resolution histos Configurable fConfigResolutionOn{"cfgResolution", false, "If true, fill resolution histograms"}; @@ -279,13 +282,13 @@ struct AnalysisTrackSelection { Configurable fConfigMinPtRes{"cfgMinPtRes", 0., "min Pt in res histos"}; Configurable fConfigMaxPtRes{"cfgMaxPtRes", 20., "max Pt in res histos"}; Configurable fConfigStepPtRes{"cfgStepPtRes", 1, "Nb of steps in pt in res histos"}; - Configurable fConfigStepDeltaPt{"cfgStepDeltaPt", 1, "Nb of steps in delta pt in res histos"}; - Configurable fConfigMinDeltaEta{"cfgMinDeltaEta", -0.5, "min delta Eta in res histos"}; - Configurable fConfigMaxDeltaEta{"cfgMaxDeltaEta", 0.5, "max delta Eta in res histos"}; - Configurable fConfigStepDeltaEta{"cfgStepDeltaEta", 500, "Nb of steps in detla Eta in res histos"}; - Configurable fConfigMinDeltaPhi{"cfgMinDeltaPhi", -0.5, "min delta Phi in res histos"}; - Configurable fConfigMaxDeltaPhi{"cfgMaxDeltaPhi", 0.5, "max delta Phi in res histos"}; - Configurable fConfigStepDeltaPhi{"cfgStepDeltaPhi", 500, "Nb of steps in delta Phi in res histos"}; + Configurable fConfigStepDeltaPt{"cfgStepDeltaPtRes", 1, "Nb of steps in delta pt in res histos"}; + Configurable fConfigMinDeltaEta{"cfgMinDeltaEtaRes", -0.5, "min delta Eta in res histos"}; + Configurable fConfigMaxDeltaEta{"cfgMaxDeltaEtaRes", 0.5, "max delta Eta in res histos"}; + Configurable fConfigStepDeltaEta{"cfgStepDeltaEtaRes", 500, "Nb of steps in detla Eta in res histos"}; + Configurable fConfigMinDeltaPhi{"cfgMinDeltaPhiRes", -0.5, "min delta Phi in res histos"}; + Configurable fConfigMaxDeltaPhi{"cfgMaxDeltaPhiRes", 0.5, "max delta Phi in res histos"}; + Configurable fConfigStepDeltaPhi{"cfgStepDeltaPhiRes", 500, "Nb of steps in delta Phi in res histos"}; Configurable fConfigQA{"cfgQA", false, "If true, fill QA histograms"}; @@ -310,6 +313,8 @@ struct AnalysisTrackSelection { std::vector fHistGenSmearedNegPart; std::vector fHistRecPosPart; std::vector fHistRecNegPart; + std::vector fHistRecPosPartMC; + std::vector fHistRecNegPartMC; // Binning std::vector fPtBins; std::vector fEtaBins; @@ -419,7 +424,7 @@ struct AnalysisTrackSelection { fSingleElectronList->Add(Generated); fSingleElectronList->Add(GeneratedSmeared); - // Generated reconstructed lists for every cutsetting one list and every MCsignal 2 histograms with pos and neg charge + // For every cutsetting one list and every MCsignal 2 histograms with pos and neg charge for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { TList* list = new TList(); list->SetName(fTrackCuts.at(list_i).GetName()); @@ -439,6 +444,28 @@ struct AnalysisTrackSelection { } fSingleElectronList->Add(list); } + // For every cutsetting one list and every MCsignal 2 histograms with pos and neg charge, filled with mc variables + if(fConfigRecWithMC) { + for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { + TList* list = new TList(); + list->SetName(Form("%s_MCVars",fTrackCuts.at(list_i).GetName())); + list->SetOwner(); + + for (unsigned int i = 0; i < fMCSignals.size(); ++i) { + TH3D* th3_tmp_pos = new TH3D(Form("Nrec_Pos_%s", fMCSignals.at(i).GetName()), ";p_{T};#eta;#varphi", fNptBins, fPtBins.data(), fNetaBins, fEtaBins.data(), fNphiBins, fPhiBins.data()); + th3_tmp_pos->Sumw2(); + th3_tmp_pos->SetDirectory(0x0); + fHistRecPosPartMC.push_back(th3_tmp_pos); + list->Add(th3_tmp_pos); + TH3D* th3_tmp_neg = new TH3D(Form("Nrec_Neg_%s", fMCSignals.at(i).GetName()), ";p_{T};#eta;#varphi", fNptBins, fPtBins.data(), fNetaBins, fEtaBins.data(), fNphiBins, fPhiBins.data()); + th3_tmp_neg->Sumw2(); + th3_tmp_neg->SetDirectory(0x0); + fHistRecNegPartMC.push_back(th3_tmp_neg); + list->Add(th3_tmp_neg); + } + fSingleElectronList->Add(list); + } + } fMainList->Add(fSingleElectronList); // Resolution histogramms @@ -463,7 +490,6 @@ struct AnalysisTrackSelection { fResolutionList->SetOwner(kTRUE); fResolutionList->SetName("Resolution"); - printf("Histos\n"); TH2D* thPtGen_DeltaPtOverPtGen = new TH2D("PtGen_DeltaPtOverPtGen", "", fNptresBins, fPtResBins.data(), fConfigStepDeltaPt, -1., +1.); TH2D* thPtGen_DeltaEta = new TH2D("PtGen_DeltaEta", "", fNptresBins, fPtResBins.data(), fNDeltaetaBins, fDeltaEtaBins.data()); TH2D* thPtGen_DeltaPhi_Ele = new TH2D("PtGen_DeltaPhi_Ele", "", fNptresBins, fPtResBins.data(), fNDeltaphiBins, fDeltaPhiBins.data()); @@ -586,7 +612,6 @@ struct AnalysisTrackSelection { auto groupedTracks = tracks.sliceBy(perReducedEventTracks, event.globalIndex()); runRecTrack(groupedTracks, tracksMC); } - } // end loop over events } @@ -672,6 +697,28 @@ struct AnalysisTrackSelection { } else { dynamic_cast(fHistRecPosPart.at(j * fMCSignals.size() + i))->Fill(track.pt(), track.eta(), track.phi()); } + + if (fConfigRecWithMC) { + + Double_t mcpt = -10000.; + Double_t mceta = -10000.; + Double_t mcphi = -1000.; + + if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrack) > 0) { + auto mctrack = track.reducedMCTrack(); + mcpt = mctrack.pt(); + mceta = mctrack.eta(); + mcphi = mctrack.phi(); + } + + if (track.sign() < 0) { + dynamic_cast(fHistRecNegPartMC.at(j * fMCSignals.size() + i))->Fill(mcpt, mceta, mcphi); + } else { + dynamic_cast(fHistRecPosPartMC.at(j * fMCSignals.size() + i))->Fill(mcpt, mceta, mcphi); + } + + } + if (fConfigResolutionOn && (i == 0) && (j == 0)) { Double_t mcpt = -10000.; @@ -729,11 +776,14 @@ struct AnalysisSameEventPairing { Configurable fConfigTrackCuts{"cfgTrackCuts", "", "Comma separated list of barrel track cuts"}; Configurable fConfigMCSignals{"cfgBarrelMCSignals", "", "Comma separated list of MC signals"}; - Configurable fConfigMinPt{"cfgMinPt", 0., "Fiducial min Pt for MC signal"}; - Configurable fConfigMaxPt{"cfgMaxPt", 10., "Fiducial max Pt for MC signal"}; - Configurable fConfigMinEta{"cfgMinEta", -0.8, "Fiducial min eta for MC signal"}; - Configurable fConfigMaxEta{"cfgMaxEta", 0.8, "Fiducial max eta for MC signal"}; + Configurable fConfigMinPt{"cfgMinPtFidCut", 0., "Fiducial min Pt for MC signal"}; + Configurable fConfigMaxPt{"cfgMaxPtFidCut", 10., "Fiducial max Pt for MC signal"}; + Configurable fConfigMinEta{"cfgMinEtaFidCut", -0.8, "Fiducial min eta for MC signal"}; + Configurable fConfigMaxEta{"cfgMaxEtaFidCut", 0.8, "Fiducial max eta for MC signal"}; Configurable fConfigFlatTables{"cfgFlatTables", false, "Produce a single flat tables with all relevant information of the pairs and single tracks"}; + Configurable fConfigRecWithMC{"cfgEffRecWithMCVars", false, "If true, fill also 3D histograms at reconstructed level with mc variables"}; + Configurable fConfigFillLS{"cfgEffFillLS", false, "If true, fill LS histograms"}; + // TODO: here we specify signals, however signal decisions are precomputed and stored in mcReducedFlags // TODO: The tasks based on skimmed MC could/should rely ideally just on these flags @@ -763,6 +813,7 @@ struct AnalysisSameEventPairing { std::vector fHistGenPair; std::vector fHistGenSmearedPair; std::vector fHistRecPair; + std::vector fHistRecPairMC; // Binning std::vector fPteeBins; std::vector fMeeBins; @@ -772,7 +823,6 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - printf("Start init\n"); // Create list output fMainList = new THashList; @@ -825,10 +875,16 @@ struct AnalysisSameEventPairing { Generated->SetOwner(); Generated->SetName("Generated"); for (unsigned int i = 0; i < fMCSignals.size(); ++i) { - TH2D* th2_tmp = new TH2D(Form("Ngen_Pair_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + TH2D* th2_tmp = new TH2D(Form("Ngen_Pair_ULS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th2_tmp->Sumw2(); fHistGenPair.push_back(th2_tmp); Generated->Add(th2_tmp); + if(fConfigFillLS){ + TH2D* th3_tmp = new TH2D(Form("Ngen_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + th3_tmp->Sumw2(); + fHistGenPair.push_back(th3_tmp); + Generated->Add(th3_tmp); + } } // Create List with generated+smeared particles @@ -836,30 +892,68 @@ struct AnalysisSameEventPairing { GeneratedSmeared->SetName("GeneratedSmeared"); GeneratedSmeared->SetOwner(); for (unsigned int i = 0; i < fMCSignals.size(); ++i) { - TH2D* th2_tmp = new TH2D(Form("NgenSmeared_Pair_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + TH2D* th2_tmp = new TH2D(Form("NgenSmeared_Pair_ULS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th2_tmp->Sumw2(); fHistGenSmearedPair.push_back(th2_tmp); GeneratedSmeared->Add(th2_tmp); + if(fConfigFillLS){ + TH2D* th3_tmp = new TH2D(Form("NgenSmeared_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + th3_tmp->Sumw2(); + fHistGenSmearedPair.push_back(th3_tmp); + GeneratedSmeared->Add(th3_tmp); + } } fPairList->Add(Generated); fPairList->Add(GeneratedSmeared); - // Generated reconstructed lists for every cutsetting one list and every MCsignal 2 histograms with pos and neg charge + // Rec with reconstructed variables for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { TList* list = new TList(); list->SetName(fTrackCuts.at(list_i).GetName()); list->SetOwner(); for (unsigned int i = 0; i < fMCSignals.size(); ++i) { - TH2D* th2_tmp = new TH2D(Form("Nrec_Pair_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + TH2D* th2_tmp = new TH2D(Form("Nrec_Pair_ULS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th2_tmp->Sumw2(); th2_tmp->SetDirectory(0x0); fHistRecPair.push_back(th2_tmp); list->Add(th2_tmp); + if(fConfigFillLS){ + TH2D* th3_tmp = new TH2D(Form("Nrec_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + th3_tmp->Sumw2(); + th3_tmp->SetDirectory(0x0); + fHistRecPair.push_back(th3_tmp); + list->Add(th3_tmp); + } } fPairList->Add(list); } + + // Rec with MC variables + if(fConfigRecWithMC) { + for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { + TList* list = new TList(); + list->SetName(Form("%s_MCVars",fTrackCuts.at(list_i).GetName())); + list->SetOwner(); + + for (unsigned int i = 0; i < fMCSignals.size(); ++i) { + TH2D* th2_tmp = new TH2D(Form("Nrec_Pair_ULS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + th2_tmp->Sumw2(); + th2_tmp->SetDirectory(0x0); + fHistRecPairMC.push_back(th2_tmp); + list->Add(th2_tmp); + if(fConfigFillLS){ + TH2D* th3_tmp = new TH2D(Form("Nrec_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); + th3_tmp->Sumw2(); + th3_tmp->SetDirectory(0x0); + fHistRecPairMC.push_back(th3_tmp); + list->Add(th3_tmp); + } + } + fPairList->Add(list); + } + } fMainList->Add(fPairList); fOutputList.setObject(fMainList); } @@ -924,11 +1018,12 @@ struct AnalysisSameEventPairing { // Double_t masse = 0.00051099895; // 0.5 MeV/c2 -> 0.0005 GeV/c2 - for (auto& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks)) { + for (auto& [t1, t2] : combinations(soa::CombinationsStrictlyUpperIndexPolicy(groupedMCTracks, groupedMCTracks))) { + //for (auto& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks)) { if ((abs(t1.pdgCode()) != 11) || (abs(t2.pdgCode()) != 11)) continue; - if (t1.pdgCode() * t2.pdgCode() > 0) + if (!fConfigFillLS && (t1.pdgCode() * t2.pdgCode() > 0)) continue; // ULS only TLorentzVector Lvec1; @@ -940,7 +1035,6 @@ struct AnalysisSameEventPairing { double pairpt = LvecM.Pt(); // double opangle = Lvec1.Angle(Lvec2.Vect()); - // printf("Check before\n"); // Fiducial cut Bool_t genfidcut = kTRUE; if ((t1.eta() > fConfigMaxEta) || (t2.eta() > fConfigMaxEta) || (t1.eta() < fConfigMinEta) || (t2.eta() < fConfigMinEta) || (t1.pt() > fConfigMaxPt) || (t2.pt() > fConfigMaxPt) || (t1.pt() < fConfigMinPt) || (t2.pt() < fConfigMinPt)) @@ -950,9 +1044,18 @@ struct AnalysisSameEventPairing { for (auto sig = fMCSignals.begin(); sig != fMCSignals.end(); sig++, isig++) { if ((*sig).CheckSignal(true, groupedMCTracks, t1, t2)) { - // not smeared - if (genfidcut) - dynamic_cast(fHistGenPair.at(isig))->Fill(mass, pairpt); + // not smeared after fiducial cuts + if (genfidcut) { + if(!fConfigFillLS) dynamic_cast(fHistGenPair.at(isig))->Fill(mass, pairpt); + else { + if(t1.pdgCode() * t2.pdgCode() < 0) { + dynamic_cast(fHistGenPair.at(isig*2))->Fill(mass, pairpt); + } + else { + dynamic_cast(fHistGenPair.at(isig*2+1))->Fill(mass, pairpt); + } + } + } // need to implement smeared } } @@ -961,19 +1064,36 @@ struct AnalysisSameEventPairing { template void runRecPair(TTracks const& tracks, TTracksMC const& tracksMC) { + // + Double_t masse = 0.00051099895; // 0.5 MeV/c2 -> 0.0005 GeV/c2 , to be taken differently + Bool_t uls = kTRUE; + // Loop over two track combinations uint8_t twoTrackFilter = 0; // uint32_t dileptonFilterMap = 0; // uint32_t dileptonMcDecision = 0; // dileptonList.reserve(1); - for (auto& [t1, t2] : combinations(tracks, tracks)) { + for (auto& [t1, t2] : combinations(soa::CombinationsStrictlyUpperIndexPolicy(tracks, tracks))) { + //for (auto& [t1, t2] : combinations(tracks, tracks)) { twoTrackFilter = uint32_t(t1.isBarrelSelected()) & uint32_t(t2.isBarrelSelected()); if (!twoTrackFilter) { // the tracks must have at least one filter bit in common to continue continue; } + + if(t1.sign()*t2.sign() > 0) uls = kFALSE; + else uls = kTRUE; + + if(!fConfigFillLS && !uls) continue; + + // Fiducial cut in case they are not done in the reconstructed cuts + Bool_t recfidcut = kTRUE; + if ((t1.eta() > fConfigMaxEta) || (t2.eta() > fConfigMaxEta) || (t1.eta() < fConfigMinEta) || (t2.eta() < fConfigMinEta) || (t1.pt() > fConfigMaxPt) || (t2.pt() > fConfigMaxPt) || (t1.pt() < fConfigMinPt) || (t2.pt() < fConfigMinPt)) recfidcut = kFALSE; + + + // VarManager::FillPair(t1, t2); // run MC matching for this pair @@ -997,9 +1117,56 @@ struct AnalysisSameEventPairing { if (!(mcDecision & (uint32_t(1) << i))) { continue; } - for (unsigned int j = 0; j < fTrackCuts.size(); j++) { - if (twoTrackFilter & (uint8_t(1) << j)) { - dynamic_cast(fHistRecPair.at(j * fMCSignals.size() + i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + if(recfidcut) { + for (unsigned int j = 0; j < fTrackCuts.size(); j++) { + if (twoTrackFilter & (uint8_t(1) << j)) { + if(!fConfigFillLS) { + dynamic_cast(fHistRecPair.at(j * fMCSignals.size() + i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + } + else { + if(uls) { + dynamic_cast(fHistRecPair.at(j * (2*fMCSignals.size()) + 2*i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + } + else { + dynamic_cast(fHistRecPair.at(j * (2*fMCSignals.size()) + 2*i + 1))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + } + } + } + } + } + + if(fConfigRecWithMC) { + Double_t mass = -1000.; + Double_t pairpt = 1000.; + // Fiducial cut in case they are not done in the reconstructed cuts + Bool_t genfidcut = kTRUE; + if constexpr ((TTrackFillMap & VarManager::ObjTypes::ReducedTrack) > 0) { + auto mctrack1 = t1.reducedMCTrack(); + auto mctrack2 = t2.reducedMCTrack(); + TLorentzVector Lvec2, Lvec1; + Lvec1.SetPtEtaPhiM(mctrack1.pt(),mctrack1.eta(),mctrack1.phi(),masse); + Lvec2.SetPtEtaPhiM(mctrack2.pt(),mctrack2.eta(),mctrack2.phi(),masse); + TLorentzVector LvecM = Lvec1 + Lvec2; + mass = LvecM.M(); + pairpt = LvecM.Pt(); + if ((mctrack1.eta() > fConfigMaxEta) || (mctrack2.eta() > fConfigMaxEta) || (mctrack1.eta() < fConfigMinEta) || (mctrack2.eta() < fConfigMinEta) || (mctrack1.pt() > fConfigMaxPt) || (mctrack2.pt() > fConfigMaxPt) || (mctrack1.pt() < fConfigMinPt) || (mctrack2.pt() < fConfigMinPt)) genfidcut = kFALSE; + } + if(genfidcut) { + for (unsigned int j = 0; j < fTrackCuts.size(); j++) { + if (twoTrackFilter & (uint8_t(1) << j)) { + if(!fConfigFillLS) { + dynamic_cast(fHistRecPairMC.at(j * fMCSignals.size() + i))->Fill(mass,pairpt); + } + else { + if(uls) { + dynamic_cast(fHistRecPairMC.at(j * (2*fMCSignals.size()) + 2*i))->Fill(mass,pairpt); + } + else { + dynamic_cast(fHistRecPairMC.at(j * (2*fMCSignals.size()) + 2*i + 1))->Fill(mass,pairpt); + } + } + } + } } } } From e94c1d5ae044f7b53ef36d1feb355b7b4a74a12f Mon Sep 17 00:00:00 2001 From: Raphaelle Bailhache Date: Tue, 4 Oct 2022 18:58:27 +0200 Subject: [PATCH 2/2] Fix clang format --- PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx | 94 ++++++++++++------------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx b/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx index adeed0f3c3f..2e3d780964f 100644 --- a/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx +++ b/PWGEM/Dilepton/Tasks/emEfficiencyEE.cxx @@ -275,7 +275,6 @@ struct AnalysisTrackSelection { Configurable fConfigRecWithMC{"cfgEffRecWithMCVars", false, "If true, fill also 3D histograms at reconstructed level with mc variables"}; - // Resolution histos Configurable fConfigResolutionOn{"cfgResolution", false, "If true, fill resolution histograms"}; Configurable fConfigUsePtVecRes{"cfgUsePtVecRes", true, "If true, non-linear pt bins predefined in res histos"}; @@ -445,10 +444,10 @@ struct AnalysisTrackSelection { fSingleElectronList->Add(list); } // For every cutsetting one list and every MCsignal 2 histograms with pos and neg charge, filled with mc variables - if(fConfigRecWithMC) { + if (fConfigRecWithMC) { for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { TList* list = new TList(); - list->SetName(Form("%s_MCVars",fTrackCuts.at(list_i).GetName())); + list->SetName(Form("%s_MCVars", fTrackCuts.at(list_i).GetName())); list->SetOwner(); for (unsigned int i = 0; i < fMCSignals.size(); ++i) { @@ -716,7 +715,6 @@ struct AnalysisTrackSelection { } else { dynamic_cast(fHistRecPosPartMC.at(j * fMCSignals.size() + i))->Fill(mcpt, mceta, mcphi); } - } if (fConfigResolutionOn && (i == 0) && (j == 0)) { @@ -784,7 +782,6 @@ struct AnalysisSameEventPairing { Configurable fConfigRecWithMC{"cfgEffRecWithMCVars", false, "If true, fill also 3D histograms at reconstructed level with mc variables"}; Configurable fConfigFillLS{"cfgEffFillLS", false, "If true, fill LS histograms"}; - // TODO: here we specify signals, however signal decisions are precomputed and stored in mcReducedFlags // TODO: The tasks based on skimmed MC could/should rely ideally just on these flags // TODO: special AnalysisCuts to be prepared in this direction @@ -823,7 +820,6 @@ struct AnalysisSameEventPairing { void init(o2::framework::InitContext& context) { - // Create list output fMainList = new THashList; fMainList->SetOwner(kTRUE); @@ -879,7 +875,7 @@ struct AnalysisSameEventPairing { th2_tmp->Sumw2(); fHistGenPair.push_back(th2_tmp); Generated->Add(th2_tmp); - if(fConfigFillLS){ + if (fConfigFillLS) { TH2D* th3_tmp = new TH2D(Form("Ngen_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th3_tmp->Sumw2(); fHistGenPair.push_back(th3_tmp); @@ -896,7 +892,7 @@ struct AnalysisSameEventPairing { th2_tmp->Sumw2(); fHistGenSmearedPair.push_back(th2_tmp); GeneratedSmeared->Add(th2_tmp); - if(fConfigFillLS){ + if (fConfigFillLS) { TH2D* th3_tmp = new TH2D(Form("NgenSmeared_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th3_tmp->Sumw2(); fHistGenSmearedPair.push_back(th3_tmp); @@ -919,7 +915,7 @@ struct AnalysisSameEventPairing { th2_tmp->SetDirectory(0x0); fHistRecPair.push_back(th2_tmp); list->Add(th2_tmp); - if(fConfigFillLS){ + if (fConfigFillLS) { TH2D* th3_tmp = new TH2D(Form("Nrec_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th3_tmp->Sumw2(); th3_tmp->SetDirectory(0x0); @@ -931,10 +927,10 @@ struct AnalysisSameEventPairing { } // Rec with MC variables - if(fConfigRecWithMC) { + if (fConfigRecWithMC) { for (unsigned int list_i = 0; list_i < fTrackCuts.size(); ++list_i) { TList* list = new TList(); - list->SetName(Form("%s_MCVars",fTrackCuts.at(list_i).GetName())); + list->SetName(Form("%s_MCVars", fTrackCuts.at(list_i).GetName())); list->SetOwner(); for (unsigned int i = 0; i < fMCSignals.size(); ++i) { @@ -943,7 +939,7 @@ struct AnalysisSameEventPairing { th2_tmp->SetDirectory(0x0); fHistRecPairMC.push_back(th2_tmp); list->Add(th2_tmp); - if(fConfigFillLS){ + if (fConfigFillLS) { TH2D* th3_tmp = new TH2D(Form("Nrec_Pair_LS_%s", fMCSignals.at(i).GetName()), ";m_{ee};p_{T,ee}", fNmeeBins, fMeeBins.data(), fNpteeBins, fPteeBins.data()); th3_tmp->Sumw2(); th3_tmp->SetDirectory(0x0); @@ -1019,7 +1015,7 @@ struct AnalysisSameEventPairing { Double_t masse = 0.00051099895; // 0.5 MeV/c2 -> 0.0005 GeV/c2 for (auto& [t1, t2] : combinations(soa::CombinationsStrictlyUpperIndexPolicy(groupedMCTracks, groupedMCTracks))) { - //for (auto& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks)) { + // for (auto& [t1, t2] : combinations(groupedMCTracks, groupedMCTracks)) { if ((abs(t1.pdgCode()) != 11) || (abs(t2.pdgCode()) != 11)) continue; @@ -1046,13 +1042,13 @@ struct AnalysisSameEventPairing { // not smeared after fiducial cuts if (genfidcut) { - if(!fConfigFillLS) dynamic_cast(fHistGenPair.at(isig))->Fill(mass, pairpt); + if (!fConfigFillLS) + dynamic_cast(fHistGenPair.at(isig))->Fill(mass, pairpt); else { - if(t1.pdgCode() * t2.pdgCode() < 0) { - dynamic_cast(fHistGenPair.at(isig*2))->Fill(mass, pairpt); - } - else { - dynamic_cast(fHistGenPair.at(isig*2+1))->Fill(mass, pairpt); + if (t1.pdgCode() * t2.pdgCode() < 0) { + dynamic_cast(fHistGenPair.at(isig * 2))->Fill(mass, pairpt); + } else { + dynamic_cast(fHistGenPair.at(isig * 2 + 1))->Fill(mass, pairpt); } } } @@ -1075,7 +1071,7 @@ struct AnalysisSameEventPairing { // dileptonList.reserve(1); for (auto& [t1, t2] : combinations(soa::CombinationsStrictlyUpperIndexPolicy(tracks, tracks))) { - //for (auto& [t1, t2] : combinations(tracks, tracks)) { + // for (auto& [t1, t2] : combinations(tracks, tracks)) { twoTrackFilter = uint32_t(t1.isBarrelSelected()) & uint32_t(t2.isBarrelSelected()); @@ -1083,15 +1079,18 @@ struct AnalysisSameEventPairing { continue; } - if(t1.sign()*t2.sign() > 0) uls = kFALSE; - else uls = kTRUE; + if (t1.sign() * t2.sign() > 0) + uls = kFALSE; + else + uls = kTRUE; - if(!fConfigFillLS && !uls) continue; + if (!fConfigFillLS && !uls) + continue; - // Fiducial cut in case they are not done in the reconstructed cuts + // Fiducial cut in case they are not done in the reconstructed cuts Bool_t recfidcut = kTRUE; - if ((t1.eta() > fConfigMaxEta) || (t2.eta() > fConfigMaxEta) || (t1.eta() < fConfigMinEta) || (t2.eta() < fConfigMinEta) || (t1.pt() > fConfigMaxPt) || (t2.pt() > fConfigMaxPt) || (t1.pt() < fConfigMinPt) || (t2.pt() < fConfigMinPt)) recfidcut = kFALSE; - + if ((t1.eta() > fConfigMaxEta) || (t2.eta() > fConfigMaxEta) || (t1.eta() < fConfigMinEta) || (t2.eta() < fConfigMinEta) || (t1.pt() > fConfigMaxPt) || (t2.pt() > fConfigMaxPt) || (t1.pt() < fConfigMinPt) || (t2.pt() < fConfigMinPt)) + recfidcut = kFALSE; // VarManager::FillPair(t1, t2); @@ -1117,25 +1116,23 @@ struct AnalysisSameEventPairing { if (!(mcDecision & (uint32_t(1) << i))) { continue; } - if(recfidcut) { + if (recfidcut) { for (unsigned int j = 0; j < fTrackCuts.size(); j++) { if (twoTrackFilter & (uint8_t(1) << j)) { - if(!fConfigFillLS) { + if (!fConfigFillLS) { dynamic_cast(fHistRecPair.at(j * fMCSignals.size() + i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); - } - else { - if(uls) { - dynamic_cast(fHistRecPair.at(j * (2*fMCSignals.size()) + 2*i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); - } - else { - dynamic_cast(fHistRecPair.at(j * (2*fMCSignals.size()) + 2*i + 1))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + } else { + if (uls) { + dynamic_cast(fHistRecPair.at(j * (2 * fMCSignals.size()) + 2 * i))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); + } else { + dynamic_cast(fHistRecPair.at(j * (2 * fMCSignals.size()) + 2 * i + 1))->Fill(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt]); } } } } } - if(fConfigRecWithMC) { + if (fConfigRecWithMC) { Double_t mass = -1000.; Double_t pairpt = 1000.; // Fiducial cut in case they are not done in the reconstructed cuts @@ -1144,25 +1141,24 @@ struct AnalysisSameEventPairing { auto mctrack1 = t1.reducedMCTrack(); auto mctrack2 = t2.reducedMCTrack(); TLorentzVector Lvec2, Lvec1; - Lvec1.SetPtEtaPhiM(mctrack1.pt(),mctrack1.eta(),mctrack1.phi(),masse); - Lvec2.SetPtEtaPhiM(mctrack2.pt(),mctrack2.eta(),mctrack2.phi(),masse); + Lvec1.SetPtEtaPhiM(mctrack1.pt(), mctrack1.eta(), mctrack1.phi(), masse); + Lvec2.SetPtEtaPhiM(mctrack2.pt(), mctrack2.eta(), mctrack2.phi(), masse); TLorentzVector LvecM = Lvec1 + Lvec2; mass = LvecM.M(); pairpt = LvecM.Pt(); - if ((mctrack1.eta() > fConfigMaxEta) || (mctrack2.eta() > fConfigMaxEta) || (mctrack1.eta() < fConfigMinEta) || (mctrack2.eta() < fConfigMinEta) || (mctrack1.pt() > fConfigMaxPt) || (mctrack2.pt() > fConfigMaxPt) || (mctrack1.pt() < fConfigMinPt) || (mctrack2.pt() < fConfigMinPt)) genfidcut = kFALSE; + if ((mctrack1.eta() > fConfigMaxEta) || (mctrack2.eta() > fConfigMaxEta) || (mctrack1.eta() < fConfigMinEta) || (mctrack2.eta() < fConfigMinEta) || (mctrack1.pt() > fConfigMaxPt) || (mctrack2.pt() > fConfigMaxPt) || (mctrack1.pt() < fConfigMinPt) || (mctrack2.pt() < fConfigMinPt)) + genfidcut = kFALSE; } - if(genfidcut) { + if (genfidcut) { for (unsigned int j = 0; j < fTrackCuts.size(); j++) { if (twoTrackFilter & (uint8_t(1) << j)) { - if(!fConfigFillLS) { - dynamic_cast(fHistRecPairMC.at(j * fMCSignals.size() + i))->Fill(mass,pairpt); - } - else { - if(uls) { - dynamic_cast(fHistRecPairMC.at(j * (2*fMCSignals.size()) + 2*i))->Fill(mass,pairpt); - } - else { - dynamic_cast(fHistRecPairMC.at(j * (2*fMCSignals.size()) + 2*i + 1))->Fill(mass,pairpt); + if (!fConfigFillLS) { + dynamic_cast(fHistRecPairMC.at(j * fMCSignals.size() + i))->Fill(mass, pairpt); + } else { + if (uls) { + dynamic_cast(fHistRecPairMC.at(j * (2 * fMCSignals.size()) + 2 * i))->Fill(mass, pairpt); + } else { + dynamic_cast(fHistRecPairMC.at(j * (2 * fMCSignals.size()) + 2 * i + 1))->Fill(mass, pairpt); } } }