|
22 | 22 | #include "PWGCF/FemtoUniverse/Core/femtoUtils.h" |
23 | 23 | #include "PWGCF/FemtoUniverse/DataModel/FemtoDerived.h" |
24 | 24 |
|
| 25 | +#include "CCDB/BasicCCDBManager.h" |
25 | 26 | #include "Framework/ASoAHelpers.h" |
26 | 27 | #include "Framework/AnalysisTask.h" |
27 | 28 | #include "Framework/HistogramRegistry.h" |
@@ -109,6 +110,7 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
109 | 110 |
|
110 | 111 | // Efficiency |
111 | 112 | Configurable<std::string> confLocalEfficiency{"confLocalEfficiency", "", "Local path to efficiency .root file"}; |
| 113 | + Configurable<std::string> confCCDBEfficiency{"confCCDBEfficiency", "", "CCDB path to efficiency object"}; |
112 | 114 |
|
113 | 115 | Filter collisionFilter = (nabs(aod::collision::posZ) < confZVertexCut); |
114 | 116 | using FilteredFDCollisions = soa::Filtered<o2::aod::FdCollisions>; |
@@ -159,8 +161,10 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
159 | 161 | std::set<int> cascDuplicates; |
160 | 162 |
|
161 | 163 | std::unique_ptr<TFile> plocalEffFile; |
162 | | - std::unique_ptr<TH1> plocalEffp1; |
163 | | - std::unique_ptr<TH1> plocalEffp2; |
| 164 | + std::unique_ptr<TH1> pEffHistp1; |
| 165 | + std::unique_ptr<TH1> pEffHistp2; |
| 166 | + |
| 167 | + Service<o2::ccdb::BasicCCDBManager> ccdb; |
164 | 168 |
|
165 | 169 | // Table to select cascade daughters |
166 | 170 | // Charges: = +--, +--, +-+, +-+ |
@@ -330,14 +334,30 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
330 | 334 | if (!plocalEffFile || plocalEffFile.get()->IsZombie()) |
331 | 335 | LOGF(fatal, "Could not load efficiency histogram from %s", confLocalEfficiency.value.c_str()); |
332 | 336 | if (doprocessSameEvent || doprocessSameEventBitmask || doprocessMixedEvent || doprocessMixedEventBitmask) { |
333 | | - plocalEffp1 = (confChargePart1 > 0) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("PrPlus")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("PrMinus")); // note: works only for protons for now |
334 | | - plocalEffp2 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
| 337 | + pEffHistp1 = (confChargePart1 > 0) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("PrPlus")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("PrMinus")); // note: works only for protons for now |
| 338 | + pEffHistp2 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
335 | 339 | LOGF(info, "Loaded efficiency histograms for track-Cascade."); |
336 | 340 | } else if (doprocessSameEventCasc || doprocessSameEventCascBitmask || doprocessMixedEventCasc || doprocessMixedEventCascBitmask) { |
337 | | - plocalEffp1 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
338 | | - plocalEffp2 = (confCascType2 == 0 || confCascType2 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
| 341 | + pEffHistp1 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
| 342 | + pEffHistp2 = (confCascType2 == 0 || confCascType2 == 1) ? std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("Cascade")) : std::unique_ptr<TH1>(plocalEffFile.get()->Get<TH1>("AntiCascade")); |
339 | 343 | LOGF(info, "Loaded efficiency histograms for Cascade-Cascade."); |
340 | 344 | } |
| 345 | + } else if (!confCCDBEfficiency.value.empty()) { |
| 346 | + ccdb->setURL("http://alice-ccdb.cern.ch"); |
| 347 | + ccdb->setCaching(true); |
| 348 | + ccdb->setLocalObjectValidityChecking(); |
| 349 | + |
| 350 | + auto now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); |
| 351 | + ccdb->setCreatedNotAfter(now); |
| 352 | + if (doprocessSameEvent || doprocessSameEventBitmask || doprocessMixedEvent || doprocessMixedEventBitmask) { |
| 353 | + pEffHistp1 = (confChargePart1 > 0) ? std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/PrPlus", now)) : std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/PrMinus", now)); // note: works only for protons for now |
| 354 | + pEffHistp2 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/Cascade", now)) : std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/AntiCascade", now)); |
| 355 | + LOGF(info, "Loaded efficiency histograms for track-Cascade from CCDB"); |
| 356 | + } else if (doprocessSameEventCasc || doprocessSameEventCascBitmask || doprocessMixedEventCasc || doprocessMixedEventCascBitmask) { |
| 357 | + pEffHistp1 = (confCascType1 == 0 || confCascType1 == 1) ? std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/Cascade", now)) : std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/AntiCascade", now)); |
| 358 | + pEffHistp2 = (confCascType2 == 0 || confCascType2 == 1) ? std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/Cascade", now)) : std::unique_ptr<TH1>(ccdb->getForTimeStamp<TH1>(confCCDBEfficiency.value + "/AntiCascade", now)); |
| 359 | + LOGF(info, "Loaded efficiency histograms for Cascade-Cascade from CCDB."); |
| 360 | + } |
341 | 361 | } |
342 | 362 | } |
343 | 363 |
|
@@ -505,8 +525,8 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
505 | 525 | } |
506 | 526 | } |
507 | 527 | float weight = 1.0f; |
508 | | - if (plocalEffp1) |
509 | | - weight = plocalEffp1.get()->GetBinContent(plocalEffp1->FindBin(p1.pt(), p1.eta())) * plocalEffp2.get()->GetBinContent(plocalEffp2->FindBin(p2.pt(), p2.eta())); |
| 528 | + if (pEffHistp1) |
| 529 | + weight = pEffHistp1.get()->GetBinContent(pEffHistp1->FindBin(p1.pt(), p1.eta())) * pEffHistp2.get()->GetBinContent(pEffHistp2->FindBin(p2.pt(), p2.eta())); |
510 | 530 | sameEventCont.setPair<false>(p1, p2, multCol, confUse3D, weight); |
511 | 531 | } |
512 | 532 | } |
@@ -657,8 +677,8 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
657 | 677 | } |
658 | 678 |
|
659 | 679 | float weight = 1.0f; |
660 | | - if (plocalEffp1) |
661 | | - weight = plocalEffp1.get()->GetBinContent(plocalEffp1->FindBin(p1.pt(), p1.eta())) * plocalEffp2.get()->GetBinContent(plocalEffp2->FindBin(p2.pt(), p2.eta())); |
| 680 | + if (pEffHistp1) |
| 681 | + weight = pEffHistp1.get()->GetBinContent(pEffHistp1->FindBin(p1.pt(), p1.eta())) * pEffHistp2.get()->GetBinContent(pEffHistp2->FindBin(p2.pt(), p2.eta())); |
662 | 682 | sameEventCont.setPair<false>(p1, p2, multCol, confUse3D, weight); |
663 | 683 | return true; |
664 | 684 | }; |
@@ -750,8 +770,8 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
750 | 770 | } |
751 | 771 |
|
752 | 772 | float weight = 1.0f; |
753 | | - if (plocalEffp1) |
754 | | - weight = plocalEffp1.get()->GetBinContent(plocalEffp1->FindBin(p1.pt(), p1.eta())) * plocalEffp2.get()->GetBinContent(plocalEffp2->FindBin(p2.pt(), p2.eta())); |
| 773 | + if (pEffHistp1) |
| 774 | + weight = pEffHistp1.get()->GetBinContent(pEffHistp1->FindBin(p1.pt(), p1.eta())) * pEffHistp2.get()->GetBinContent(pEffHistp2->FindBin(p2.pt(), p2.eta())); |
755 | 775 | mixedEventCont.setPair<false>(p1, p2, multCol, confUse3D, weight); |
756 | 776 | } |
757 | 777 | }; |
@@ -859,8 +879,8 @@ struct femtoUniversePairTaskTrackCascadeExtended { |
859 | 879 | } |
860 | 880 |
|
861 | 881 | float weight = 1.0f; |
862 | | - if (plocalEffp1) |
863 | | - weight = plocalEffp1.get()->GetBinContent(plocalEffp1->FindBin(p1.pt(), p1.eta())) * plocalEffp2.get()->GetBinContent(plocalEffp2->FindBin(p2.pt(), p2.eta())); |
| 882 | + if (pEffHistp1) |
| 883 | + weight = pEffHistp1.get()->GetBinContent(pEffHistp1->FindBin(p1.pt(), p1.eta())) * pEffHistp2.get()->GetBinContent(pEffHistp2->FindBin(p2.pt(), p2.eta())); |
864 | 884 | mixedEventCont.setPair<false>(p1, p2, multCol, confUse3D, weight); |
865 | 885 | } |
866 | 886 | } |
|
0 commit comments