-
Notifications
You must be signed in to change notification settings - Fork 526
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
[PWGJE] Implementation of Hadronic Correction task #9084
base: master
Are you sure you want to change the base?
Conversation
[PWGJE] Please consider the following formatting changes to AliceO2Group#9084
Hi Archita, thanks for the PR. Just to understand, this would mean that for jet finding the corrected cluster energy would be used instead of the standard cluster energy? otherwise it is all the same? |
Hi Nima. yes, that's right. The jet finder needs to use the corrected energy values (we have 4 corrected energy columns- depends on what the analyser wants). everything else remains the same. |
BTW Nima, I think the more efficient way to achieve this would be somehow to set up 4 different jet-finders for each corrected energy value such that the user can use whichever jet finder they want corresponding to the desired corrected energy. |
This would be good if the user needs to run all 4 jet finders at the same time for some reason. If they would instead each only be needed independently then i would make it a configurable in the jet finder to select which is used but only have it happen once. Let me know which is best |
using namespace o2::framework; | ||
using namespace o2::framework::expressions; | ||
using collisionEvSelIt = o2::soa::Join<o2::aod::Collisions, o2::aod::EvSels>::iterator; | ||
using selectedClusters = o2::soa::Filtered<o2::aod::EMCALClusters>; |
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.
one thing i would recommend here is not performing this on filtered clusters, otherwise this table would not be joinable with the original cluster table, unless exactly the same filters are used everywhere.
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.
Done
Okay, you are right. Since each would be needed independently by the user, it makes more sense to define a configurable in the jet finder instead. |
// c) If you want to do systematic studies -> perform the above two checks a) and b), and then subtract 70% energy instead of 100% | ||
|
||
// Perform dEta/dPhi matching | ||
double dEta = match.track_as<myTracks>().eta() - cluster.eta(); |
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.
this should use eta on the emcal surface instead of eta at vertex
|
||
// Perform dEta/dPhi matching | ||
double dEta = match.track_as<myTracks>().eta() - cluster.eta(); | ||
double dPhi = TVector2::Phi_mpi_pi(match.track_as<myTracks>().phi() - cluster.phi()); |
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.
likewise this should use phi propagated to emcal surface and not at vertex
auto trackPhiLow = -funcPtDepPhi.Eval(mom); | ||
|
||
if ((dPhi < trackPhiHigh && dPhi > trackPhiLow) && fabs(dEta) < trackEtaMax) { | ||
if (Nmatches == 0) { |
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.
while the list is indeed sorted to contain the closest track first, for safety reasons I would explicitly check that it is the closest of the ones you looped over
EclusterAll1 = subtractClusterEnergy(EclusterAll1, totalTrkP, fHadCorralltrks1, Nmatches, UseFraction1); | ||
} | ||
|
||
if (UseM02SubtractionScheme2) { |
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.
what is the M02 subtraction scheme and what is the difference bewteen one and two?
registry.fill(HIST("h2_ClsEvsEclusterAll2"), cluster.energy(), EclusterAll2); | ||
|
||
// Fill the table with all four corrected energies | ||
hadroniccorrectedclusters(Ecluster1, Ecluster2, EclusterAll1, EclusterAll2); |
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.
how does one match this table to the cluster table? What is the index? collision id?
registry.add("h_matchedtracks", "Total matched tracks; track status;entries", {HistType::kTH1F, {{1, 0.5, 1.5}}}); | ||
} | ||
|
||
Filter clusterDefinitionSelection = (o2::aod::emcalcluster::definition == mClusterDefinition) && (o2::aod::emcalcluster::time >= minTime) && (o2::aod::emcalcluster::time <= maxTime) && (o2::aod::emcalcluster::m02 > minM02) && (o2::aod::emcalcluster::m02 < maxM02); |
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.
Why are we doing any cluster cuts here? I think then the resulting table will no longer be joinable to the existing cluster table. I think this task should simply provide the values for all clusters. Cluster selection should then be done in the full jet finder
// For M02 in the single photon region, the signal is primarily: Single photons, single electrons, single MIPs | ||
if (m02 > 0.1 && m02 < 0.4) { //circular clusters(electron/photon) | ||
Ecorr = Ecluster; // Single electron, single MIP | ||
} else if (m02 > 0.4) { |
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.
Normally (I think) if M02 is bigger than 0.4 and the number of matches is >1, there should be nothing subtracted. Could you explain why you changed the logic from the function we had in Run2?
[PWGJE] Please consider the following formatting changes to AliceO2Group#9084
Hadronic Correction in the EMCAL framework is implemented to avoid the double counting of the charged particles' contribution in jets.