Skip to content
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

Kinematic fit over constrained in fitted pi0 channels? #733

Open
acschick opened this issue May 15, 2023 · 6 comments
Open

Kinematic fit over constrained in fitted pi0 channels? #733

acschick opened this issue May 15, 2023 · 6 comments

Comments

@acschick
Copy link

acschick commented May 15, 2023

I'm looking at events from the gp->pi0(p) and gp->pi0 pi0 (p) reaction filters from the 2017 run period. The ROOT trees I'm running over are located at
/cache/halld/RunPeriod-2017-01/analysis/ver62/tree_pi0missprot__B2/
and
/cache/halld/RunPeriod-2017-01/analysis/ver62/tree_pi0pi0missprot__B2/

My intuition tells me that the kin fit momenta of the two photons summed together should match the DecayingPi0 kin fit momentum--instead I see a large discrepancy. This occurs in both the single pi0 and double pi0 channels.

Screenshot 2023-05-12 at 3 17 09 PM

Screen Shot 2023-05-15 at 2 28 42 PM

Apologies for non-consistent color scheme--the plots came from two different students.

Is this a bug? I'm just using the auto-generated DSelector code to pull out the momentum vectors and histogram them.
Example DSelector here: /work/halld/home/shong/channels/pi0missprot/BasicRunScripts/DSelector_pi0missprot.C

e.g. for top plot
RED:
TLorentzVector locPhoton1P4 = dPhoton1Wrapper->Get_P4();
TLorentzVector locPhoton2P4 = dPhoton2Wrapper->Get_P4();
double W2Photon = (locPhoton1P4 + locPhoton2P4).Mag();

BLUE:
TLorentzVector locDecayingPi0P4 = dDecayingPi0Wrapper->Get_P4();
double WDecayingPi0 = (locDecayingPi0P4).Mag()

BLACK:
TLorentzVector locPhoton1P4_Measured = dPhoton1Wrapper->Get_P4_Measured();
TLorentzVector locPhoton2P4_Measured = dPhoton2Wrapper->Get_P4_Measured();
double W2Photon_meas = (locPhoton1P4_Measured + locPhoton2P4_Measured).Mag();

With regards to the issue in the double pi0 channel maybe being caused by a user error in pairing the photons, here is the auto generated DSelector code which I think is pretty suggestive as to which photons has which pi0 as a parent particle:

DoublePi0_PhotonPairing

@zihlmann
Copy link
Contributor

zihlmann commented Jun 14, 2023

Using Andrews code and running over 10 files then look at the two histogram
DecayingPi0_W and 2Photon_W do not compute because the DecayingPi0_W
is the mass constraint Pi0, hence a delta function, while the 2Photon_W is a distribution
which should not be because it is made from the two photons from the kin fit.
this second plot should also be a delta function.

the code snippet:
double locW2Photon = locPhoton1P4 + locPhoton2P4;
is what is going into the second plot and should be a delta function but it is not?????

Note that there is NO cut on unused energy so all events with at least 2 photons will contribute.

decayingPI0

2gamma_invMass_KinFIT

@jonzarling
Copy link
Contributor

Definitely looks wonky. Maybe the interplay between mass constrained pi0 and missing proton is some edge case we haven't encountered before? Like maybe it forgets that a missing proton can still be mass constrained, and this somehow leaks into the calculation of gamma1 and gamma2. Maybe checking the hd_root.root folders with kinfit info or some sanity checks calculating the same quantity different ways will turn something up....

@zihlmann
Copy link
Contributor

zihlmann commented Jun 15, 2023

The missing Mass looks like the plot below requiring events with exactly 2 reconstructed photons. the red histograms
is after cutting 2 sigma around the pi0 invariant mass.
missing_mass_with_andwithoutcut

the invariant mass of the pi0 looks like this:
pi0_invMass

@zihlmann
Copy link
Contributor

Yes, indeed, I also think that the code somehow does not contrain the pi0 mass the same way as usual when there is a missing proton involved. In the plot below the red histogram represents the measured values while the blue the kinfit values. there are only small changes best seen at the "edges".
pi0invmass_kinfit_measuredinred

@sdobbs
Copy link
Contributor

sdobbs commented Jun 15, 2023

I'll see if I have some time to look into this in the near future, but let me suggest you redo the fits with the "F1" option, which only imposes the 4-momentum constraints, and removes the vertex constraint from the fit - since there's no charged particle in the final state, there's no possible measurement of the vertex position, so that could be confounding the fit.

As a note, for the gp -> pi0 (p) fit, this should then be a 2C fit - one constraint for the pi0 mass in pi0 -> gg, and 1 constraint for the missing mass in the reaction being consistent with that of the proton. If the F1 fits still show a problem, the next step would be to look at these constraints and make sure they are not beating against each other in some strange way.

@jrstevenjlab
Copy link
Contributor

One more thing to consider as a general analysis strategy: using a mass constraint on the pi0s in these channels means you will not be able to evaluate the non-pi0 background. So unless there is no non-pi0 background or you have some other way of estimating it, I would suggest you also consider the F1 and M7 fit options together to have 1 constraint on the missing mass being consistent with the proton, but allowing you to study the non-pi0 background.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants