Skip to content

Commit 23a853b

Browse files
committed
Tune MC TPC PID to data
1 parent 69dff00 commit 23a853b

5 files changed

Lines changed: 307 additions & 20 deletions

File tree

PWGDQ/Core/VarManager.cxx

Lines changed: 115 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include <Math/Vector4D.h> // IWYU pragma: keep (do not replace with Math/Vector4Dfwd.h)
2525
#include <Math/Vector4Dfwd.h>
26+
#include <TH2.h>
2627
#include <TH3.h>
2728
#include <THn.h>
2829
#include <TObject.h>
@@ -72,7 +73,7 @@ o2::vertexing::FwdDCAFitterN<3> VarManager::fgFitterThreeProngFwd;
7273
o2::globaltracking::MatchGlobalFwd VarManager::mMatching;
7374
std::map<VarManager::CalibObjects, TObject*> VarManager::fgCalibs;
7475
bool VarManager::fgRunTPCPostCalibration[4] = {false, false, false, false};
75-
int VarManager::fgCalibrationType = 0; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb
76+
int VarManager::fgCalibrationType = 0; // 0 - no calibration, 1 - data calibration vs (TPCncls,pIN,eta), 2 - data calibration vs (eta,nPV,nLong,tLong), 3 - MC tuning vs (pIN,eta), 4 - MC tuning vs (pIN,eta,CentFT0C)
7677
bool VarManager::fgUseInterpolatedCalibration = true; // use interpolated calibration histograms (default: true)
7778

