3030#include < Framework/InitContext.h>
3131#include < Framework/runDataProcessing.h>
3232
33+ #include < TString.h>
34+
3335#include < chrono>
3436#include < cmath>
3537#include < cstddef>
@@ -104,13 +106,13 @@ struct DqJPsiMuonCorrelations {
104106 // Connect to ccdb
105107 Service<ccdb::BasicCCDBManager> ccdb{};
106108 Configurable<int64_t > ccdbNoLaterThan{" ccdbNoLaterThan" , std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now ().time_since_epoch ()).count (), " latest acceptable timestamp of creation for the object" };
107- Configurable<std::string> ccdbUrl{" ccdbUrl" , " http://ccdb-test .cern.ch:8080 " , " url of the ccdb repository" };
109+ Configurable<std::string> ccdbUrl{" ccdbUrl" , " http://alice-ccdb .cern.ch" , " url of the ccdb repository" };
108110
109111 // Define the filter for events
110112 Filter eventFilter = aod::dqanalysisflags::isEventSelected == 1 ;
111113
112114 // Define the filter for the dileptons
113- Filter dileptonFilter = aod::reducedpair::sign == 0 ;
115+ Filter dileptonFilter = ( aod::reducedpair::pt > fConfigDileptonPtMin && aod::reducedpair::pt < fConfigDileptonPtMax ) && (aod::reducedpair::eta > fConfigDileptonEtaMin && aod::reducedpair::eta < fConfigDileptonEtaMax ) ;
114116
115117 constexpr static uint32_t FgDimuonsFillMap = VarManager::ObjTypes::ReducedMuon | VarManager::ObjTypes::Pair; // fill map
116118
@@ -139,14 +141,16 @@ struct DqJPsiMuonCorrelations {
139141
140142 // Define trigger histograms
141143 ConfigurableAxis axisTriggerMass{" axisTriggerMass" , {VARIABLE_WIDTH , fConfigBackgroundLowMass , fConfigDileptonLowMass , fConfigDileptonHighMass , fConfigBackgroundHighMass }, " Invariant Mass (GeV/c^{2}) for trigger counting" };
142- registry.add (" h2dDimuonPtInvVsInvMass" , " h2dDimuonPtInvVsInvMass" , kTH2D , {axisInvMass, axisPt});
143- registry.add (" h2dTriggersPtInvVsInvMassRegion" , " h2dTriggersPtInvVsInvMassRegion" , kTH2D , {axisTriggerMass, axisPt});
144-
145- // Define histograms for the dilepton-muon correlations
146- registry.add (" h2dDimuonMuonDeltaEtaVsMuonPtSignal" , " h2dDimuonMuonDeltaEtaVsMuonPtSignal" , kTH2D , {axisDeltaEta, axisPt});
147- registry.add (" h2dDimuonMuonDeltaPhiVsMuonPtSignal" , " h2dDimuonMuonDeltaPhiVsMuonPtSignal" , kTH2D , {axisDeltaPhi, axisPt});
148- registry.add (" h2dDimuonMuonDeltaEtaVsMuonPtBackground" , " h2dDimuonMuonDeltaEtaVsMuonPtBackground" , kTH2D , {axisDeltaEta, axisPt});
149- registry.add (" h2dDimuonMuonDeltaPhiVsMuonPtBackground" , " h2dDimuonMuonDeltaPhiVsMuonPtBackground" , kTH2D , {axisDeltaPhi, axisPt});
144+ for (const auto & signDilepton : {" dileptonOS" , " dileptonSS" }) {
145+ registry.add (Form (" %s/h2dDimuonPtInvVsInvMass" , signDilepton), " h2dDimuonPtInvVsInvMass" , kTH2D , {axisInvMass, axisPt});
146+ registry.add (Form (" %s/h2dTriggersPtInvVsInvMassRegion" , signDilepton), " h2dTriggersPtInvVsInvMassRegion" , kTH2D , {axisTriggerMass, axisPt});
147+
148+ // Define histograms for the dilepton-muon correlations
149+ registry.add (Form (" %s/h2dDimuonMuonDeltaEtaVsMuonPtSignal" , signDilepton), " h2dDimuonMuonDeltaEtaVsMuonPtSignal" , kTH2D , {axisDeltaEta, axisPt});
150+ registry.add (Form (" %s/h2dDimuonMuonDeltaPhiVsMuonPtSignal" , signDilepton), " h2dDimuonMuonDeltaPhiVsMuonPtSignal" , kTH2D , {axisDeltaPhi, axisPt});
151+ registry.add (Form (" %s/h2dDimuonMuonDeltaEtaVsMuonPtBackground" , signDilepton), " h2dDimuonMuonDeltaEtaVsMuonPtBackground" , kTH2D , {axisDeltaEta, axisPt});
152+ registry.add (Form (" %s/h2dDimuonMuonDeltaPhiVsMuonPtBackground" , signDilepton), " h2dDimuonMuonDeltaPhiVsMuonPtBackground" , kTH2D , {axisDeltaPhi, axisPt});
153+ }
150154
151155 // QA histograms
152156 registry.add (" hEventPosZMuon" , " hEventPosZMuon" , kTH1D , {{50 , -25 , 25 }});
@@ -174,11 +178,6 @@ struct DqJPsiMuonCorrelations {
174178 for (const auto & dilepton : dileptons) {
175179 VarManager::FillTrack<FgDimuonsFillMap>(dilepton, fValuesDilepton .data ());
176180
177- // Dilepton kinematic cuts
178- if ((dilepton.eta () < fConfigDileptonEtaMin || dilepton.eta () > fConfigDileptonEtaMax ) ||
179- (dilepton.pt () < fConfigDileptonPtMin || dilepton.pt () > fConfigDileptonPtMax )) {
180- continue ;
181- }
182181 // Dilepton leg kinematic cuts
183182 if ((dilepton.eta1 () < fConfigMuonEtaMin || dilepton.eta1 () > fConfigMuonEtaMax ) ||
184183 (dilepton.pt1 () < axisPt.value [1 ] || dilepton.pt1 () > axisPt.value .back ()) ||
@@ -190,8 +189,13 @@ struct DqJPsiMuonCorrelations {
190189 // Fill invariant mass vs pT histogram for the dileptons and for trigger counting
191190 double weightDilepton = getWeight (dilepton.pt (), axisPt.value , fConfigBinEffJPsi .value , fConfigDileptonEtaMin , fConfigDileptonEtaMax );
192191
193- registry.fill (HIST (" h2dDimuonPtInvVsInvMass" ), dilepton.mass (), dilepton.pt (), weightDilepton);
194- registry.fill (HIST (" h2dTriggersPtInvVsInvMassRegion" ), dilepton.mass (), dilepton.pt (), weightDilepton);
192+ if (dilepton.sign () == 0 ) {
193+ registry.fill (HIST (" dileptonOS/h2dDimuonPtInvVsInvMass" ), dilepton.mass (), dilepton.pt (), weightDilepton);
194+ registry.fill (HIST (" dileptonOS/h2dTriggersPtInvVsInvMassRegion" ), dilepton.mass (), dilepton.pt (), weightDilepton);
195+ } else {
196+ registry.fill (HIST (" dileptonSS/h2dDimuonPtInvVsInvMass" ), dilepton.mass (), dilepton.pt (), weightDilepton);
197+ registry.fill (HIST (" dileptonSS/h2dTriggersPtInvVsInvMassRegion" ), dilepton.mass (), dilepton.pt (), weightDilepton);
198+ }
195199
196200 for (const auto & assoc : assocs) {
197201 // Check selection bit
@@ -221,11 +225,21 @@ struct DqJPsiMuonCorrelations {
221225 double weightMuon = getWeight (track.pt (), axisPt.value , fConfigBinEffMuon .value , fConfigMuonEtaMin , fConfigMuonEtaMax );
222226
223227 if (dilepton.mass () > fConfigDileptonLowMass && dilepton.mass () < fConfigDileptonHighMass ) {
224- registry.fill (HIST (" h2dDimuonMuonDeltaEtaVsMuonPtSignal" ), deltaEta, track.pt (), weightDilepton * weightMuon);
225- registry.fill (HIST (" h2dDimuonMuonDeltaPhiVsMuonPtSignal" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
228+ if (dilepton.sign () == 0 ) {
229+ registry.fill (HIST (" dileptonOS/h2dDimuonMuonDeltaEtaVsMuonPtSignal" ), deltaEta, track.pt (), weightDilepton * weightMuon);
230+ registry.fill (HIST (" dileptonOS/h2dDimuonMuonDeltaPhiVsMuonPtSignal" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
231+ } else {
232+ registry.fill (HIST (" dileptonSS/h2dDimuonMuonDeltaEtaVsMuonPtSignal" ), deltaEta, track.pt (), weightDilepton * weightMuon);
233+ registry.fill (HIST (" dileptonSS/h2dDimuonMuonDeltaPhiVsMuonPtSignal" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
234+ }
226235 } else if (dilepton.mass () > fConfigBackgroundLowMass && dilepton.mass () < fConfigBackgroundHighMass ) {
227- registry.fill (HIST (" h2dDimuonMuonDeltaEtaVsMuonPtBackground" ), deltaEta, track.pt (), weightDilepton * weightMuon);
228- registry.fill (HIST (" h2dDimuonMuonDeltaPhiVsMuonPtBackground" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
236+ if (dilepton.sign () == 0 ) {
237+ registry.fill (HIST (" dileptonOS/h2dDimuonMuonDeltaEtaVsMuonPtBackground" ), deltaEta, track.pt (), weightDilepton * weightMuon);
238+ registry.fill (HIST (" dileptonOS/h2dDimuonMuonDeltaPhiVsMuonPtBackground" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
239+ } else {
240+ registry.fill (HIST (" dileptonSS/h2dDimuonMuonDeltaEtaVsMuonPtBackground" ), deltaEta, track.pt (), weightDilepton * weightMuon);
241+ registry.fill (HIST (" dileptonSS/h2dDimuonMuonDeltaPhiVsMuonPtBackground" ), deltaPhi, track.pt (), weightDilepton * weightMuon);
242+ }
229243 }
230244 }
231245 }
0 commit comments