26 using namespace egHLT;
123 trigCutParams_.clear();
135 if(filterNr.find(
"hltPreL1")==0){
157 if(errCode==0) errCode =
getHandles(edmEvent,setup);
160 if(errCode==0) errCode =
setTrigInfo(edmEvent, offEvent, c);
205 egHLTOffEles.clear();
208 if(!gsfIter.ecalDrivenSeed())
continue;
214 && std::fabs( nVit.z()<24.0)
215 &&
sqrt(nVit.x()*nVit.x() + nVit.y()*nVit.y())<2.0){nVertex++;}
230 egHLTOffEles.emplace_back(gsfIter,clusShapeData,isolData,hltData,eventData);
233 OffEle& ele = egHLTOffEles.back();
237 std::vector<std::pair<TrigCodes::TrigBitSet,int> >trigCutsCutCodes;
238 for(
auto & trigCut :
trigCuts_) trigCutsCutCodes.push_back(std::make_pair(trigCut.first,trigCut.second.getCutCode(ele)));
260 else isolData.
hltHad = 0.;
269 ecalIsolAlgoEE.getEtSum(&ele);
270 else isolData.
hltEm = 0.;
290 const DetId seedDetId = seedClus.hitsAndFractions()[0].first;
298 }
else clusShapeData.
r9 = -1.;
307 }
else clusShapeData.
r9 = -1.;
321 math::XYZPoint scPosWRTVtx(scClus->x()-bsPos.x(), scClus->y()-bsPos.y() , scClus->z()-ctfTrack->vz());
322 hltData.
dEtaIn = fabs(scPosWRTVtx.eta()-ctfTrack->eta());
325 float deltaPhi=fabs(ctfTrack->outerPosition().phi()-scClus->phi());
326 if(deltaPhi>6.283185308) deltaPhi -= 6.283185308;
327 if(deltaPhi>3.141592654) deltaPhi = 6.283185308-
deltaPhi;
367 egHLTOffPhos.clear();
380 egHLTOffPhos.emplace_back(phoIter,clusShapeData,isolData,hltData);
381 OffPho& pho = egHLTOffPhos.back();
385 std::vector<std::pair<TrigCodes::TrigBitSet,int> >trigCutsCutCodes;
386 for(
auto & trigCut :
trigCuts_) trigCutsCutCodes.push_back(std::make_pair(trigCut.first,trigCut.second.getCutCode(pho)));
410 else isolData.
hltHad = 0.;
417 ecalIsolAlgoEE.getEtSum(&pho);
418 else isolData.
hltEm = 0.;
434 clusShapeData.
r9 = pho.
r9();
440 const DetId seedDetId = seedClus.hitsAndFractions()[0].first;
void setTrigCutsCutCodes(const std::vector< std::pair< TrigCodes::TrigBitSet, int > > &trigCutsCutCodes)
T getParameter(std::string const &) const
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
double hltEMIsolEtaSliceEB_
edm::Handle< reco::TrackCollection > isolTrks_
virtual TrackRef closestCtfTrackRef() const
bool isNonnull() const
Checks for non-null.
The single EDProduct to be saved for each event (AOD case)
int fillOffPhoVec(std::vector< OffPho > &offPhos)
double hltPhoTrkIsolRSpan_
TrigBitSet getCode(const char *descript) const
edm::EDGetTokenT< CaloTowerCollection > caloTowersToken
float hcalTowerSumEtConeDR03() const
Hcal isolation sum.
void setLooseCutCode(int code)
bool hltPhoTrkIsolCountTrks_
void fillClusShapeData(const reco::GsfElectron &ele, OffEle::ClusShapeData &clusShapeData)
edm::Handle< reco::PhotonCollection > recoPhos_
std::vector< std::pair< TrigCodes::TrigBitSet, OffEgSel > > trigCuts_
int getCutCode(const OffEle &ele, int cutMask=~0x0) const
int setTrigInfo(const edm::Event &edmEvent, egHLT::OffEvt &offEvent, const TrigCodes &trigCodes)
double hltEMIsolOuterCone_
bool accept() const
Has at least one path accepted the event?
std::vector< Track > TrackCollection
collection of Tracks
float e1x5() const
Shower shape variables.
edm::EDGetTokenT< HBHERecHitCollection > hbheHitsToken
std::vector< std::string > l1PreScaledPaths_
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
std::vector< Vertex > VertexCollection
collection of Vertex objects
std::vector< std::pair< std::string, std::string > > l1PreAndSeedFilters_
double hltEleTrkIsolOuterCone_
math::XYZPoint Point
point in the space
void fillIsolData(const reco::GsfElectron &ele, OffEle::IsolData &isolData)
int photonTrackCount(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
float dr03HcalDepth2TowerSumEt() const
void fillHLTData(const reco::GsfElectron &ele, OffEle::HLTData &hltData)
float trkSumPtHollowConeDR03() const
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
edm::EDGetTokenT< reco::TrackCollection > isolTrkToken
double hltEMIsolInnerConeEE_
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
void setEvtTrigBits(TrigCodes::TrigBitSet bits)
edm::EDGetTokenT< reco::GsfElectronCollection > electronsToken
std::vector< edm::ParameterSet > trigCutParams_
double hltEleTrkIsolInnerCone_
edm::Handle< HBHERecHitCollection > hbheHits_
double hltPhoTrkIsolPtMin_
double hltEleTrkIsolZSpan_
edm::EDGetTokenT< trigger::TriggerEvent > triggerSummaryToken
void fillHLTDataPho(const reco::Photon &pho, OffPho::HLTData &hltData)
float sigmaIetaIeta() const
unsigned int triggerIndex(std::string const &name) const
double hltHadIsolInnerCone_
float electronPtSum(const reco::Track *const tr, const reco::TrackCollection *isoTracks)
Get Pt sum of tracks inside an isolation cone for electrons.
void setup(const edm::ParameterSet &)
double hltPhoTrkIsolZSpan_
std::vector< std::pair< std::string, int > > hltFiltersUsedWithNrCandsCut_
edm::EDGetTokenT< EcalRecHitCollection > ecalRecHitsEEToken
double hltEleTrkIsolRSpan_
float sigmaIetaIeta() const
double hltHadIsolOuterCone_
edm::EDGetTokenT< reco::PhotonCollection > photonsToken
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
float dr03TkSumPt() const
static bool getHandle(const edm::Event &event, const edm::EDGetTokenT< T > &token, edm::Handle< T > &handle)
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken
edm::Handle< HFRecHitCollection > hfHits_
float dr03HcalDepth1TowerSumEt() const
void setLooseCutCode(int code)
edm::Handle< std::vector< reco::CaloJet > > recoJets_
float sigmaEtaEta() const
double hltEleTrkIsolPtMin_
int nTrkHollowConeDR03() const
void setCutCode(int code)
edm::ESHandle< MagneticField > magField_
edm::Handle< trigger::TriggerEvent > trigEvt_
edm::ESHandle< CaloGeometry > caloGeom_
const std::vector< OffPho > & phos() const
double hltPhoTrkIsolInnerCone_
void setCutCode(int code)
double hltEMIsolEtaSliceEE_
double hltEMIsolInnerConeEB_
edm::Handle< reco::GsfElectronCollection > recoEles_
edm::EDGetTokenT< edm::TriggerResults > trigResultsToken
T const * product() const
edm::EDGetTokenT< HFRecHitCollection > hfHitsToken
edm::Handle< edm::TriggerResults > trigResults_
edm::ESHandle< CaloTopology > caloTopology_
XYZPointD XYZPoint
point in space with cartesian internal representation
int makeOffEvt(const edm::Event &edmEvent, const edm::EventSetup &setup, egHLT::OffEvt &offEvent, const TrigCodes &trigCodes)
std::vector< Photon > PhotonCollection
collectin of Photon objects
edm::EDGetTokenT< reco::CaloJetCollection > caloJetsToken
std::vector< std::string > l1PreScaledFilters_
void setJets(edm::Handle< std::vector< reco::CaloJet > > jets)
float dr03EcalRecHitSumEt() const
edm::EDGetTokenT< EcalRecHitCollection > ecalRecHitsEBToken
edm::Handle< EcalRecHitCollection > eeRecHits_
const std::vector< OffEle > & eles() const
void setTrigCutsCutCodes(const std::vector< std::pair< TrigCodes::TrigBitSet, int > > &trigCutsCutCodes)
int getHandles(const edm::Event &event, const edm::EventSetup &setup)
void setup(const edm::ParameterSet &conf, edm::ConsumesCollector &&iC)
double hltPhoTrkIsolOuterCone_
float ecalRecHitSumEtConeDR03() const
Isolation variables in cone dR=0.3.
edm::Handle< CaloTowerCollection > caloTowers_
edm::Handle< EcalRecHitCollection > ebRecHits_
std::vector< std::string > hltFiltersUsed_
edm::Handle< reco::VertexCollection > recoVertices_
SuperClusterRef superCluster() const override
reference to a SuperCluster
edm::ESHandle< EcalSeverityLevelAlgo > ecalSeverityLevel_
void setupTriggers(const HLTConfigProvider &config, const std::vector< std::string > &hltFiltersUsed, const TrigCodes &trigCodes)
EgammaHLTTrackIsolation * hltEleTrkIsolAlgo_
const Point & position() const
position
edm::Handle< reco::BeamSpot > beamSpot_
std::bitset< maxNrBits_ > TrigBitSet
T const * product() const
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
float photonPtSum(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
float sigmaEtaEta() const
edm::EDGetTokenT< reco::VertexCollection > vertexToken
int fillOffEleVec(std::vector< OffEle > &offEles)