7879
//__________________________________________________________________
@@ -373,6 +374,119 @@ double VarManager::ComputePIDcalibration(int species, double nSigmaValue)
373374
return nSigmaValue; // unknown status, return the original nSigma value
374375
break;
375376
}
377+
} else if (fgCalibrationType == 3) {
378+
CalibObjects calibMeanSim, calibSigmaSim, calibMeanData, calibSigmaData;
379+
switch (species) {
380+
case 0:
381+
calibMeanSim = kTPCElectronMean;
382+
calibSigmaSim = kTPCElectronSigma;
383+
calibMeanData = kTPCElectronMeanData;
384+
calibSigmaData = kTPCElectronSigmaData;
385+
break;
386+
case 1:
387+
calibMeanSim = kTPCPionMean;
388+
calibSigmaSim = kTPCPionSigma;
389+
calibMeanData = kTPCPionMeanData;
390+
calibSigmaData = kTPCPionSigmaData;
391+
break;
392+
case 2:
393+
calibMeanSim = kTPCKaonMean;
394+
calibSigmaSim = kTPCKaonSigma;
395+
calibMeanData = kTPCKaonMeanData;
396+
calibSigmaData = kTPCKaonSigmaData;
397+
break;
398+
case 3:
399+
calibMeanSim = kTPCProtonMean;
400+
calibSigmaSim = kTPCProtonSigma;
401+
calibMeanData = kTPCProtonMeanData;
402+
calibSigmaData = kTPCProtonSigmaData;
403+
break;
404+
default:
405+
LOG(fatal) << "Invalid species for PID calibration: " << species;
406+
return -999.0;
407+
}
408+
409+
TH2* calibMeanSimHist = reinterpret_cast<TH2*>(fgCalibs[calibMeanSim]);
410+
TH2* calibSigmaSimHist = reinterpret_cast<TH2*>(fgCalibs[calibSigmaSim]);
411+
TH2* calibMeanDataHist = reinterpret_cast<TH2*>(fgCalibs[calibMeanData]);
412+
TH2* calibSigmaDataHist = reinterpret_cast<TH2*>(fgCalibs[calibSigmaData]);
413+
if (!calibMeanSimHist || !calibSigmaSimHist || !calibMeanDataHist || !calibSigmaDataHist) {
414+
LOG(fatal) << "MC tuning histograms not found for species: " << species;
415+
return -999.0;
416+
}
417+
418+
int binPin = calibMeanSimHist->GetXaxis()->FindBin(fgValues[kPin]);
419+
binPin = (binPin == 0 ? 1 : binPin);
420+
binPin = (binPin > calibMeanSimHist->GetXaxis()->GetNbins() ? calibMeanSimHist->GetXaxis()->GetNbins() : binPin);
421+
int binEta = calibMeanSimHist->GetYaxis()->FindBin(fgValues[kEta]);
422+
binEta = (binEta == 0 ? 1 : binEta);
423+
binEta = (binEta > calibMeanSimHist->GetYaxis()->GetNbins() ? calibMeanSimHist->GetYaxis()->GetNbins() : binEta);
424+
425+
double meanSim = calibMeanSimHist->GetBinContent(binPin, binEta);
426+
double sigmaSim = calibSigmaSimHist->GetBinContent(binPin, binEta);
427+
double meanData = calibMeanDataHist->GetBinContent(binPin, binEta);
428+
double sigmaData = calibSigmaDataHist->GetBinContent(binPin, binEta);
429+
return (nSigmaValue - meanSim) * (sigmaSim / sigmaData) + meanData;
430+
} else if (fgCalibrationType == 4) {
431+
CalibObjects calibMeanSim, calibSigmaSim, calibMeanData, calibSigmaData;
432+
switch (species) {
433+
case 0:
434+
calibMeanSim = kTPCElectronMean;
435+
calibSigmaSim = kTPCElectronSigma;
436+
calibMeanData = kTPCElectronMeanData;
437+
calibSigmaData = kTPCElectronSigmaData;
438+
break;
439+
case 1:
440+
calibMeanSim = kTPCPionMean;
441+
calibSigmaSim = kTPCPionSigma;
442+
calibMeanData = kTPCPionMeanData;
443+
calibSigmaData = kTPCPionSigmaData;
444+
break;
445+
case 2:
446+
calibMeanSim = kTPCKaonMean;
447+
calibSigmaSim = kTPCKaonSigma;
448+
calibMeanData = kTPCKaonMeanData;
449+
calibSigmaData = kTPCKaonSigmaData;
450+
break;
451+
case 3:
452+
calibMeanSim = kTPCProtonMean;
453+
calibSigmaSim = kTPCProtonSigma;
454+
calibMeanData = kTPCProtonMeanData;
455+
calibSigmaData = kTPCProtonSigmaData;
456+
break;
457+
default:
458+
LOG(fatal) << "Invalid species for PID calibration: " << species;
459+
return -999.0;
460+
}
461+
462+
TH3F* calibMeanSimHist = reinterpret_cast<TH3F*>(fgCalibs[calibMeanSim]);
463+
TH3F* calibSigmaSimHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigmaSim]);
464+
TH3F* calibMeanDataHist = reinterpret_cast<TH3F*>(fgCalibs[calibMeanData]);
465+
TH3F* calibSigmaDataHist = reinterpret_cast<TH3F*>(fgCalibs[calibSigmaData]);
466+
if (!calibMeanSimHist || !calibSigmaSimHist || !calibMeanDataHist || !calibSigmaDataHist) {
467+
LOG(fatal) << "MC tuning histograms not found for species: " << species;
468+
return -999.0;
469+
}
470+
if (fgValues[kCentFT0C] < -999.) {
471+
LOG(fatal) << "TPC MC tuning calibration type 4 requires event centrality in VarManager::fgValues[kCentFT0C].";
472+
return -999.0;
473+
}
474+
475+
int binPin = calibMeanSimHist->GetXaxis()->FindBin(fgValues[kPin]);
476+
binPin = (binPin == 0 ? 1 : binPin);
477+
binPin = (binPin > calibMeanSimHist->GetXaxis()->GetNbins() ? calibMeanSimHist->GetXaxis()->GetNbins() : binPin);
478+
int binEta = calibMeanSimHist->GetYaxis()->FindBin(fgValues[kEta]);
479+
binEta = (binEta == 0 ? 1 : binEta);
480+
binEta = (binEta > calibMeanSimHist->GetYaxis()->GetNbins() ? calibMeanSimHist->GetYaxis()->GetNbins() : binEta);
481+
int binCent = calibMeanSimHist->GetZaxis()->FindBin(fgValues[kCentFT0C]);
482+
binCent = (binCent == 0 ? 1 : binCent);
483+
binCent = (binCent > calibMeanSimHist->GetZaxis()->GetNbins() ? calibMeanSimHist->GetZaxis()->GetNbins() : binCent);
484+
485+
double meanSim = calibMeanSimHist->GetBinContent(binPin, binEta, binCent);
486+
double sigmaSim = calibSigmaSimHist->GetBinContent(binPin, binEta, binCent);
487+
double meanData = calibMeanDataHist->GetBinContent(binPin, binEta, binCent);
488+
double sigmaData = calibSigmaDataHist->GetBinContent(binPin, binEta, binCent);
489+
return (nSigmaValue - meanSim) * (sigmaSim / sigmaData) + meanData;
376490
} else {
377491
// unknown calibration type, return the original nSigma value
378492
LOG(fatal) << "Unknown calibration type: " << fgCalibrationType;

PWGDQ/Core/VarManager.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,15 +1101,23 @@ class VarManager : public TObject
11011101
kTPCElectronMean = 0,
11021102
kTPCElectronSigma,
11031103
kTPCElectronStatus,
1104+
kTPCElectronMeanData,
1105+
kTPCElectronSigmaData,
11041106
kTPCPionMean,
11051107
kTPCPionSigma,
11061108
kTPCPionStatus,
1109+
kTPCPionMeanData,
1110+
kTPCPionSigmaData,
11071111
kTPCKaonMean,
11081112
kTPCKaonSigma,
11091113
kTPCKaonStatus,
1114+
kTPCKaonMeanData,
1115+
kTPCKaonSigmaData,
11101116
kTPCProtonMean,
11111117
kTPCProtonSigma,
11121118
kTPCProtonStatus,
1119+
kTPCProtonMeanData,
1120+
kTPCProtonSigmaData,
11131121
kNCalibObjects
11141122
};
11151123

