@@ -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