Hello,
I am testing out my ntuple-production code and I observed
a strange row in one of my ntuples:
************************************************************
* Row * GnchgBrec * GnchgBsl * GnneuBrec * GnneuBsl *
************************************************************
* 0 * 6 * 1 * 1 * 2 *
* 1 * 6 * 1 * 1 * 1 *
* 2 * 5 * 0 * 2 * 0 *
* 3 * 3 * 0 * 0 * 4 *
* 4 * 3 * 0 * 4 * 0 *
* 5 * 5 * 2 * 1 * 2 *
* 6 * 4 * 2 * 2 * 0 *
* 7 * 2 * 1 * 2 * 2 *
* 8 * 3 * 2 * 2 * 4 *
* 9 * 3 * 0 * 6 * 0 *
* 10 * 5 * 1 * 2 * 0 *
************************************************************
The variables are:
GnchgBreco = (int)(RecoilMCUtil::getmatchesReco()).first;
GnchgBsl = (int)(RecoilMCUtil::getmatchesRecoil()).first;
GnneuBreco = (int)(RecoilMCUtil::getmatchesReco()).second;
GnneuBsl = (int)(RecoilMCUtil::getmatchesRecoil()).second;
The problem is in Row 8. Here's why.
>From reading the code, I figured out that RecoilMCUtil
chooses the getRecoCandidate() and getRecoilCandidate()
as follows:
Given a Breco (non-MC), follow the path:
Breco -> dauB -> dauBMC -> BTru
for each dauB, where:
dauB = the stable (ie, final-state) particles
that come from Breco
dauBMC = the MCTruth partner of dauB (from BtaMcAssoc)
BTru = the parent of dauBMC (from theMother(), with a check to
make sure it has a B-meson pdtEntry)
This (should) give zero, one or two BTru candidates.
getRecoCandidate() = the BTru with the most Bdau matches.
getRecoilCandidate() = the other BTru
(If all the dauB are matched to one B, the other B is
obtained from the MC list. If no dauB
match a B meson, both B's are taken from the MC list.)
Therefore, by construction, I should always have:
GnchgBreco + GnneuBreco > GnchgBsl + GnneuBsl
But in event 8, there are 6 (trk+neu) matched
to Bsl, and only 5 to Breco.
How is this possible?
Thanks,
sheila
|