@@ -1456,8 +1464,8 @@ class VarManager : public TObject
14561464

14571465
static void SetCalibrationType(int type, bool useInterpolation = true)
14581466
{
1459-
if (type < 0 || type > 2) {
1460-
LOG(fatal) << "Invalid calibration type. Must be 0, 1, or 2.";
1467+
if (type < 0 || type > 4) {
1468+
LOG(fatal) << "Invalid calibration type. Must be between 0 and 4.";
14611469
}
14621470
fgCalibrationType = type;
14631471
fgUseInterpolatedCalibration = useInterpolation;
@@ -1544,7 +1552,7 @@ class VarManager : public TObject
15441552

15451553
static std::map<CalibObjects, TObject*> fgCalibs; // map of calibration histograms
15461554
static bool fgRunTPCPostCalibration[4]; // 0-electron, 1-pion, 2-kaon, 3-proton
1547-
static int fgCalibrationType; // 0 - no calibration, 1 - calibration vs (TPCncls,pIN,eta) typically for pp, 2 - calibration vs (eta,nPV,nLong,tLong) typically for PbPb
1555+
static int fgCalibrationType; // 0 - no calibration, 1 - data calibration vs (TPCncls,pIN,eta), 2 - data calibration vs (eta,nPV,nLong,tLong), 3 - MC tuning vs (pIN,eta), 4 - MC tuning vs (pIN,eta,CentFT0C)
15481556
static bool fgUseInterpolatedCalibration; // use interpolated calibration histograms (default: true)
15491557

15501558
VarManager& operator=(const VarManager& c);

PWGDQ/Tasks/dqEfficiency.cxx

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@
3535
#include <Framework/runDataProcessing.h>
3636

3737
#include <THashList.h>
38+
#include <TList.h>
3839
#include <TMath.h>
3940
#include <TString.h>
4041

4142
#include <RtypesCore.h>
4243

44+
#include <chrono>
4345
#include <cstdint>
4446
#include <cstdio>
4547
#include <memory>
@@ -173,12 +175,60 @@ struct AnalysisTrackSelection {
173175
Configurable<std::string> fConfigCuts{"cfgTrackCuts", "jpsiPID1", "Comma separated list of barrel track cuts"};
174176
Configurable<std::string> fConfigMCSignals{"cfgTrackMCSignals", "", "Comma separated list of MC signals"};
175177
Configurable<bool> fConfigQA{"cfgQA", false, "If true, fill QA histograms"};
178+
Configurable<std::string> fConfigCcdbUrl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
179+
Configurable<std::string> fConfigCcdbPathTPC{"ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", "base path to the ccdb object"};
180+
Configurable<int64_t> fConfigNoLaterThan{"ccdb-no-later-than", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"};
181+
Configurable<bool> fConfigComputeTPCpostCalib{"cfgTPCpostCalib", false, "If true, apply TPC PID correction maps for MC-to-data tuning"};
182+
Configurable<int> fConfigTPCpostCalibType{"cfgTPCpostCalibType", 1, "1: (pIN,eta) calibration typically for pp, 2: (pIN,eta,CentFT0C) calibration typically for PbPb"};
176183

184+
Service<o2::ccdb::BasicCCDBManager> fCCDB;
177185
HistogramManager* fHistMan;
178186
std::vector<AnalysisCompositeCut> fTrackCuts;
179187
std::vector<MCSignal> fMCSignals; // list of signals to be checked
180188
std::vector<TString> fHistNamesReco;
181189
std::vector<std::vector<TString>> fHistNamesMCMatched;
190+
int fCurrentRun = 0;
191+
192+
int getMCTuningCalibrationType() const
193+
{
194+
switch (fConfigTPCpostCalibType.value) {
195+
case 1:
196+
return 3;
197+
case 2:
198+
return 4;
199+
default:
200+
LOGF(fatal, "Invalid cfgTPCpostCalibType=%d for dqEfficiency. Supported values are 1:(pIN,eta) and 2:(pIN,eta,CentFT0C).", fConfigTPCpostCalibType.value);
201+
return 3;
202+
}
203+
}
204+
205+
void setTPCPostCalibObject(TList* calibList, VarManager::CalibObjects calib, const char* objectName)
206+
{
207+
if (!calibList) {
208+
LOGF(fatal, "TPC post-calibration list not found at CCDB path %s.", fConfigCcdbPathTPC.value.c_str());
209+
}
210+
auto* obj = calibList->FindObject(objectName);
211+
if (!obj) {
212+
LOGF(fatal, "TPC post-calibration object '%s' not found at CCDB path %s.", objectName, fConfigCcdbPathTPC.value.c_str());
213+
}
214+
VarManager::SetCalibrationObject(calib, obj);
215+
}
216+
217+
void loadTPCPostCalibObjects(TList* calibList)
218+
{
219+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronMean, "mean_map_electron");
220+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronSigma, "sigma_map_electron");
221+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronMeanData, "mean_map_electron_data");
222+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronSigmaData, "sigma_map_electron_data");
223+
setTPCPostCalibObject(calibList, VarManager::kTPCPionMean, "mean_map_pion");
224+
setTPCPostCalibObject(calibList, VarManager::kTPCPionSigma, "sigma_map_pion");
225+
setTPCPostCalibObject(calibList, VarManager::kTPCPionMeanData, "mean_map_pion_data");
226+
setTPCPostCalibObject(calibList, VarManager::kTPCPionSigmaData, "sigma_map_pion_data");
227+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonMean, "mean_map_proton");
228+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonSigma, "sigma_map_proton");
229+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonMeanData, "mean_map_proton_data");
230+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonSigmaData, "sigma_map_proton_data");
231+
}
182232

