Skip to content

Commit 40b86b2

Browse files
authored
[PWGJE] modification of IP tagging method (#11003)
1 parent e7060a0 commit 40b86b2

File tree

2 files changed

+202
-57
lines changed

2 files changed

+202
-57
lines changed

PWGJE/TableProducer/jetTaggerHF.cxx

Lines changed: 139 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ struct JetTaggerHFTask {
6464
Configurable<bool> trackProbQA{"trackProbQA", false, "fill track probability histograms separately for geometric positive and negative tracks for QA"};
6565
Configurable<int> numCount{"numCount", 3, "number of track counting"};
6666
Configurable<int> resoFuncMatching{"resoFuncMatching", 0, "matching parameters of resolution function as MC samble (0: custom, 1: custom & inc, 2: MB, 3: MB & inc, 4: JJ, 5: JJ & inc)"};
67-
Configurable<std::vector<std::string>> pathsCCDBforIPparamer{"pathsCCDBforIPparamer", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions for IP method on CCDB"};
67+
Configurable<std::vector<std::string>> pathsCCDBforIPDataparameter{"pathsCCDBforIPDataparameter", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions of data for IP method on CCDB"};
68+
Configurable<std::vector<std::string>> pathsCCDBforIPIncparameter{"pathsCCDBforIPIncparameter", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions of inclusive for IP method on CCDB"};
69+
Configurable<std::vector<std::string>> pathsCCDBforIPBeautyparameter{"pathsCCDBforIPBeautyparameter", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions of beauty for IP method on CCDB"};
70+
Configurable<std::vector<std::string>> pathsCCDBforIPCharmparameter{"pathsCCDBforIPCharmparameter", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions of charm for IP method on CCDB"};
71+
Configurable<std::vector<std::string>> pathsCCDBforIPLfparameter{"pathsCCDBforIPLfparameter", std::vector<std::string>{"Users/l/leehy/LHC24g4/f_inclusive_0"}, "Paths for fitting parameters of resolution functions of light flavour for IP method on CCDB"};
6872
Configurable<bool> usepTcategorize{"usepTcategorize", false, "p_T categorize TF1 function with Inclusive jet"};
6973
Configurable<std::vector<float>> paramsResoFuncData{"paramsResoFuncData", std::vector<float>{-1.0}, "parameters of gaus(0)+expo(3)+expo(5)+expo(7))"};
7074
Configurable<std::vector<float>> paramsResoFuncIncJetMC{"paramsResoFuncIncJetMC", std::vector<float>{-1.0}, "parameters of gaus(0)+expo(3)+expo(5)+expo(7)))"};
@@ -135,8 +139,17 @@ struct JetTaggerHFTask {
135139
std::unique_ptr<TF1> fSignImpXYSigBeautyJetMC = nullptr;
136140
std::unique_ptr<TF1> fSignImpXYSigLfJetMC = nullptr;
137141

142+
std::vector<std::vector<float>> vecParamsDataJetCCDB;
138143
std::vector<std::vector<float>> vecParamsIncJetMcCCDB;
144+
std::vector<std::vector<float>> vecParamsBeautyJetMcCCDB;
145+
std::vector<std::vector<float>> vecParamsCharmJetMcCCDB;
146+
std::vector<std::vector<float>> vecParamsLfJetMcCCDB;
147+
148+
std::vector<std::unique_ptr<TF1>> vecfSignImpXYSigDataJetCCDB;
139149
std::vector<std::unique_ptr<TF1>> vecfSignImpXYSigIncJetMcCCDB;
150+
std::vector<std::unique_ptr<TF1>> vecfSignImpXYSigCharmJetMcCCDB;
151+
std::vector<std::unique_ptr<TF1>> vecfSignImpXYSigBeautyJetMcCCDB;
152+
std::vector<std::unique_ptr<TF1>> vecfSignImpXYSigLfJetMcCCDB;
140153

141154
std::vector<uint16_t> decisionNonML;
142155
std::vector<float> scoreML;
@@ -148,7 +161,11 @@ struct JetTaggerHFTask {
148161
{
149162
float jetProb = -1.0;
150163
if (!isMC) {
151-
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigData, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
164+
if (usepTcategorize) {
165+
jetProb = jettaggingutilities::getJetProbability(vecfSignImpXYSigDataJetCCDB, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
166+
} else {
167+
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigData, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
168+
}
152169
} else {
153170
if (useResoFuncFromIncJet) {
154171
if (usepTcategorize) {
@@ -158,11 +175,23 @@ struct JetTaggerHFTask {
158175
}
159176
} else {
160177
if (origin == JetTaggingSpecies::charm) {
161-
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigCharmJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
178+
if (usepTcategorize) {
179+
jetProb = jettaggingutilities::getJetProbability(vecfSignImpXYSigCharmJetMcCCDB, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
180+
} else {
181+
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigCharmJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
182+
}
162183
} else if (origin == JetTaggingSpecies::beauty) {
163-
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigBeautyJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
184+
if (usepTcategorize) {
185+
jetProb = jettaggingutilities::getJetProbability(vecfSignImpXYSigBeautyJetMcCCDB, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
186+
} else {
187+
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigBeautyJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
188+
}
164189
} else {
165-
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigLfJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
190+
if (usepTcategorize) {
191+
jetProb = jettaggingutilities::getJetProbability(vecfSignImpXYSigLfJetMcCCDB, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
192+
} else {
193+
jetProb = jettaggingutilities::getJetProbability(fSignImpXYSigLfJetMC, jet, tracks, trackDcaXYMax, trackDcaZMax, minSignImpXYSig);
194+
}
166195
}
167196
}
168197
}
@@ -215,12 +244,12 @@ struct JetTaggerHFTask {
215244
}
216245
if (useJetProb) {
217246
if constexpr (isMC) {
218-
jetProb = calculateJetProbability(origin, jet, tracks);
247+
jetProb = calculateJetProbability(origin, jet, tracks, isMC);
219248
if (trackProbQA) {
220249
evaluateTrackProbQA(origin, jet, tracks, isMC);
221250
}
222251
} else {
223-
jetProb = calculateJetProbability(0, jet, tracks);
252+
jetProb = calculateJetProbability(0, jet, tracks, isMC);
224253
if (trackProbQA) {
225254
evaluateTrackProbQA(0, jet, tracks, isMC);
226255
}
@@ -256,21 +285,59 @@ struct JetTaggerHFTask {
256285
std::vector<float> vecParamsCharmJetMC;
257286
std::vector<float> vecParamsBeautyJetMC;
258287
std::vector<float> vecParamsLfJetMC;
259-
std::vector<TF1*> resoFuncCCDB;
288+
289+
std::vector<TF1*> resoFuncDataCCDB;
290+
std::vector<TF1*> resoFuncIncCCDB;
291+
std::vector<TF1*> resoFuncBeautyCCDB;
292+
std::vector<TF1*> resoFuncCharmCCDB;
293+
std::vector<TF1*> resoFuncLfCCDB;
260294

261295
ccdbApi.init(ccdbUrl);
296+
297+
std::map<std::string, std::string> metadata;
298+
resoFuncMatch = resoFuncMatching;
299+
300+
const int IPmethodResolutionFunctionSize = 7;
301+
302+
auto loadCCDBforIP = [&](const std::vector<std::string>& paths, std::vector<TF1*>& targetVec, const std::string& name) {
303+
if (paths.size() != IPmethodResolutionFunctionSize) {
304+
usepTcategorize.value = false;
305+
LOG(info) << name << " does not have 7 entries. Disabling pT categorization (usepTcategorize = false).";
306+
resoFuncMatch = 0;
307+
return;
308+
}
309+
for (int i = 0; i < IPmethodResolutionFunctionSize; i++) {
310+
targetVec.push_back(ccdbApi.retrieveFromTFileAny<TF1>(paths[i], metadata, -1));
311+
}
312+
};
313+
262314
if (usepTcategorize) {
263-
std::map<std::string, std::string> metadata; // dummy meta data (will be updated)
264-
// fill the timestamp directly of each TF1 according to p_T track range (0, 0.5, 1, 2, 4, 6, 9)
265-
for (int i = 0; i < 7; i++) {
266-
resoFuncCCDB.push_back(ccdbApi.retrieveFromTFileAny<TF1>(pathsCCDBforIPparamer->at(i), metadata, -1));
315+
switch (resoFuncMatch) {
316+
case 6:
317+
loadCCDBforIP(pathsCCDBforIPIncparameter, resoFuncIncCCDB, "pathsCCDBforIPIncparameter");
318+
break;
319+
320+
case 7:
321+
loadCCDBforIP(pathsCCDBforIPBeautyparameter, resoFuncBeautyCCDB, "pathsCCDBforIPBeautyparameter");
322+
loadCCDBforIP(pathsCCDBforIPCharmparameter, resoFuncCharmCCDB, "pathsCCDBforIPCharmparameter");
323+
loadCCDBforIP(pathsCCDBforIPLfparameter, resoFuncLfCCDB, "pathsCCDBforIPLfparameter");
324+
break;
325+
326+
case 8:
327+
loadCCDBforIP(pathsCCDBforIPDataparameter, resoFuncDataCCDB, "pathsCCDBforIPDataparameter");
328+
break;
329+
330+
default:
331+
LOG(info) << "resoFuncMatching is neither 6 nor 7, although usepTcategorize is set to true. Resetting resoFuncMatching to 0.";
332+
resoFuncMatch = 0;
333+
break;
267334
}
268335
}
269336

270337
maxOrder = numCount + 1; // 0: untagged, >1 : N ordering
338+
const int IPmethodNumOfParameters = 9;
271339

272340
// Set up the resolution function
273-
resoFuncMatch = resoFuncMatching;
274341
switch (resoFuncMatch) {
275342
case 0:
276343
vecParamsData = (std::vector<float>)paramsResoFuncData;
@@ -313,19 +380,61 @@ struct JetTaggerHFTask {
313380
break;
314381
case 6: // TODO
315382
vecParamsData = (std::vector<float>)paramsResoFuncData;
316-
vecParamsIncJetMC = (std::vector<float>)paramsResoFuncData;
317-
for (size_t j = 0; j < resoFuncCCDB.size(); j++) {
383+
for (size_t j = 0; j < resoFuncIncCCDB.size(); j++) {
318384
std::vector<float> params;
319-
if (resoFuncCCDB[j]) {
320-
for (int i = 0; i < 9; i++) {
321-
params.emplace_back(resoFuncCCDB[j]->GetParameter(i));
385+
if (resoFuncIncCCDB[j]) {
386+
for (int i = 0; i < IPmethodNumOfParameters; i++) {
387+
params.emplace_back(resoFuncIncCCDB[j]->GetParameter(i));
322388
}
323389
}
324390
vecParamsIncJetMcCCDB.emplace_back(params);
325391
}
326392
LOG(info) << "defined parameters of resolution function from CCDB";
327393
useResoFuncFromIncJet = true;
328394
break;
395+
case 7: // TODO
396+
vecParamsData = (std::vector<float>)paramsResoFuncData;
397+
for (size_t j = 0; j < resoFuncBeautyCCDB.size(); j++) {
398+
std::vector<float> params;
399+
if (resoFuncBeautyCCDB[j]) {
400+
for (int i = 0; i < IPmethodNumOfParameters; i++) {
401+
params.emplace_back(resoFuncBeautyCCDB[j]->GetParameter(i));
402+
}
403+
}
404+
vecParamsBeautyJetMcCCDB.emplace_back(params);
405+
}
406+
for (size_t j = 0; j < resoFuncCharmCCDB.size(); j++) {
407+
std::vector<float> params;
408+
if (resoFuncCharmCCDB[j]) {
409+
for (int i = 0; i < IPmethodNumOfParameters; i++) {
410+
params.emplace_back(resoFuncCharmCCDB[j]->GetParameter(i));
411+
}
412+
}
413+
vecParamsCharmJetMcCCDB.emplace_back(params);
414+
}
415+
for (size_t j = 0; j < resoFuncLfCCDB.size(); j++) {
416+
std::vector<float> params;
417+
if (resoFuncLfCCDB[j]) {
418+
for (int i = 0; i < IPmethodNumOfParameters; i++) {
419+
params.emplace_back(resoFuncLfCCDB[j]->GetParameter(i));
420+
}
421+
}
422+
vecParamsLfJetMcCCDB.emplace_back(params);
423+
}
424+
LOG(info) << "defined parameters of resolution function from CCDB for each flavour";
425+
break;
426+
case 8:
427+
for (size_t j = 0; j < resoFuncDataCCDB.size(); j++) {
428+
std::vector<float> params;
429+
if (resoFuncDataCCDB[j]) {
430+
for (int i = 0; i < IPmethodNumOfParameters; i++) {
431+
params.emplace_back(resoFuncDataCCDB[j]->GetParameter(i));
432+
}
433+
}
434+
vecParamsDataJetCCDB.emplace_back(params);
435+
}
436+
LOG(info) << "defined parameters of resolution function from CCDB for data";
437+
break;
329438
default:
330439
LOG(fatal) << "undefined parameters of resolution function. Fix it!";
331440
break;
@@ -337,9 +446,21 @@ struct JetTaggerHFTask {
337446
fSignImpXYSigBeautyJetMC = jettaggingutilities::setResolutionFunction(vecParamsBeautyJetMC);
338447
fSignImpXYSigLfJetMC = jettaggingutilities::setResolutionFunction(vecParamsLfJetMC);
339448

449+
for (const auto& params : vecParamsDataJetCCDB) {
450+
vecfSignImpXYSigDataJetCCDB.emplace_back(jettaggingutilities::setResolutionFunction(params));
451+
}
340452
for (const auto& params : vecParamsIncJetMcCCDB) {
341453
vecfSignImpXYSigIncJetMcCCDB.emplace_back(jettaggingutilities::setResolutionFunction(params));
342454
}
455+
for (const auto& params : vecParamsBeautyJetMcCCDB) {
456+
vecfSignImpXYSigBeautyJetMcCCDB.emplace_back(jettaggingutilities::setResolutionFunction(params));
457+
}
458+
for (const auto& params : vecParamsCharmJetMcCCDB) {
459+
vecfSignImpXYSigCharmJetMcCCDB.emplace_back(jettaggingutilities::setResolutionFunction(params));
460+
}
461+
for (const auto& params : vecParamsLfJetMcCCDB) {
462+
vecfSignImpXYSigLfJetMcCCDB.emplace_back(jettaggingutilities::setResolutionFunction(params));
463+
}
343464

344465
// Use QA for effectivness of track probability
345466
if (trackProbQA) {

0 commit comments

Comments
 (0)