//Event Loop
unsigned int nEvents = tree->GetEntries();
// nEvents = 100;
for( unsigned int event = 0; event < nEvents; ++event) {
cms2.GetEntry(event);
++nEventsTotal;
if ( nEventsTotal%10000 == 0 ) {
std::cout << "Event: " << nEventsTotal << endl;
}
// loop over true electrons
for ( unsigned int els = 0;
els < genps_p4().size();
++els ) {
// check for true electron
if ( TMath::Abs(genps_id()[els]) != 11 ) continue;
// check for pT >= 10 GeV
if ( genps_p4()[els].pt() < 10. ) 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
// check for pT >= 10 GeV
if ( els_p4()[els].pt() < 10. ) continue;
// if ( !goodElectronWithoutIsolation(els) ) continue;
if ( !goodElectronIsolated(els,true) ) continue;
if ( conversionElectron(els) ) continue;
// Yanjun's conversion removal
// if ( conversionElectron_PIXHIT(els) ) continue;
// check how many electrons don't have an associated track
els_trkId->Fill(els_trkidx().at(els));
// tmp charge variable
double charge = els_charge().at(els);
// if electron has associated track and track charge is not equal to electron charge, veto
int trk = els_trkidx().at(els);
if ( (trk >= 0) && (charge != trks_charge().at(trk)) ) {
continue;
}
// exclude reco electron which is not a true electron
if ( abs(els_mc_id()[els]) != 11 ) 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 ( (charge == -1 && els_mc_id().at(els) == 11) || (charge == 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());
}
// 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 ( (charge == -1 && els_mc_id().at(els) == 11) || (charge == 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());
}
}
}
}