183233
void init(o2::framework::InitContext& context)
184234
{
@@ -236,11 +286,25 @@ struct AnalysisTrackSelection {
236286
VarManager::SetUseVars(fHistMan->GetUsedVars()); // provide the list of required variables so that VarManager knows what to fill
237287
fOutputList.setObject(fHistMan->GetMainHistogramList());
238288
}
289+
290+
if (fConfigComputeTPCpostCalib) {
291+
fCCDB->setURL(fConfigCcdbUrl.value);
292+
fCCDB->setCaching(true);
293+
fCCDB->setLocalObjectValidityChecking();
294+
fCCDB->setCreatedNotAfter(fConfigNoLaterThan.value);
295+
}
239296
}
240297

241298
template <uint32_t TEventFillMap, uint32_t TEventMCFillMap, uint32_t TTrackFillMap, uint32_t TTrackMCFillMap, typename TEvent, typename TTracks, typename TEventsMC, typename TTracksMC>
242299
void runSelection(TEvent const& event, TTracks const& tracks, TEventsMC const& /*eventsMC*/, TTracksMC const& /*tracksMC*/)
243300
{
301+
if (fConfigComputeTPCpostCalib && fCurrentRun != event.runNumber()) {
302+
auto calibList = fCCDB->getForTimeStamp<TList>(fConfigCcdbPathTPC.value, event.timestamp());
303+
loadTPCPostCalibObjects(calibList);
304+
VarManager::SetCalibrationType(getMCTuningCalibrationType());
305+
fCurrentRun = event.runNumber();
306+
}
307+
244308
VarManager::ResetValues(0, VarManager::kNMCParticleVariables);
245309
// fill event information which might be needed in histograms that combine track and event properties
246310
VarManager::FillEvent<TEventFillMap>(event);

PWGDQ/Tasks/dqEfficiency_withAssoc.cxx

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,8 @@ struct AnalysisTrackSelection {
536536
Configurable<std::string> fConfigCcdbUrl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
537537
Configurable<std::string> fConfigCcdbPathTPC{"ccdb-path-tpc", "Users/z/zhxiong/TPCPID/PostCalib", "base path to the ccdb object"};
538538
Configurable<int64_t> fConfigNoLaterThan{"ccdb-no-later-than", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"};
539-
Configurable<bool> fConfigComputeTPCpostCalib{"cfgTPCpostCalib", false, "If true, compute TPC post-calibrated n-sigmas"};
539+
Configurable<bool> fConfigComputeTPCpostCalib{"cfgTPCpostCalib", false, "If true, apply TPC PID correction maps for MC-to-data tuning"};
540+
Configurable<int> fConfigTPCpostCalibType{"cfgTPCpostCalibType", 1, "1: (pIN,eta) calibration typically for pp, 2: (pIN,eta,CentFT0C) calibration typically for PbPb"};
540541
Configurable<std::string> grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"};
541542

542543
Configurable<std::string> fConfigMCSignals{"cfgTrackMCSignals", "", "Comma separated list of MC signals"};
@@ -555,6 +556,47 @@ struct AnalysisTrackSelection {
555556
std::map<int64_t, std::vector<int64_t>> fNAssocsInBunch; // key: track global index, value: vector of global index for events associated in-bunch (events that have in-bunch pileup or splitting)
556557
std::map<int64_t, std::vector<int64_t>> fNAssocsOutOfBunch; // key: track global index, value: vector of global index for events associated out-of-bunch (events that have no in-bunch pileup)
557558

559+
int getMCTuningCalibrationType() const
560+
{
561+
switch (fConfigTPCpostCalibType.value) {
562+
case 1:
563+
return 3;
564+
case 2:
565+
return 4;
566+
default:
567+
LOGF(fatal, "Invalid cfgTPCpostCalibType=%d for dqEfficiency_withAssoc. Supported values are 1:(pIN,eta) and 2:(pIN,eta,CentFT0C).", fConfigTPCpostCalibType.value);
568+
return 3;
569+
}
570+
}
571+
572+
void setTPCPostCalibObject(TList* calibList, VarManager::CalibObjects calib, const char* objectName)
573+
{
574+
if (!calibList) {
575+
LOGF(fatal, "TPC post-calibration list not found at CCDB path %s.", fConfigCcdbPathTPC.value.c_str());
576+
}
577+
auto* obj = calibList->FindObject(objectName);
578+
if (!obj) {
579+
LOGF(fatal, "TPC post-calibration object '%s' not found at CCDB path %s.", objectName, fConfigCcdbPathTPC.value.c_str());
580+
}
581+
VarManager::SetCalibrationObject(calib, obj);
582+
}
583+
584+
void loadTPCPostCalibObjects(TList* calibList)
585+
{
586+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronMean, "mean_map_electron");
587+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronSigma, "sigma_map_electron");
588+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronMeanData, "mean_map_electron_data");
589+
setTPCPostCalibObject(calibList, VarManager::kTPCElectronSigmaData, "sigma_map_electron_data");
590+
setTPCPostCalibObject(calibList, VarManager::kTPCPionMean, "mean_map_pion");
591+
setTPCPostCalibObject(calibList, VarManager::kTPCPionSigma, "sigma_map_pion");
592+
setTPCPostCalibObject(calibList, VarManager::kTPCPionMeanData, "mean_map_pion_data");
593+
setTPCPostCalibObject(calibList, VarManager::kTPCPionSigmaData, "sigma_map_pion_data");
594+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonMean, "mean_map_proton");
595+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonSigma, "sigma_map_proton");
596+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonMeanData, "mean_map_proton_data");
597+
setTPCPostCalibObject(calibList, VarManager::kTPCProtonSigmaData, "sigma_map_proton_data");
598+
}
599+
558600
void init(o2::framework::InitContext& context)
559601
{
560602
if (context.mOptions.get<bool>("processDummy")) {
@@ -649,16 +691,11 @@ struct AnalysisTrackSelection {
649691
fNAssocsInBunch.clear();
650692
fNAssocsOutOfBunch.clear();
651693

652-
// TODO: Check if postcalibration needed for MC
653694
if (events.size() > 0 && fCurrentRun != events.begin().runNumber()) {
654695
if (fConfigComputeTPCpostCalib) {
655696
auto calibList = fCCDB->getForTimeStamp<TList>(fConfigCcdbPathTPC.value, events.begin().timestamp());
656-
VarManager::SetCalibrationObject(VarManager::kTPCElectronMean, calibList->FindObject("mean_map_electron"));
657-
VarManager::SetCalibrationObject(VarManager::kTPCElectronSigma, calibList->FindObject("sigma_map_electron"));
658-
VarManager::SetCalibrationObject(VarManager::kTPCPionMean, calibList->FindObject("mean_map_pion"));
659-
VarManager::SetCalibrationObject(VarManager::kTPCPionSigma, calibList->FindObject("sigma_map_pion"));
660-
VarManager::SetCalibrationObject(VarManager::kTPCProtonMean, calibList->FindObject("mean_map_proton"));
661-
VarManager::SetCalibrationObject(VarManager::kTPCProtonSigma, calibList->FindObject("sigma_map_proton"));
697+
loadTPCPostCalibObjects(calibList);
698+
VarManager::SetCalibrationType(getMCTuningCalibrationType());
662699
}
663700

664701
o2::parameters::GRPMagField* grpmag = fCCDB->getForTimeStamp<o2::parameters::GRPMagField>(grpmagPath, events.begin().timestamp());
@@ -2236,6 +2273,10 @@ struct AnalysisSameEventPairing {
22362273
continue;
22372274
}
22382275

2276+
VarManager::ResetValues(0, VarManager::kNVars);
2277+
VarManager::FillEvent<gkEventFillMap>(event, VarManager::fgValues);
2278+
VarManager::FillEvent<VarManager::ObjTypes::ReducedEventMC>(event.reducedMCevent(), VarManager::fgValues);
2279+
22392280
FinalStateMcParticleIndices.clear();
22402281

22412282
auto groupedMCTracks = mcTracks.sliceBy(perReducedMcEvent, event.reducedMCeventId());
@@ -2398,6 +2439,7 @@ struct AnalysisSameEventPairing {
23982439
if (!event.has_reducedMCevent()) {
23992440
continue;
24002441
}
2442+
VarManager::ResetValues(0, VarManager::kNVars);
24012443
VarManager::FillEvent<gkEventFillMap>(event, VarManager::fgValues);
24022444
VarManager::FillEvent<VarManager::ObjTypes::ReducedEventMC>(event.reducedMCevent(), VarManager::fgValues);
24032445
// auto groupedMCTracks = mcTracks.sliceBy(perReducedMcGenEvent, event.reducedMCeventId());
@@ -2511,6 +2553,9 @@ struct AnalysisSameEventPairing {
25112553
if (!event.has_reducedMCevent()) {
25122554
continue;
25132555
}
2556+
VarManager::ResetValues(0, VarManager::kNVars);
2557+
VarManager::FillEvent<gkEventFillMap>(event, VarManager::fgValues);
2558+
VarManager::FillEvent<VarManager::ObjTypes::ReducedEventMC>(event.reducedMCevent(), VarManager::fgValues);
25142559

25152560
for (auto& track : mcTracks) {
25162561
if (track.reducedMCeventId() != event.reducedMCeventId()) {

0 commit comments

Comments
 (0)