Studies of Electron Charge Identification Inefficiency
Sample
- full statistics of /RelValSingleElectronFlatPt5To100/CMSSW_2_2_7_IDEAL_V12_v1/GEN-SIM-RECO
- 1 Million electron particle gun events, abs(η) < 2.4 , 5 < pT < 100 GeV
- each event contains particle gun particle and its anti-particle with opposite kinematics
Code
// loop over true electrons
for ( unsigned int els = 0;
els < genps_p4().size();
++els ) {
// check that electron is final state electron
if ( genps_status()[els] != 1 ) continue;
// check for true electron
if ( TMath::Abs(genps_id()[els]) != 11 ) continue;
// fill true histrograms
els_pt_sim->Fill(genps_p4()[els].pt());
els_eta_sim->Fill(genps_p4()[els].eta());
}
// loop over reco electrons
for (unsigned int els = 0;
els < els_p4().size();
++els) {
// cuts
//if ( !goodElectronWithoutIsolation(els) ) continue;
if ( !goodElectronIsolated(els) ) continue;
if ( conversionElectron(els) ) continue;
// check how many electrons don't have an associated track
els_trkId->Fill(els_trkidx().at(els));
// filter out all electrons which don't have an associated track
// if ( els_trkidx().at(els) < 0 ) continue;
// filter all electrons that don't agree with the charge of the associated track
if ( (els_trkidx().at(els) >= 0) && (els_charge().at(els) != trks_charge().at(els_trkidx().at(els))) ) continue;
// fill reco
els_pt_reco->Fill(els_p4().at(els).Pt());
els_eta_reco->Fill(els_p4().at(els).eta());
// fill reco_corCharge
if ( (els_charge().at(els) == -1 && els_mc_id().at(els) == 11) || (els_charge().at(els) == 1 && els_mc_id().at(els) == -11) ) {
els_pt_reco_corCharge->Fill(els_p4().at(els).Pt());
els_eta_reco_corCharge->Fill(els_p4().at(els).eta());
}
// exclude reco which has no true electron match
if ( els_mc_id()[els] == -999 ) continue;
// fill recosim
els_pt_recosim->Fill(els_mc_p4().at(els).Pt());
els_eta_recosim->Fill(els_mc_p4().at(els).eta());
// correct charge identified
if ( (els_charge().at(els) == -1 && els_mc_id().at(els) == 11) || (els_charge().at(els) == 1 && els_mc_id().at(els) == -11) ) {
els_pt_recosim_corCharge->Fill(els_mc_p4().at(els).Pt());
els_eta_recosim_corCharge->Fill(els_mc_p4().at(els).eta());
// incorrect charge identified
} else {
els_pt_recosim_incorCharge->Fill(els_mc_p4().at(els).Pt());
els_eta_recosim_incorCharge->Fill(els_mc_p4().at(els).eta());
}
}
Variable definitions
- reconstruction efficiency:
els_pt_reco->Divide(els_pt_sim);
- charge identification inefficiency:
els_pt_recosim_incorCharge->Divide(els_pt_recosim);
Studies
all electrons in electron maker collection
GoodNonIsolatedElectrons
GoodIsolatedElectrons
GoodIsolatedElectrons veto'ing conversions
GoodIsolatedElectrons veto'ing conversions that don't have a track associated
GoodIsolatedElectrons veto'ing conversions and veto'ing electrons with inconsistent charge rel. to their assoc. track
GoodIsolatedElectrons veto'ing conversions and veto'ing electrons with inconsistent charge rel. to their assoc. track but letting electrons without associated track pass
GoodIsolatedElectrons veto'ing conversions, if electron and associated track charge disagree, use track charge
GoodIsolatedElectrons veto'ing conversions, if electron and associated track charge disagree, use track charge, apply track quality cuts (nHits >= 11, chi2/ndof < 10, pt > 1)
Result
Study |
reconstruction efficiency [%] |
charge identification inefficiency [%] |
AllElectrons |
93.7 |
2.5 |
GoodElectrons |
85.6 |
1.9 |
GoodIsolatedElectrons |
85.1 |
1.8 |
GoodIsolatedElectronsConvRemoval |
83.8 |
1.5 |
GoodIsolatedElectronConvRemovalTrkChargeConsistent |
79.9 |
0.3 |
GoodIsolatedElectronConvRemovalTrkChargeConsistentPassThrough |
82.1 |
0.4 |
GoodIsolatedElectronConvRemovalUseTrkCharge |
83.8 |
1.4 |
GoodIsolatedElectronConvRemovalUseTrkChargeTrkQualCuts |
83.8 |
1.6 |