-
Notifications
You must be signed in to change notification settings - Fork 685
[PWGJE] added pvalue configurable, added safeguard for invalid EP values #18034
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -121,6 +121,7 @@ struct JetSpectraEseTask { | |
|
|
||
| Configurable<bool> cfgrhoPhi{"cfgrhoPhi", true, "Flag for rho(phi)"}; | ||
| Configurable<bool> cfgRhoPhiPvalCriteria{"cfgRhoPhiPvalCriteria", true, "Use <rho> instead of rho(phi) when the rho(phi) fit p-value is below 0.01"}; | ||
| Configurable<float> cfgRhoPhiPvalCut{"cfgRhoPhiPvalCut", 0.01, "p-value cut for rho(phi) fit"}; | ||
|
|
||
| Configurable<int> cfgnTotalSystem{"cfgnTotalSystem", 7, "total qvector number // look in Qvector table for this number"}; | ||
| Configurable<int> cfgnCorrLevel{"cfgnCorrLevel", 3, "QVector step: 0 = no corr, 1 = rect, 2 = twist, 3 = full"}; | ||
|
|
@@ -225,6 +226,7 @@ struct JetSpectraEseTask { | |
| struct EventPlane { | ||
| float psi2; | ||
| float psi3; | ||
| bool isValid; | ||
| }; | ||
|
|
||
| struct EventPlaneFiller { | ||
|
|
@@ -237,6 +239,7 @@ struct JetSpectraEseTask { | |
| kEventSel, | ||
| kOccupancyCut, | ||
| kCentCut, | ||
| kEPValid, | ||
| kEse, | ||
| kRhoLocal, | ||
| kLeadJetCut | ||
|
|
@@ -382,6 +385,7 @@ struct JetSpectraEseTask { | |
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kEventSel, "Event selection"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kOccupancyCut, "Occupancy cut"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kCentCut, "Centrality cut"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kEPValid, "EP valid"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kEse, "ESE available"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kRhoLocal, "rho(#phi) available"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounter"))->GetXaxis()->SetBinLabel(kLeadJetCut, "leading jet pT cut"); | ||
|
|
@@ -454,6 +458,7 @@ struct JetSpectraEseTask { | |
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kEventSel, "Event selection"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kOccupancyCut, "Occupancy cut"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kCentCut, "Centrality cut"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kEPValid, "EP valid"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kEse, "ESE available"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kRhoLocal, "rho(#phi) available"); | ||
| registry.get<TH1>(HIST("eventQA/hEventCounterMixed"))->GetXaxis()->SetBinLabel(kLeadJetCut, "leading jet pT cut"); | ||
|
|
@@ -697,6 +702,10 @@ struct JetSpectraEseTask { | |
| registry.fill(HIST("eventQA/hEventCounter"), kCentCut); | ||
|
|
||
| const auto psi{procEP<PsiFillerEse>(collision)}; | ||
| if (!psi.isValid) { | ||
| return; | ||
| } | ||
| registry.fill(HIST("eventQA/hEventCounter"), kEPValid); | ||
| const auto qPerc{collision.qPERCFT0C()}; | ||
| if (qPerc[0] < 0) { | ||
| return; | ||
|
|
@@ -853,6 +862,10 @@ struct JetSpectraEseTask { | |
| registry.fill(HIST("eventQA/hEventCounterMixed"), kCentCut); | ||
|
|
||
| const auto psi{procEP<PsiFillerFalse>(c1)}; | ||
| if (!psi.isValid) { | ||
| continue; | ||
| } | ||
| registry.fill(HIST("eventQA/hEventCounterMixed"), kEPValid); | ||
| const auto qPerc{c1.qPERCFT0C()}; | ||
| if (qPerc[0] < 0) { | ||
| continue; | ||
|
|
@@ -1002,6 +1015,9 @@ struct JetSpectraEseTask { | |
| } | ||
|
|
||
| [[maybe_unused]] const auto psi{procEP<PsiFillerEP>(collision)}; | ||
| if (!psi.isValid) { | ||
| return; | ||
| } | ||
| detCorrelation(collision); | ||
| auto originalCollision = | ||
| collision.collision_as<OgCol>(); | ||
|
|
@@ -1024,6 +1040,9 @@ struct JetSpectraEseTask { | |
| float count{0.5}; | ||
| registry.fill(HIST("hEventCounterOcc"), count++); | ||
| const auto psi{procEP<PsiFillerFalse>(collision)}; | ||
| if (!psi.isValid) { | ||
| return; | ||
| } | ||
| const auto qPerc{collision.qPERCFT0C()}; | ||
|
|
||
| auto occupancy{collision.trackOccupancyInTimeRange()}; | ||
|
|
@@ -1400,7 +1419,9 @@ struct JetSpectraEseTask { | |
| fillEPCos(vec, epCorrContainer22, epCorrContainer24, epCorrContainer44); | ||
| } | ||
| } | ||
| return {.psi2 = epMap.at(cfgEPRefA), .psi3 = ep3Map.at(cfgEPRefA)}; | ||
| // check A is valid | ||
| bool isValidA{epMap.at(cfgEPRefA) != InvalidValue}; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is it intended here that you dont check if ep3Map is invalid or not?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If its invalid then it's because of the amplitude which is used for both Psi2 and Psi3, so I thought it should be sufficient to check Psi2! |
||
| return {.psi2 = epMap.at(cfgEPRefA), .psi3 = ep3Map.at(cfgEPRefA), .isValid = isValidA}; | ||
| } | ||
| template <typename collision> | ||
| void fillEPCos(const collision& col, const std::array<float, 3>& Corr22, const std::array<float, 3>& Corr42, const std::array<float, 3>& Corr44) | ||
|
|
@@ -1611,8 +1632,8 @@ struct JetSpectraEseTask { | |
| if constexpr (fillHist) { | ||
| registry.fill(HIST("eventQA/hRhoPhiCheck"), 0.5); | ||
| } | ||
| const float pValue = 0.01; | ||
| if (cfgRhoPhiPvalCriteria && cDF < pValue) { | ||
|
|
||
| if (cfgRhoPhiPvalCriteria && cDF < cfgRhoPhiPvalCut) { | ||
| const float noFlow = 0.0f; | ||
| modulationFit->SetParameter(1, noFlow); // o2-linter: disable=magic-number (fit params) | ||
| modulationFit->SetParameter(3, noFlow); // o2-linter: disable=magic-number (fit params) | ||
|
|
@@ -1701,6 +1722,9 @@ struct JetSpectraEseTask { | |
| } | ||
|
|
||
| const auto psi{procEP<PsiFillerEse>(collision)}; | ||
| if (!psi.isValid) { | ||
| return; | ||
| } | ||
| auto qPerc{collision.qPERCFT0C()}; | ||
| if (qPerc[0] < 0) { | ||
| return; | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should registry.fill(HIST("eventQA/hEventCounterMixed"), kEPValid) be filled before this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, thanks - I'll add that now