diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/TElectronIsEMSelector.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/TElectronIsEMSelector.cxx index 1dc03bc9ce06bb9003b4e54062210bd841b04819..bfcc420172a36b6a3ce02c396014ce30d78353e7 100755 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/TElectronIsEMSelector.cxx +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/TElectronIsEMSelector.cxx @@ -739,10 +739,8 @@ Root::TElectronIsEMSelector::TrackCut( int ibin_eta= bins.at(1); int ibin_combined= bins.at(2); - if (ibin_eta>=0) { - + if (ibin_eta >= 0 && ibin_combined >= 0) { // Track quality cuts - // cuts on number of b-layer hits if(CheckVar(m_cutBL,1) && m_cutBL[ibin_eta] == 1 && !passBLayerRequirement){ iflag |= ( 0x1 << egammaPID::TrackBlayer_Electron); @@ -769,11 +767,9 @@ Root::TElectronIsEMSelector::TrackCut( } if (ibin_combined>=0) { - // matching (eta,phi) and energy-momentum // cut on Delta Eta and Delta Phi - - deltaeta=fabsf(deltaeta); // use absolute value + deltaeta=std::abs(deltaeta); if (CheckVar(m_cutDeltaEta, 4)) { if (deltaeta > m_cutDeltaEta[ibin_combined]) @@ -837,8 +833,12 @@ Root::TElectronIsEMSelector::TrackCut( const double a5 = 159.8; const double b5 = -70.9; int ibin_eta_TRT = -1; - if (!m_cutBinEta_TRT.empty()) { - const int numBins = m_cutBinEta_TRT.size(); + //We have an array + //[0.1; 0.625; 1.07; 1.304; 1.752; 2.0] + //Above 2.0 we do not have a TRT , + //so valid values will be 0 -5 in the above case + if (!m_cutBinEta_TRT.empty()&& eta2<m_cutBinEta_TRT.back()) { + const int numBins = (m_cutBinEta_TRT.size()-1); int ibinEta = 0; while (ibinEta < numBins && eta2 > m_cutBinEta_TRT[ibinEta]) { ++ibinEta; @@ -848,29 +848,26 @@ Root::TElectronIsEMSelector::TrackCut( if (ibin_eta_TRT >= 0) { switch (ibin_eta_TRT) { - - case 0: - DeltaNum = nTRTTotal - (a0 + b0*eta2 + c0*eta2*eta2); - break; - - case 1: - DeltaNum = nTRTTotal - (a1 + b1*eta2 + c1*eta2*eta2 + d1*eta2*eta2*eta2); - break; - - case 2: - DeltaNum = nTRTTotal - (a2 + b2*eta2 + c2*eta2*eta2) ; - break; - - case 3: - DeltaNum = nTRTTotal - (a3 + b3*eta2); - break; - - case 4: - DeltaNum = nTRTTotal - (a4 + b4*eta2 + c4*eta2*eta2 + d4*eta2*eta2*eta2); - break; - - case 5: - DeltaNum = nTRTTotal - (a5 + b5*eta2); + case 0: { + DeltaNum = nTRTTotal - (a0 + b0 * eta2 + c0 * eta2 * eta2); + } break; + case 1: { + DeltaNum = nTRTTotal - (a1 + b1 * eta2 + c1 * eta2 * eta2 + + d1 * eta2 * eta2 * eta2); + } break; + case 2: { + DeltaNum = nTRTTotal - (a2 + b2 * eta2 + c2 * eta2 * eta2); + } break; + case 3: { + DeltaNum = nTRTTotal - (a3 + b3 * eta2); + } break; + case 4: { + DeltaNum = nTRTTotal - (a4 + b4 * eta2 + c4 * eta2 * eta2 + + d4 * eta2 * eta2 * eta2); + } break; + case 5: { + DeltaNum = nTRTTotal - (a5 + b5 * eta2); + } } if (CheckVar(m_cutNumTRT, 2)) { @@ -919,7 +916,6 @@ Root::TElectronIsEMSelector::TrackCut( iflag |= (0x1 << egammaPID::TrackTRTratio90_Electron); } } - } // eta TRT return iflag; @@ -928,20 +924,33 @@ Root::TElectronIsEMSelector::TrackCut( std::vector<int> Root::TElectronIsEMSelector::FindEtEtaBin(double et, double eta2) const{ // Try to figure out in which bin we belong + + //Example + //For Et we have an array of values + //5000; 10000; 15000; 20000; 30000; 40000; 50000; 60000; 70000; 80000 + //with 10 entries + //And we have 11 cut entries + //so ibin_et can be 0-10 int ibin_et = -1; // loop on ET range if (!m_cutBinET.empty()) { const int numBins = m_cutBinET.size(); int ibinET = 0; - while (ibinET < numBins && et > m_cutBinEta[ibinET]) { + while (ibinET < numBins && et > m_cutBinET[ibinET]) { ++ibinET; } ibin_et = ibinET; } - + //For eta we have an array of values + // 0.1; 0.6 ;0.8; 1.15; 1.37; 1.52; 1.81; 2.01; 2.37; 2.47 + //with 10 entries + //And we have 10 cut entries + //As above 2.47 will be cut by + //egammaPID::ClusterEtaRange_Electron + //so valid ibin_eta can be 0-9 (we need to have eta2<2.47) int ibin_eta = -1; - if (!m_cutBinEta.empty()) { - const int numBins = m_cutBinEta.size(); + if (!m_cutBinEta.empty() && eta2<m_cutBinEta.back()) { + const int numBins = (m_cutBinEta.size()-1); int ibinEta = 0; while (ibinEta < numBins && eta2 > m_cutBinEta[ibinEta]) { ++ibinEta;