Skip to content

Commit 9f4042b

Browse files
authored
[PWGEM/Dilepton] improve CCDB access in smearing.cxx (#16205)
1 parent b937f97 commit 9f4042b

1 file changed

Lines changed: 29 additions & 11 deletions

File tree

PWGEM/Dilepton/Tasks/smearing.cxx

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,30 @@ struct ApplySmearing {
129129
MomentumSmearer smearer_StandaloneMuon;
130130
MomentumSmearer smearer_GlobalMuon;
131131
Service<ccdb::BasicCCDBManager> ccdb;
132+
int mRunNumber{0};
132133

133134
void init(InitContext&)
135+
{
136+
mRunNumber = 0;
137+
if (fTimestamp < 0) {
138+
LOG(fatal) << "Don't use time stamp = -1";
139+
}
140+
if (doprocessCocktail) {
141+
initResolutionMap(fTimestamp);
142+
}
143+
}
144+
145+
template <typename TBC>
146+
void initCCDB(TBC const& bc)
147+
{
148+
if (mRunNumber == bc.runNumber()) {
149+
return;
150+
}
151+
initResolutionMap(bc.timestamp());
152+
mRunNumber = bc.runNumber();
153+
}
154+
155+
void initResolutionMap(const int64_t timestamp)
134156
{
135157
smearer_Electron.setNDSmearing(electron_filenames.fConfigNDSmearing.value);
136158
smearer_Electron.setResFileName(TString(electron_filenames.fConfigResFileName));
@@ -180,19 +202,19 @@ struct ApplySmearing {
180202
smearer_Electron.setCcdbPathRes(TString(electron_filenames.fConfigCcdbPathRes));
181203
smearer_Electron.setCcdbPathEff(TString(electron_filenames.fConfigCcdbPathEff));
182204
smearer_Electron.setCcdbPathDCA(TString(electron_filenames.fConfigCcdbPathDCA));
183-
smearer_Electron.setTimestamp(fTimestamp);
205+
smearer_Electron.setTimestamp(timestamp);
184206
smearer_Electron.setCcdb(ccdb);
185207

186208
smearer_StandaloneMuon.setCcdbPathRes(TString(sa_muon_filenames.fConfigCcdbPathRes));
187209
smearer_StandaloneMuon.setCcdbPathEff(TString(sa_muon_filenames.fConfigCcdbPathEff));
188210
smearer_StandaloneMuon.setCcdbPathDCA(TString(sa_muon_filenames.fConfigCcdbPathDCA));
189-
smearer_StandaloneMuon.setTimestamp(fTimestamp);
211+
smearer_StandaloneMuon.setTimestamp(timestamp);
190212
smearer_StandaloneMuon.setCcdb(ccdb);
191213

192214
smearer_GlobalMuon.setCcdbPathRes(TString(gl_muon_filenames.fConfigCcdbPathRes));
193215
smearer_GlobalMuon.setCcdbPathEff(TString(gl_muon_filenames.fConfigCcdbPathEff));
194216
smearer_GlobalMuon.setCcdbPathDCA(TString(gl_muon_filenames.fConfigCcdbPathDCA));
195-
smearer_GlobalMuon.setTimestamp(fTimestamp);
217+
smearer_GlobalMuon.setTimestamp(timestamp);
196218
smearer_GlobalMuon.setCcdb(ccdb);
197219
}
198220
smearer_Electron.init();
@@ -203,7 +225,7 @@ struct ApplySmearing {
203225
template <o2::aod::pwgem::dilepton::smearing::EMAnaType type, typename TTracksMC, typename TCollisions, typename TMCCollisions>
204226
void applySmearing(TTracksMC const& tracksMC, TCollisions const& collisions, TMCCollisions const&)
205227
{
206-
for (auto& mctrack : tracksMC) {
228+
for (const auto& mctrack : tracksMC) {
207229
float ptgen = mctrack.pt();
208230
float etagen = mctrack.eta();
209231
float phigen = mctrack.phi();
@@ -269,14 +291,10 @@ struct ApplySmearing {
269291

270292
void processMCanalysisEM(aod::EMMCParticles const& tracksMC, MyCollisions const& collisions, MyMCCollisions const& mccollisions)
271293
{
294+
initCCDB(collisions.iteratorAt(0));
272295
applySmearing<o2::aod::pwgem::dilepton::smearing::EMAnaType::kEfficiency>(tracksMC, collisions, mccollisions);
273296
}
274297

275-
// void processMCanalysisDQ(ReducedMCTracks const& tracksMC)
276-
// {
277-
// applySmearing<EMAnaType::kEfficiency>(tracksMC);
278-
// }
279-
280298
void processCocktail(aod::McParticles const& tracksMC)
281299
{
282300
applySmearing<o2::aod::pwgem::dilepton::smearing::EMAnaType::kCocktail>(tracksMC, nullptr, nullptr);
@@ -285,7 +303,7 @@ struct ApplySmearing {
285303
void processDummyCocktail(aod::McParticles const& tracksMC)
286304
{
287305
// don't apply smearing
288-
for (auto& mctrack : tracksMC) {
306+
for (const auto& mctrack : tracksMC) {
289307
int pdgCode = mctrack.pdgCode();
290308
if (std::abs(pdgCode) == 11) {
291309
smearedelectron(mctrack.pt(), mctrack.eta(), mctrack.phi(), 1.0, 0.0);
@@ -356,7 +374,7 @@ struct CheckSmearing {
356374
template <o2::aod::pwgem::dilepton::smearing::EMAnaType type, typename TTracksMC, typename TMCCollisions>
357375
void Check(TTracksMC const& tracksMC, TMCCollisions const&)
358376
{
359-
for (auto& mctrack : tracksMC) {
377+
for (const auto& mctrack : tracksMC) {
360378
if (std::abs(mctrack.pdgCode()) != fPdgCode) {
361379
continue;
362380
}

0 commit comments

Comments
 (0)