CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
egHLT::OffHelper Class Reference

#include <EgHLTOffHelper.h>

Public Member Functions

void fillClusShapeData (const reco::GsfElectron &ele, OffEle::ClusShapeData &clusShapeData)
 
void fillClusShapeData (const reco::Photon &pho, OffPho::ClusShapeData &clusShapeData)
 
void fillHLTData (const reco::GsfElectron &ele, OffEle::HLTData &hltData)
 
void fillIsolData (const reco::GsfElectron &ele, OffEle::IsolData &isolData)
 
void fillIsolData (const reco::Photon &pho, OffPho::IsolData &isolData)
 
int fillOffEleVec (std::vector< OffEle > &offEles)
 
int fillOffPhoVec (std::vector< OffPho > &offPhos)
 
int getHandles (const edm::Event &event, const edm::EventSetup &setup)
 
int makeOffEvt (const edm::Event &edmEvent, const edm::EventSetup &setup, egHLT::OffEvt &offEvent)
 
 OffHelper ()
 
int setTrigInfo (const edm::Event &edmEvent, egHLT::OffEvt &offEvent)
 
void setup (const edm::ParameterSet &conf)
 
void setupTriggers (const HLTConfigProvider &config, const std::vector< std::string > &hltFiltersUsed)
 
const std::vector< std::pair
< TrigCodes::TrigBitSet,
OffEgSel > > & 
trigCuts () const
 
const trigger::TriggerEventtrigEvt () const
 
 ~OffHelper ()
 

Static Public Member Functions

template<class T >
static bool getHandle (const edm::Event &event, const edm::InputTag &tag, edm::Handle< T > &handle)
 

Private Member Functions

 OffHelper (const OffHelper &rhs)
 
OffHelperoperator= (const OffHelper &rhs)
 

Private Attributes

edm::Handle< reco::BeamSpotbeamSpot_
 
edm::InputTag beamSpotTag_
 
bool calHLTEleTrkIsol_
 
bool calHLTEmIsol_
 
bool calHLTHcalIsol_
 
bool calHLTPhoTrkIsol_
 
edm::ESHandle< CaloGeometrycaloGeom_
 
edm::InputTag caloJetsTag_
 
edm::ESHandle< CaloTopologycaloTopology_
 
edm::Handle< CaloTowerCollectioncaloTowers_
 
edm::InputTag caloTowersTag_
 
edm::Handle< EcalRecHitCollectionebRecHits_
 
edm::InputTag ecalRecHitsEBTag_
 
edm::InputTag ecalRecHitsEETag_
 
edm::Handle< EcalRecHitCollectioneeRecHits_
 
edm::InputTag electronsTag_
 
OffEgSel eleCuts_
 
OffEgSel eleLooseCuts_
 
edm::Handle< HBHERecHitCollectionhbheHits_
 
edm::InputTag hbheHitsTag_
 
edm::Handle< HFRecHitCollectionhfHits_
 
edm::InputTag hfHitsTag_
 
EgammaHLTTrackIsolationhltEleTrkIsolAlgo_
 
double hltEleTrkIsolInnerCone_
 
double hltEleTrkIsolOuterCone_
 
double hltEleTrkIsolPtMin_
 
double hltEleTrkIsolRSpan_
 
double hltEleTrkIsolZSpan_
 
double hltEMIsolEMinEB_
 
double hltEMIsolEMinEE_
 
double hltEMIsolEtaSliceEB_
 
double hltEMIsolEtaSliceEE_
 
double hltEMIsolEtMinEB_
 
double hltEMIsolEtMinEE_
 
double hltEMIsolInnerConeEB_
 
double hltEMIsolInnerConeEE_
 
double hltEMIsolOuterCone_
 
std::vector< std::string > hltFiltersUsed_
 
std::vector< std::pair
< std::string, int > > 
hltFiltersUsedWithNrCandsCut_
 
int hltHadIsolDepth_
 
double hltHadIsolEtMin_
 
double hltHadIsolInnerCone_
 
double hltHadIsolOuterCone_
 
EgammaHLTTrackIsolationhltPhoTrkIsolAlgo_
 
bool hltPhoTrkIsolCountTrks_
 
double hltPhoTrkIsolInnerCone_
 
double hltPhoTrkIsolOuterCone_
 
double hltPhoTrkIsolPtMin_
 
double hltPhoTrkIsolRSpan_
 
double hltPhoTrkIsolZSpan_
 
std::string hltTag_
 
edm::Handle
< reco::TrackCollection
isolTrks_
 
edm::InputTag isolTrkTag_
 
std::vector< std::pair
< std::string, std::string > > 
l1PreAndSeedFilters_
 
std::vector< std::string > l1PreScaledFilters_
 
std::vector< std::string > l1PreScaledPaths_
 
edm::ESHandle< MagneticFieldmagField_
 
OffEgSel phoCuts_
 
OffEgSel phoLooseCuts_
 
edm::InputTag photonsTag_
 
edm::Handle
< reco::GsfElectronCollection
recoEles_
 
edm::Handle< std::vector
< reco::CaloJet > > 
recoJets_
 
edm::Handle
< reco::PhotonCollection
recoPhos_
 
std::vector< edm::ParameterSettrigCutParams_
 
std::vector< std::pair
< TrigCodes::TrigBitSet,
OffEgSel > > 
trigCuts_
 
edm::Handle
< trigger::TriggerEvent
trigEvt_
 
edm::InputTag triggerSummaryLabel_
 
edm::Handle< edm::TriggerResultstrigResults_
 
edm::InputTag trigResultsTag_
 

Detailed Description

Definition at line 55 of file EgHLTOffHelper.h.

Constructor & Destructor Documentation

egHLT::OffHelper::OffHelper ( const OffHelper rhs)
inlineprivate

Definition at line 152 of file EgHLTOffHelper.h.

152 {}
egHLT::OffHelper::OffHelper ( )
inline

Definition at line 155 of file EgHLTOffHelper.h.

OffEgSel phoLooseCuts_
OffEgSel eleLooseCuts_
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
#define NULL
Definition: scimark2.h:8
EgammaHLTTrackIsolation * hltEleTrkIsolAlgo_
OffHelper::~OffHelper ( )

Definition at line 23 of file EgHLTOffHelper.cc.

References hltEleTrkIsolAlgo_, and hltPhoTrkIsolAlgo_.

24 {
27 }
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
EgammaHLTTrackIsolation * hltEleTrkIsolAlgo_

Member Function Documentation

void OffHelper::fillClusShapeData ( const reco::GsfElectron ele,
OffEle::ClusShapeData clusShapeData 
)

Definition at line 251 of file EgHLTOffHelper.cc.

References caloGeom_, caloTopology_, EcalClusterTools::covariances(), reco::GsfElectron::e1x5(), egHLT::OffEle::ClusShapeData::e1x5Over5x5, reco::GsfElectron::e2x5Max(), egHLT::OffEle::ClusShapeData::e2x5MaxOver5x5, EcalClusterTools::e3x3(), reco::GsfElectron::e5x5(), ebRecHits_, EcalBarrel, eeRecHits_, EcalClusterTools::localCovariances(), edm::ESHandle< class >::product(), egHLT::OffEle::ClusShapeData::r9, egHLT::OffEle::ClusShapeData::sigmaEtaEta, reco::GsfElectron::sigmaEtaEta(), egHLT::OffEle::ClusShapeData::sigmaIEtaIEta, reco::GsfElectron::sigmaIetaIeta(), egHLT::OffEle::ClusShapeData::sigmaIPhiIPhi, egHLT::OffEle::ClusShapeData::sigmaPhiPhi, mathSSE::sqrt(), DetId::subdetId(), and reco::GsfElectron::superCluster().

Referenced by fillOffEleVec(), and fillOffPhoVec().

252 {
253  clusShapeData.sigmaEtaEta = ele.sigmaEtaEta();
254  clusShapeData.sigmaIEtaIEta = ele.sigmaIetaIeta();
255  double e5x5 = ele.e5x5();
256  if(e5x5!=0.){
257  clusShapeData.e1x5Over5x5 = ele.e1x5()/e5x5;
258  clusShapeData.e2x5MaxOver5x5 = ele.e2x5Max()/e5x5;
259  }else{
260  clusShapeData.e1x5Over5x5 = -1;
261  clusShapeData.e2x5MaxOver5x5 = -1;
262  }
263 
264  //want to calculate r9, sigmaPhiPhi and sigmaIPhiIPhi, have to do old fashioned way
265  const reco::BasicCluster& seedClus = *(ele.superCluster()->seed());
266  const DetId seedDetId = seedClus.hitsAndFractions()[0].first; //note this may not actually be the seed hit but it doesnt matter because all hits will be in the barrel OR endcap
267  if(seedDetId.subdetId()==EcalBarrel){
268  std::vector<float> stdCov = EcalClusterTools::covariances(seedClus,ebRecHits_.product(),caloTopology_.product(),caloGeom_.product());
269  std::vector<float> crysCov = EcalClusterTools::localCovariances(seedClus,ebRecHits_.product(),caloTopology_.product());
270  clusShapeData.sigmaPhiPhi = sqrt(stdCov[2]);
271  clusShapeData.sigmaIPhiIPhi = sqrt(crysCov[2]);
272  if(ele.superCluster()->rawEnergy()!=0.){
273  clusShapeData.r9 = EcalClusterTools::e3x3(seedClus,ebRecHits_.product(),caloTopology_.product()) / ele.superCluster()->rawEnergy();
274  }else clusShapeData.r9 = -1.;
275 
276  }else{
277  std::vector<float> stdCov = EcalClusterTools::covariances(seedClus,eeRecHits_.product(),caloTopology_.product(),caloGeom_.product());
278  std::vector<float> crysCov = EcalClusterTools::localCovariances(seedClus,eeRecHits_.product(),caloTopology_.product());
279  clusShapeData.sigmaPhiPhi = sqrt(stdCov[2]);
280  clusShapeData.sigmaIPhiIPhi = sqrt(crysCov[2]);
281  if(ele.superCluster()->rawEnergy()!=0.){
282  clusShapeData.r9 = EcalClusterTools::e3x3(seedClus,eeRecHits_.product(),caloTopology_.product()) / ele.superCluster()->rawEnergy();
283  }else clusShapeData.r9 = -1.;
284  }
285 }
SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:166
float e2x5Max() const
Definition: GsfElectron.h:380
static std::vector< float > covariances(const reco::BasicCluster &cluster, const EcalRecHitCollection *recHits, const CaloTopology *topology, const CaloGeometry *geometry, float w0=4.7)
float sigmaIetaIeta() const
Definition: GsfElectron.h:378
static std::vector< float > localCovariances(const reco::BasicCluster &cluster, const EcalRecHitCollection *recHits, const CaloTopology *topology, float w0=4.7)
T sqrt(T t)
Definition: SSEVec.h:28
static float e3x3(const reco::BasicCluster &cluster, const EcalRecHitCollection *recHits, const CaloTopology *topology)
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
edm::ESHandle< CaloGeometry > caloGeom_
Definition: DetId.h:20
edm::ESHandle< CaloTopology > caloTopology_
float e1x5() const
Definition: GsfElectron.h:379
T const * product() const
Definition: ESHandle.h:62
edm::Handle< EcalRecHitCollection > eeRecHits_
float e5x5() const
Definition: GsfElectron.h:381
edm::Handle< EcalRecHitCollection > ebRecHits_
float sigmaEtaEta() const
Definition: GsfElectron.h:377
void OffHelper::fillClusShapeData ( const reco::Photon pho,
OffPho::ClusShapeData clusShapeData 
)

Definition at line 373 of file EgHLTOffHelper.cc.

References caloGeom_, caloTopology_, EcalClusterTools::covariances(), reco::Photon::e1x5(), egHLT::OffPho::ClusShapeData::e1x5Over5x5, reco::Photon::e2x5(), egHLT::OffPho::ClusShapeData::e2x5MaxOver5x5, reco::Photon::e5x5(), ebRecHits_, EcalBarrel, eeRecHits_, EcalClusterTools::localCovariances(), edm::ESHandle< class >::product(), egHLT::OffPho::ClusShapeData::r9, reco::Photon::r9(), egHLT::OffPho::ClusShapeData::sigmaEtaEta, reco::Photon::sigmaEtaEta(), egHLT::OffPho::ClusShapeData::sigmaIEtaIEta, reco::Photon::sigmaIetaIeta(), egHLT::OffPho::ClusShapeData::sigmaIPhiIPhi, egHLT::OffPho::ClusShapeData::sigmaPhiPhi, mathSSE::sqrt(), DetId::subdetId(), and reco::Photon::superCluster().

374 {
375  clusShapeData.sigmaEtaEta = pho.sigmaEtaEta();
376  clusShapeData.sigmaIEtaIEta = pho.sigmaIetaIeta();
377  double e5x5 = pho.e5x5();
378  if(e5x5!=0.){ //even though it is almost impossible for this to be 0., this code can never ever crash under any situation
379  clusShapeData.e1x5Over5x5 = pho.e1x5()/e5x5;
380  clusShapeData.e2x5MaxOver5x5 = pho.e2x5()/e5x5;
381  }else{
382  clusShapeData.e1x5Over5x5 = -1;
383  clusShapeData.e2x5MaxOver5x5 = -1;
384  }
385  clusShapeData.r9 = pho.r9();
386 
387  //sigmaPhiPhi and sigmaIPhiIPhi are not in object (and nor should they be) so have to get them old fashioned way
388  //need to figure out if its in the barrel or endcap
389  //get the first hit of the cluster and figure out if its barrel or endcap
390  const reco::BasicCluster& seedClus = *(pho.superCluster()->seed());
391  const DetId seedDetId = seedClus.hitsAndFractions()[0].first; //note this may not actually be the seed hit but it doesnt matter because all hits will be in the barrel OR endcap (it is also incredably inefficient as it getHitsByDetId passes the vector by value not reference
392  if(seedDetId.subdetId()==EcalBarrel){
393  std::vector<float> stdCov = EcalClusterTools::covariances(seedClus,ebRecHits_.product(),caloTopology_.product(),caloGeom_.product());
394  std::vector<float> crysCov = EcalClusterTools::localCovariances(seedClus,ebRecHits_.product(),caloTopology_.product());
395  clusShapeData.sigmaPhiPhi = sqrt(stdCov[2]);
396  clusShapeData.sigmaIPhiIPhi = sqrt(crysCov[2]);
397  }else{
398  std::vector<float> stdCov = EcalClusterTools::covariances(seedClus,eeRecHits_.product(),caloTopology_.product(),caloGeom_.product());
399  std::vector<float> crysCov = EcalClusterTools::localCovariances(seedClus,eeRecHits_.product(),caloTopology_.product());
400 
401  clusShapeData.sigmaPhiPhi = sqrt(stdCov[2]);
402  clusShapeData.sigmaIPhiIPhi = sqrt(crysCov[2]);
403  }
404 }
reco::SuperClusterRef superCluster() const
Retrieve photonCore attributes.
Definition: Photon.h:54
float e5x5() const
Definition: Photon.h:164
float e1x5() const
Shower shape variables.
Definition: Photon.h:161
static std::vector< float > covariances(const reco::BasicCluster &cluster, const EcalRecHitCollection *recHits, const CaloTopology *topology, const CaloGeometry *geometry, float w0=4.7)
static std::vector< float > localCovariances(const reco::BasicCluster &cluster, const EcalRecHitCollection *recHits, const CaloTopology *topology, float w0=4.7)
T sqrt(T t)
Definition: SSEVec.h:28
float sigmaIetaIeta() const
Definition: Photon.h:167
float e2x5() const
Definition: Photon.h:162
float sigmaEtaEta() const
Definition: Photon.h:166
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
edm::ESHandle< CaloGeometry > caloGeom_
Definition: DetId.h:20
edm::ESHandle< CaloTopology > caloTopology_
T const * product() const
Definition: ESHandle.h:62
edm::Handle< EcalRecHitCollection > eeRecHits_
edm::Handle< EcalRecHitCollection > ebRecHits_
float r9() const
Definition: Photon.h:170
void OffHelper::fillHLTData ( const reco::GsfElectron ele,
OffEle::HLTData hltData 
)

Definition at line 288 of file EgHLTOffHelper.cc.

References beamSpot_, reco::GsfElectron::closestCtfTrackRef(), Geom::deltaPhi(), egHLT::OffEle::HLTData::dEtaIn, egHLT::OffEle::HLTData::dPhiIn, reco::GsfElectron::ecalEnergy(), egHLT::OffEle::HLTData::invEInvP, edm::Ref< C, T, F >::isNonnull(), and reco::GsfElectron::superCluster().

Referenced by fillOffEleVec().

289 {
290  if(ele.closestCtfTrackRef().isNonnull() &&
291  ele.closestCtfTrackRef()->extra().isNonnull()){
292  reco::TrackRef ctfTrack = ele.closestCtfTrackRef();
293  reco::SuperClusterRef scClus = ele.superCluster();
294 
295  //dEta
296  const reco::BeamSpot::Point& bsPos = beamSpot_->position();
297  math::XYZPoint scPosWRTVtx(scClus->x()-bsPos.x(), scClus->y()-bsPos.y() , scClus->z()-ctfTrack->vz());
298  hltData.dEtaIn = fabs(scPosWRTVtx.eta()-ctfTrack->eta());
299 
300  //dPhi: lifted straight from hlt code
301  float deltaPhi=fabs(ctfTrack->outerPosition().phi()-scClus->phi());
302  if(deltaPhi>6.283185308) deltaPhi -= 6.283185308;
303  if(deltaPhi>3.141592654) deltaPhi = 6.283185308-deltaPhi;
304  hltData.dPhiIn = deltaPhi;
305 
306  //invEInvP
307  if(ele.ecalEnergy()!=0 && ctfTrack->p()!=0) hltData.invEInvP= 1/ele.ecalEnergy() - 1/ctfTrack->p();
308  else hltData.invEInvP = 0;
309  }else{
310  hltData.dEtaIn =999;
311  hltData.dPhiIn =999;
312  hltData.invEInvP = 999;
313 
314  }
315 }
double deltaPhi(float phi1, float phi2)
Definition: VectorUtil.h:30
math::XYZPoint Point
point in the space
Definition: BeamSpot.h:30
SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:166
TrackRef closestCtfTrackRef() const
Definition: GsfElectron.h:292
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:248
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:13
float ecalEnergy() const
Definition: GsfElectron.h:587
edm::Handle< reco::BeamSpot > beamSpot_
void OffHelper::fillIsolData ( const reco::GsfElectron ele,
OffEle::IsolData isolData 
)

Definition at line 219 of file EgHLTOffHelper.cc.

References calHLTEleTrkIsol_, calHLTEmIsol_, calHLTHcalIsol_, calHLTPhoTrkIsol_, caloGeom_, caloTowers_, reco::GsfElectron::dr03EcalRecHitSumEt(), reco::GsfElectron::dr03HcalDepth1TowerSumEt(), reco::GsfElectron::dr03HcalDepth2TowerSumEt(), reco::GsfElectron::dr03TkSumPt(), ebRecHits_, DetId::Ecal, eeRecHits_, EgammaHLTTrackIsolation::electronPtSum(), egHLT::OffEle::IsolData::em, EgammaRecHitIsolation::getEtSum(), reco::GsfElectron::gsfTrack(), egHLT::OffEle::IsolData::hadDepth1, egHLT::OffEle::IsolData::hadDepth2, hltEleTrkIsolAlgo_, egHLT::OffEle::IsolData::hltEm, hltEMIsolEMinEB_, hltEMIsolEMinEE_, hltEMIsolEtaSliceEB_, hltEMIsolEtaSliceEE_, hltEMIsolEtMinEB_, hltEMIsolEtMinEE_, hltEMIsolInnerConeEB_, hltEMIsolInnerConeEE_, hltEMIsolOuterCone_, egHLT::OffEle::IsolData::hltHad, hltHadIsolDepth_, hltHadIsolEtMin_, hltHadIsolInnerCone_, hltHadIsolOuterCone_, hltPhoTrkIsolAlgo_, hltPhoTrkIsolCountTrks_, egHLT::OffEle::IsolData::hltTrksEle, egHLT::OffEle::IsolData::hltTrksPho, isolTrks_, egHLT::OffEle::IsolData::nrTrks, EgammaHLTTrackIsolation::photonPtSum(), EgammaHLTTrackIsolation::photonTrackCount(), edm::Handle< T >::product(), and egHLT::OffEle::IsolData::ptTrks.

Referenced by fillOffEleVec(), and fillOffPhoVec().

220 {
228 
229  isolData.ptTrks=ele.dr03TkSumPt();
230  isolData.nrTrks=999; //no longer supported
231  isolData.em= ele.dr03EcalRecHitSumEt();
232  isolData.hadDepth1 = ele.dr03HcalDepth1TowerSumEt();
233  isolData.hadDepth2 = ele.dr03HcalDepth2TowerSumEt();
234 
235  //now time to do the HLT algos
236  if(calHLTHcalIsol_) isolData.hltHad=hcalIsolAlgo.getTowerESum(&ele);
237  else isolData.hltHad = 0.;
239  else isolData.hltTrksEle = 0.;
240  if(calHLTPhoTrkIsol_){
242  else isolData.hltTrksPho=hltPhoTrkIsolAlgo_->photonPtSum(&ele,isolTrks_.product(),false);
243  }
244  else isolData.hltTrksPho = 0.;
245  if(calHLTEmIsol_) isolData.hltEm = ecalIsolAlgoEB.getEtSum(&ele) + ecalIsolAlgoEE.getEtSum(&ele);
246  else isolData.hltEm = 0.;
247 
248 }
double hltEMIsolEtaSliceEB_
edm::Handle< reco::TrackCollection > isolTrks_
double hltEMIsolOuterCone_
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
int photonTrackCount(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
float dr03HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:425
double hltEMIsolInnerConeEE_
double hltHadIsolInnerCone_
float electronPtSum(const reco::Track *const tr, const reco::TrackCollection *isoTracks)
Get Pt sum of tracks inside an isolation cone for electrons.
double hltHadIsolOuterCone_
float dr03TkSumPt() const
Definition: GsfElectron.h:422
float dr03HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:424
edm::ESHandle< CaloGeometry > caloGeom_
GsfTrackRef gsfTrack() const
reference to a GsfTrack
Definition: GsfElectron.h:167
double hltEMIsolEtaSliceEE_
double hltEMIsolInnerConeEB_
T const * product() const
Definition: Handle.h:74
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:423
edm::Handle< EcalRecHitCollection > eeRecHits_
edm::Handle< CaloTowerCollection > caloTowers_
edm::Handle< EcalRecHitCollection > ebRecHits_
EgammaHLTTrackIsolation * hltEleTrkIsolAlgo_
float photonPtSum(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
void OffHelper::fillIsolData ( const reco::Photon pho,
OffPho::IsolData isolData 
)

Definition at line 345 of file EgHLTOffHelper.cc.

References calHLTEmIsol_, calHLTHcalIsol_, calHLTPhoTrkIsol_, caloGeom_, caloTowers_, ebRecHits_, DetId::Ecal, reco::Photon::ecalRecHitSumEtConeDR03(), egHLT::OffPho::IsolData::em, EgammaRecHitIsolation::getEtSum(), egHLT::OffPho::IsolData::had, reco::Photon::hcalTowerSumEtConeDR03(), egHLT::OffPho::IsolData::hltEm, hltEMIsolEMinEB_, hltEMIsolEMinEE_, hltEMIsolEtaSliceEB_, hltEMIsolEtaSliceEE_, hltEMIsolEtMinEB_, hltEMIsolEtMinEE_, hltEMIsolInnerConeEB_, hltEMIsolInnerConeEE_, hltEMIsolOuterCone_, egHLT::OffPho::IsolData::hltHad, hltHadIsolDepth_, hltHadIsolEtMin_, hltHadIsolInnerCone_, hltHadIsolOuterCone_, hltPhoTrkIsolAlgo_, hltPhoTrkIsolCountTrks_, egHLT::OffPho::IsolData::hltTrks, isolTrks_, egHLT::OffPho::IsolData::nrTrks, reco::Photon::nTrkHollowConeDR03(), EgammaHLTTrackIsolation::photonPtSum(), EgammaHLTTrackIsolation::photonTrackCount(), edm::Handle< T >::product(), egHLT::OffPho::IsolData::ptTrks, and reco::Photon::trkSumPtHollowConeDR03().

346 {
354 
355  isolData.nrTrks = pho.nTrkHollowConeDR03();
356  isolData.ptTrks = pho.trkSumPtHollowConeDR03();
357  isolData.em = pho.ecalRecHitSumEtConeDR03();
358  isolData.had = pho.hcalTowerSumEtConeDR03();
359 
360  //now calculate hlt algos
361  if(calHLTHcalIsol_) isolData.hltHad=hcalIsolAlgo.getTowerESum(&pho);
362  else isolData.hltHad = 0.;
363  if(calHLTPhoTrkIsol_){
365  else isolData.hltTrks=hltPhoTrkIsolAlgo_->photonPtSum(&pho,isolTrks_.product(),false);
366  }
367  else isolData.hltTrks = 0.;
368  if(calHLTEmIsol_) isolData.hltEm = ecalIsolAlgoEB.getEtSum(&pho) + ecalIsolAlgoEE.getEtSum(&pho);
369  else isolData.hltEm = 0.;
370 
371 }
double hltEMIsolEtaSliceEB_
edm::Handle< reco::TrackCollection > isolTrks_
float hcalTowerSumEtConeDR03() const
Hcal isolation sum.
Definition: Photon.h:262
double hltEMIsolOuterCone_
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
int photonTrackCount(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
float trkSumPtHollowConeDR03() const
Definition: Photon.h:270
double hltEMIsolInnerConeEE_
double hltHadIsolInnerCone_
double hltHadIsolOuterCone_
int nTrkHollowConeDR03() const
Definition: Photon.h:274
edm::ESHandle< CaloGeometry > caloGeom_
double hltEMIsolEtaSliceEE_
double hltEMIsolInnerConeEB_
T const * product() const
Definition: Handle.h:74
float ecalRecHitSumEtConeDR03() const
Isolation variables in cone dR=0.3.
Definition: Photon.h:260
edm::Handle< CaloTowerCollection > caloTowers_
edm::Handle< EcalRecHitCollection > ebRecHits_
float photonPtSum(const reco::RecoCandidate *const recocand, const reco::TrackCollection *isoTracks, bool useVertex)
int OffHelper::fillOffEleVec ( std::vector< OffEle > &  offEles)

Definition at line 188 of file EgHLTOffHelper.cc.

References eleCuts_, eleLooseCuts_, fillClusShapeData(), fillHLTData(), fillIsolData(), egHLT::OffEgSel::getCutCode(), i, egHLT::errCodes::OffEle, recoEles_, egHLT::OffEle::setCutCode(), egHLT::OffEle::setLooseCutCode(), egHLT::OffEle::setTrigCutsCutCodes(), and trigCuts_.

Referenced by makeOffEvt().

189 {
190  egHLTOffEles.clear();
191  egHLTOffEles.reserve(recoEles_->size());
192  for(reco::GsfElectronCollection::const_iterator gsfIter=recoEles_->begin(); gsfIter!=recoEles_->end();++gsfIter){
193  if(!gsfIter->ecalDrivenSeed()) continue; //avoid PF electrons (this is Eg HLT validation and HLT is ecal driven)
194 
195  OffEle::IsolData isolData;
196  fillIsolData(*gsfIter,isolData);
197 
198  OffEle::ClusShapeData clusShapeData;
199  fillClusShapeData(*gsfIter,clusShapeData);
200 
201  OffEle::HLTData hltData;
202  fillHLTData(*gsfIter,hltData);
203 
204  egHLTOffEles.push_back(OffEle(*gsfIter,clusShapeData,isolData,hltData));
205 
206  //now we would like to set the cut results
207  OffEle& ele = egHLTOffEles.back();
208  ele.setCutCode(eleCuts_.getCutCode(ele));
210 
211  std::vector<std::pair<TrigCodes::TrigBitSet,int> >trigCutsCutCodes;
212  for(size_t i=0;i<trigCuts_.size();i++) trigCutsCutCodes.push_back(std::make_pair(trigCuts_[i].first,trigCuts_[i].second.getCutCode(ele)));
213 
214  ele.setTrigCutsCutCodes(trigCutsCutCodes);
215  }//end loop over gsf electron collection
216  return 0;
217 }
int i
Definition: DBlmapReader.cc:9
void setTrigCutsCutCodes(const std::vector< std::pair< TrigCodes::TrigBitSet, int > > trigCutsCutCodes)
Definition: EgHLTOffEle.h:98
void setLooseCutCode(int code)
Definition: EgHLTOffEle.h:96
void fillClusShapeData(const reco::GsfElectron &ele, OffEle::ClusShapeData &clusShapeData)
std::vector< std::pair< TrigCodes::TrigBitSet, OffEgSel > > trigCuts_
int getCutCode(const OffEle &ele, int cutMask=~0x0) const
OffEgSel eleLooseCuts_
void fillIsolData(const reco::GsfElectron &ele, OffEle::IsolData &isolData)
void fillHLTData(const reco::GsfElectron &ele, OffEle::HLTData &hltData)
void setCutCode(int code)
Definition: EgHLTOffEle.h:95
edm::Handle< reco::GsfElectronCollection > recoEles_
int OffHelper::fillOffPhoVec ( std::vector< OffPho > &  offPhos)

Definition at line 318 of file EgHLTOffHelper.cc.

References fillClusShapeData(), fillIsolData(), egHLT::OffEgSel::getCutCode(), i, egHLT::errCodes::OffPho, phoCuts_, phoLooseCuts_, recoPhos_, egHLT::OffPho::setCutCode(), egHLT::OffPho::setLooseCutCode(), egHLT::OffPho::setTrigCutsCutCodes(), and trigCuts_.

Referenced by makeOffEvt().

319 {
320  egHLTOffPhos.clear();
321  egHLTOffPhos.reserve(recoPhos_->size());
322  for(reco::PhotonCollection::const_iterator phoIter=recoPhos_->begin(); phoIter!=recoPhos_->end();++phoIter){
323 
324  OffPho::IsolData isolData;
325  OffPho::ClusShapeData clusShapeData;
326 
327  fillIsolData(*phoIter,isolData);
328  fillClusShapeData(*phoIter,clusShapeData);
329 
330  egHLTOffPhos.push_back(OffPho(*phoIter,clusShapeData,isolData));
331  OffPho& pho = egHLTOffPhos.back();
332  pho.setCutCode(phoCuts_.getCutCode(pho));
334 
335  std::vector<std::pair<TrigCodes::TrigBitSet,int> >trigCutsCutCodes;
336  for(size_t i=0;i<trigCuts_.size();i++) trigCutsCutCodes.push_back(std::make_pair(trigCuts_[i].first,trigCuts_[i].second.getCutCode(pho)));
337  pho.setTrigCutsCutCodes(trigCutsCutCodes);
338 
339 
340  }//end loop over photon collection
341  return 0;
342 }
int i
Definition: DBlmapReader.cc:9
void setTrigCutsCutCodes(const std::vector< std::pair< TrigCodes::TrigBitSet, int > > trigCutsCutCodes)
Definition: EgHLTOffPho.h:85
OffEgSel phoLooseCuts_
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
void fillIsolData(const reco::GsfElectron &ele, OffEle::IsolData &isolData)
void setLooseCutCode(int code)
Definition: EgHLTOffPho.h:82
void setCutCode(int code)
Definition: EgHLTOffPho.h:81
template<class T >
bool egHLT::OffHelper::getHandle ( const edm::Event event,
const edm::InputTag tag,
edm::Handle< T > &  handle 
)
static

Definition at line 188 of file EgHLTOffHelper.h.

References edm::Handle< T >::product(), and summarizeEdmComparisonLogfiles::success.

Referenced by getHandles().

189  {
190 
191  bool success=event.getByLabel(tag,handle);
192  return success && handle.product();
193 
194 
195  }
T const * product() const
Definition: Handle.h:74
int OffHelper::getHandles ( const edm::Event event,
const edm::EventSetup setup 
)

Definition at line 153 of file EgHLTOffHelper.cc.

References egHLT::errCodes::BeamSpot, beamSpot_, beamSpotTag_, caloGeom_, caloJetsTag_, caloTopology_, egHLT::errCodes::CaloTowers, caloTowers_, caloTowersTag_, egHLT::errCodes::EBRecHits, ebRecHits_, ecalRecHitsEBTag_, ecalRecHitsEETag_, egHLT::errCodes::EERecHits, eeRecHits_, electronsTag_, egHLT::errCodes::Geom, edm::EventSetup::get(), getHandle(), hbheHits_, hbheHitsTag_, egHLT::errCodes::HBHERecHits, hfHits_, hfHitsTag_, egHLT::errCodes::HFRecHits, egHLT::errCodes::IsolTrks, isolTrks_, isolTrkTag_, egHLT::errCodes::MagField, magField_, egHLT::errCodes::OffEle, egHLT::errCodes::OffJet, egHLT::errCodes::OffPho, photonsTag_, recoEles_, recoJets_, recoPhos_, egHLT::errCodes::TrigEvent, trigEvt_, triggerSummaryLabel_, trigResults_, and trigResultsTag_.

Referenced by makeOffEvt().

154 {
155  try {
156  setup.get<CaloGeometryRecord>().get(caloGeom_);
157  setup.get<CaloTopologyRecord>().get(caloTopology_);
158  }catch(...){
159  return errCodes::Geom;
160  }
161  try {
162  setup.get<IdealMagneticFieldRecord>().get(magField_);
163  }catch(...){
164  return errCodes::MagField;
165  }
166 
167  //get objects
168  if(!getHandle(event,triggerSummaryLabel_,trigEvt_)) return errCodes::TrigEvent; //must have this, otherwise skip event
169  if(!getHandle(event,trigResultsTag_,trigResults_)) return errCodes::TrigEvent; //re using bit to minimise bug fix code changes
170  if(!getHandle(event,electronsTag_,recoEles_)) return errCodes::OffEle; //need for electrons
171  if(!getHandle(event,photonsTag_, recoPhos_)) return errCodes::OffPho; //need for photons
172  if(!getHandle(event,caloJetsTag_,recoJets_)) return errCodes::OffJet; //need for electrons and photons
173 
174  //need for HLT isolations (rec hits also need for sigmaIPhiIPhi (ele/pho) and r9 pho)
178  if(!getHandle(event,hbheHitsTag_, hbheHits_)) return errCodes::HBHERecHits; //I dont think we need hbhe rec-hits any more
179  if(!getHandle(event,hfHitsTag_, hfHits_)) return errCodes::HFRecHits;//I dont think we need hf rec-hits any more
182 
183 
184  return 0;
185 }
edm::Handle< reco::TrackCollection > isolTrks_
edm::InputTag ecalRecHitsEBTag_
edm::Handle< reco::PhotonCollection > recoPhos_
edm::InputTag caloJetsTag_
edm::Handle< HBHERecHitCollection > hbheHits_
edm::InputTag electronsTag_
edm::InputTag hfHitsTag_
edm::InputTag isolTrkTag_
edm::Handle< HFRecHitCollection > hfHits_
edm::Handle< std::vector< reco::CaloJet > > recoJets_
edm::InputTag trigResultsTag_
edm::InputTag triggerSummaryLabel_
edm::ESHandle< MagneticField > magField_
edm::Handle< trigger::TriggerEvent > trigEvt_
edm::ESHandle< CaloGeometry > caloGeom_
edm::Handle< reco::GsfElectronCollection > recoEles_
edm::Handle< edm::TriggerResults > trigResults_
edm::ESHandle< CaloTopology > caloTopology_
const T & get() const
Definition: EventSetup.h:55
edm::InputTag caloTowersTag_
edm::InputTag photonsTag_
edm::Handle< EcalRecHitCollection > eeRecHits_
edm::Handle< CaloTowerCollection > caloTowers_
edm::Handle< EcalRecHitCollection > ebRecHits_
static bool getHandle(const edm::Event &event, const edm::InputTag &tag, edm::Handle< T > &handle)
edm::InputTag ecalRecHitsEETag_
edm::Handle< reco::BeamSpot > beamSpot_
edm::InputTag hbheHitsTag_
edm::InputTag beamSpotTag_
int OffHelper::makeOffEvt ( const edm::Event edmEvent,
const edm::EventSetup setup,
egHLT::OffEvt offEvent 
)

Definition at line 141 of file EgHLTOffHelper.cc.

References egHLT::OffEvt::clear(), egHLT::OffEvt::eles(), fillOffEleVec(), fillOffPhoVec(), getHandles(), egHLT::OffEvt::phos(), recoJets_, egHLT::OffEvt::setJets(), and setTrigInfo().

Referenced by EgHLTOfflineSource::analyze().

142 {
143  offEvent.clear();
144  int errCode=0; //excution stops as soon as an error is flagged
145  if(errCode==0) errCode = getHandles(edmEvent,setup);
146  if(errCode==0) errCode = fillOffEleVec(offEvent.eles());
147  if(errCode==0) errCode = fillOffPhoVec(offEvent.phos());
148  if(errCode==0) errCode = setTrigInfo(edmEvent, offEvent);
149  if(errCode==0) offEvent.setJets(recoJets_);
150  return errCode;
151 }
int setTrigInfo(const edm::Event &edmEvent, egHLT::OffEvt &offEvent)
int fillOffPhoVec(std::vector< OffPho > &offPhos)
void clear()
Definition: EgHLTOffEvt.cc:5
edm::Handle< std::vector< reco::CaloJet > > recoJets_
const std::vector< OffPho > & phos() const
Definition: EgHLTOffEvt.h:47
void setJets(edm::Handle< std::vector< reco::CaloJet > > jets)
Definition: EgHLTOffEvt.h:55
const std::vector< OffEle > & eles() const
Definition: EgHLTOffEvt.h:45
int getHandles(const edm::Event &event, const edm::EventSetup &setup)
int fillOffEleVec(std::vector< OffEle > &offEles)
OffHelper& egHLT::OffHelper::operator= ( const OffHelper rhs)
inlineprivate

Definition at line 151 of file EgHLTOffHelper.h.

151 {return *this;}
int OffHelper::setTrigInfo ( const edm::Event edmEvent,
egHLT::OffEvt offEvent 
)

Definition at line 406 of file EgHLTOffHelper.cc.

References egHLT::OffEvt::eles(), egHLT::TrigCodes::getCode(), egHLT::trigTools::getFiltersPassed(), hltFiltersUsed_, hltFiltersUsedWithNrCandsCut_, hltTag_, l1PreAndSeedFilters_, l1PreScaledFilters_, l1PreScaledPaths_, egHLT::OffEvt::phos(), edm::Handle< T >::product(), egHLT::OffEvt::setEvtTrigBits(), egHLT::trigTools::setFiltersObjPasses(), findQualityFiles::size, trigEvt_, edm::TriggerNames::triggerIndex(), edm::Event::triggerNames(), and trigResults_.

Referenced by makeOffEvt().

407 {
409  //the l1 prescale paths dont have a filter with I can figure out if it passed or failed with so have to use TriggerResults
410  if(l1PreScaledPaths_.size()==l1PreScaledFilters_.size()){ //check to ensure both vectors have same number of events incase of screw ups
411  const edm::TriggerNames & triggerNames = edmEvent.triggerNames(*trigResults_);
412  for(size_t pathNr=0;pathNr<l1PreScaledPaths_.size();pathNr++){ //now we have to check the prescaled l1 trigger paths
413  unsigned int pathIndex = triggerNames.triggerIndex(l1PreScaledPaths_[pathNr]);
414  if(pathIndex<trigResults_->size() && trigResults_->accept(pathIndex)){
415  evtTrigBits |=TrigCodes::getCode(l1PreScaledFilters_[pathNr]);
416  }
417  }
418  }
419 
420  offEvent.setEvtTrigBits(evtTrigBits);
421 
424  return 0;
425 }
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:208
static TrigBitSet getCode(const std::string &descript)
TrigCodes::TrigBitSet getFiltersPassed(const std::vector< std::pair< std::string, int > > &filters, const trigger::TriggerEvent *trigEvt, const std::string &hltTag)
std::vector< std::string > l1PreScaledPaths_
std::vector< std::pair< std::string, std::string > > l1PreAndSeedFilters_
void setEvtTrigBits(TrigCodes::TrigBitSet bits)
Definition: EgHLTOffEvt.h:54
unsigned int triggerIndex(std::string const &name) const
Definition: TriggerNames.cc:32
std::vector< std::pair< std::string, int > > hltFiltersUsedWithNrCandsCut_
edm::Handle< trigger::TriggerEvent > trigEvt_
const std::vector< OffPho > & phos() const
Definition: EgHLTOffEvt.h:47
edm::Handle< edm::TriggerResults > trigResults_
T const * product() const
Definition: Handle.h:74
std::vector< std::string > l1PreScaledFilters_
const std::vector< OffEle > & eles() const
Definition: EgHLTOffEvt.h:45
std::vector< std::string > hltFiltersUsed_
std::string hltTag_
void setFiltersObjPasses(std::vector< T > &objs, const std::vector< std::string > &filters, const std::vector< std::pair< std::string, std::string > > &l1PreAndSeedFilters, const TrigCodes::TrigBitSet &evtTrigBits, const trigger::TriggerEvent *trigEvt, const std::string &hltTag)
tuple size
Write out results.
std::bitset< maxNrBits_ > TrigBitSet
void OffHelper::setup ( const edm::ParameterSet conf)

Definition at line 29 of file EgHLTOffHelper.cc.

References beamSpotTag_, calHLTEleTrkIsol_, calHLTEmIsol_, calHLTHcalIsol_, calHLTPhoTrkIsol_, caloJetsTag_, caloTowersTag_, ecalRecHitsEBTag_, ecalRecHitsEETag_, electronsTag_, eleCuts_, eleLooseCuts_, edm::ParameterSet::getParameter(), hbheHitsTag_, hfHitsTag_, hltEleTrkIsolAlgo_, hltEleTrkIsolInnerCone_, hltEleTrkIsolOuterCone_, hltEleTrkIsolPtMin_, hltEleTrkIsolRSpan_, hltEleTrkIsolZSpan_, hltEMIsolEMinEB_, hltEMIsolEMinEE_, hltEMIsolEtaSliceEB_, hltEMIsolEtaSliceEE_, hltEMIsolEtMinEB_, hltEMIsolEtMinEE_, hltEMIsolInnerConeEB_, hltEMIsolInnerConeEE_, hltEMIsolOuterCone_, hltHadIsolDepth_, hltHadIsolEtMin_, hltHadIsolInnerCone_, hltHadIsolOuterCone_, hltPhoTrkIsolAlgo_, hltPhoTrkIsolCountTrks_, hltPhoTrkIsolInnerCone_, hltPhoTrkIsolOuterCone_, hltPhoTrkIsolPtMin_, hltPhoTrkIsolRSpan_, hltPhoTrkIsolZSpan_, hltTag_, isolTrkTag_, phoCuts_, phoLooseCuts_, photonsTag_, egHLT::OffEgSel::setup(), trigCutParams_, triggerSummaryLabel_, and trigResultsTag_.

Referenced by EgHLTOfflineSource::EgHLTOfflineSource().

30 {
31 
32  ecalRecHitsEBTag_ = conf.getParameter<edm::InputTag>("BarrelRecHitCollection");
33  ecalRecHitsEETag_ = conf.getParameter<edm::InputTag>("EndcapRecHitCollection");
34  caloJetsTag_ = conf.getParameter<edm::InputTag>("CaloJetCollection");
35  isolTrkTag_ = conf.getParameter<edm::InputTag>("IsolTrackCollection");
36  hbheHitsTag_ = conf.getParameter<edm::InputTag>("HBHERecHitCollection");
37  hfHitsTag_ = conf.getParameter<edm::InputTag>("HFRecHitCollection");
38  electronsTag_ = conf.getParameter<edm::InputTag>("ElectronCollection");
39  photonsTag_ = conf.getParameter<edm::InputTag>("PhotonCollection");
40  triggerSummaryLabel_ = conf.getParameter<edm::InputTag>("triggerSummaryLabel");
41  hltTag_ = conf.getParameter<std::string>("hltTag");
42  beamSpotTag_ = conf.getParameter<edm::InputTag>("BeamSpotProducer");
43  caloTowersTag_ = conf.getParameter<edm::InputTag>("CaloTowers");
44  trigResultsTag_ = conf.getParameter<edm::InputTag>("TrigResults");
45 
46  eleCuts_.setup(conf.getParameter<edm::ParameterSet>("eleCuts"));
47  eleLooseCuts_.setup(conf.getParameter<edm::ParameterSet>("eleLooseCuts"));
48  phoCuts_.setup(conf.getParameter<edm::ParameterSet>("phoCuts"));
49  phoLooseCuts_.setup(conf.getParameter<edm::ParameterSet>("phoLooseCuts"));
50 
51  //now we have the isolations completely configurable via python
52  hltEMIsolOuterCone_ = conf.getParameter<double>("hltEMIsolOuterCone");
53  hltEMIsolInnerConeEB_ = conf.getParameter<double>("hltEMIsolInnerConeEB");
54  hltEMIsolEtaSliceEB_ = conf.getParameter<double>("hltEMIsolEtaSliceEB");
55  hltEMIsolEtMinEB_ = conf.getParameter<double>("hltEMIsolEtMinEB");
56  hltEMIsolEMinEB_ = conf.getParameter<double>("hltEMIsolEMinEB");
57  hltEMIsolInnerConeEE_ = conf.getParameter<double>("hltEMIsolInnerConeEE");
58  hltEMIsolEtaSliceEE_ = conf.getParameter<double>("hltEMIsolEtaSliceEE");
59  hltEMIsolEtMinEE_ = conf.getParameter<double>("hltEMIsolEtMinEE");
60  hltEMIsolEMinEE_ = conf.getParameter<double>("hltEMIsolEMinEE");
61 
62  hltPhoTrkIsolPtMin_ = conf.getParameter<double>("hltPhoTrkIsolPtMin");
63  hltPhoTrkIsolOuterCone_ = conf.getParameter<double>("hltPhoTrkIsolOuterCone");
64  hltPhoTrkIsolInnerCone_ = conf.getParameter<double>("hltPhoTrkIsolInnerCone");
65  hltPhoTrkIsolZSpan_ = conf.getParameter<double>("hltPhoTrkIsolZSpan");
66  hltPhoTrkIsolRSpan_ = conf.getParameter<double>("hltPhoTrkIsolZSpan");
67  hltPhoTrkIsolCountTrks_ = conf.getParameter<bool>("hltPhoTrkIsolCountTrks");
68 
69  hltEleTrkIsolPtMin_ = conf.getParameter<double>("hltEleTrkIsolPtMin");
70  hltEleTrkIsolOuterCone_ = conf.getParameter<double>("hltEleTrkIsolOuterCone");
71  hltEleTrkIsolInnerCone_ = conf.getParameter<double>("hltEleTrkIsolInnerCone");
72  hltEleTrkIsolZSpan_ = conf.getParameter<double>("hltEleTrkIsolZSpan");
73  hltEleTrkIsolRSpan_ = conf.getParameter<double>("hltEleTrkIsolZSpan");
74 
75  hltHadIsolOuterCone_ = conf.getParameter<double>("hltHadIsolOuterCone");
76  hltHadIsolInnerCone_ = conf.getParameter<double>("hltHadIsolInnerCone");
77  hltHadIsolEtMin_ = conf.getParameter<double>("hltHadIsolEtMin");
78  hltHadIsolDepth_ = conf.getParameter<int>("hltHadIsolDepth");
79 
80  calHLTHcalIsol_ = conf.getParameter<bool>("calHLTHcalIsol");
81  calHLTEmIsol_ = conf.getParameter<bool>("calHLTEmIsol");
82  calHLTEleTrkIsol_ = conf.getParameter<bool>("calHLTEleTrkIsol");
83  calHLTPhoTrkIsol_ = conf.getParameter<bool>("calHLTPhoTrkIsol");
84 
85  trigCutParams_ = conf.getParameter<std::vector<edm::ParameterSet> >("triggerCuts"); //setupTriggers used to be in this function but had to be moved due to HLTConfigChanges (has to be called beginRun) so we have to save this for later.
86 
87  hltEleTrkIsolAlgo_ = new EgammaHLTTrackIsolation(hltEleTrkIsolPtMin_,hltEleTrkIsolOuterCone_,hltEleTrkIsolZSpan_,hltEleTrkIsolRSpan_,hltEleTrkIsolInnerCone_);
88  hltPhoTrkIsolAlgo_ = new EgammaHLTTrackIsolation(hltPhoTrkIsolPtMin_,hltPhoTrkIsolOuterCone_,hltPhoTrkIsolZSpan_,hltPhoTrkIsolRSpan_,hltPhoTrkIsolInnerCone_);
89 
90 
91 }
T getParameter(std::string const &) const
double hltEMIsolEtaSliceEB_
edm::InputTag ecalRecHitsEBTag_
double hltPhoTrkIsolRSpan_
OffEgSel phoLooseCuts_
edm::InputTag caloJetsTag_
double hltEMIsolOuterCone_
OffEgSel eleLooseCuts_
EgammaHLTTrackIsolation * hltPhoTrkIsolAlgo_
double hltEleTrkIsolOuterCone_
double hltEMIsolInnerConeEE_
std::vector< edm::ParameterSet > trigCutParams_
double hltEleTrkIsolInnerCone_
double hltPhoTrkIsolPtMin_
double hltEleTrkIsolZSpan_
edm::InputTag electronsTag_
edm::InputTag hfHitsTag_
double hltHadIsolInnerCone_
edm::InputTag isolTrkTag_
void setup(const edm::ParameterSet &)
double hltPhoTrkIsolZSpan_
double hltEleTrkIsolRSpan_
double hltHadIsolOuterCone_
edm::InputTag trigResultsTag_
double hltEleTrkIsolPtMin_
edm::InputTag triggerSummaryLabel_
double hltPhoTrkIsolInnerCone_
double hltEMIsolEtaSliceEE_
double hltEMIsolInnerConeEB_
edm::InputTag caloTowersTag_
edm::InputTag photonsTag_
double hltPhoTrkIsolOuterCone_
EgammaHLTTrackIsolation * hltEleTrkIsolAlgo_
edm::InputTag ecalRecHitsEETag_
std::string hltTag_
edm::InputTag hbheHitsTag_
edm::InputTag beamSpotTag_
void OffHelper::setupTriggers ( const HLTConfigProvider config,
const std::vector< std::string > &  hltFiltersUsed 
)

Definition at line 95 of file EgHLTOffHelper.cc.

References spr::find(), egHLT::TrigCodes::getCode(), egHLT::trigTools::getL1SeedFilterOfPath(), egHLT::trigTools::getMinNrObjsRequiredByFilter(), hltFiltersUsed_, hltFiltersUsedWithNrCandsCut_, l1PreAndSeedFilters_, l1PreScaledFilters_, l1PreScaledPaths_, egHLT::trigTools::translateFiltersToPathNames(), trigCutParams_, and trigCuts_.

Referenced by EgHLTOfflineSource::beginRun().

96 {
97  hltFiltersUsed_ = hltFiltersUsed; //expensive but only do this once and faster ways could make things less clear
98  //now work out how many objects are requires to pass filter for it to accept
100  for(size_t filterNr=0;filterNr<hltFiltersUsed_.size();filterNr++){
102  }
103 
104  //now loading the cuts for every trigger into our vector which stores them
105  //only load cuts for triggers that are in hltFiltersUsed
106 
107  for(size_t trigNr=0;trigNr<trigCutParams_.size();trigNr++) {
108  std::string trigName = trigCutParams_[trigNr].getParameter<std::string>("trigName");
109  if(std::find(hltFiltersUsed_.begin(),hltFiltersUsed_.end(),trigName)!=hltFiltersUsed_.end()){ //perhaps I should sort hltFiltersUsed_....
110  trigCuts_.push_back(std::make_pair(TrigCodes::getCode(trigName),OffEgSel(trigCutParams_[trigNr])));
111  }
112  }
113  trigCutParams_.clear();//dont need it any more, get rid of it
114 
115  //to make my life difficult, the scaled l1 paths are special
116  //and arent stored in trigger event
117  //to I have to figure out the path, see if it passes
118  //and then hunt down the l1 seed filter and use that to match to the pho/ele
119  //matching on l1 seed filter is not enough as that will be passed for normal
120  //electron triggers even if pre-scale hasnt fired
121  l1PreScaledFilters_.clear();
122  l1PreScaledPaths_.clear();
123  l1PreAndSeedFilters_.clear();
124  for(size_t filterNr=0;filterNr<hltFiltersUsed_.size();filterNr++){
125  if(hltFiltersUsed_[filterNr].find("hltPreL1")==0){ //l1 prescaled path
126  l1PreScaledFilters_.push_back(hltFiltersUsed_[filterNr]);
127  }
128  }
129 
131  if(l1PreScaledPaths_.size()==l1PreScaledFilters_.size()){
132  for(size_t pathNr=0;pathNr<l1PreScaledPaths_.size();pathNr++){
133 
134  std::string l1SeedFilter =egHLT::trigTools::getL1SeedFilterOfPath(hltConfig,l1PreScaledPaths_[pathNr]);
135 
136  l1PreAndSeedFilters_.push_back(std::make_pair(l1PreScaledFilters_[pathNr],l1SeedFilter));
137  }
138  }
139 }
static TrigBitSet getCode(const std::string &descript)
std::vector< std::pair< TrigCodes::TrigBitSet, OffEgSel > > trigCuts_
int getMinNrObjsRequiredByFilter(const std::string &filterName)
std::vector< std::string > l1PreScaledPaths_
std::vector< std::pair< std::string, std::string > > l1PreAndSeedFilters_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
std::vector< edm::ParameterSet > trigCutParams_
std::string getL1SeedFilterOfPath(const HLTConfigProvider &hltConfig, const std::string &path)
std::vector< std::pair< std::string, int > > hltFiltersUsedWithNrCandsCut_
std::vector< std::string > l1PreScaledFilters_
std::vector< std::string > hltFiltersUsed_
void translateFiltersToPathNames(const HLTConfigProvider &hltConfig, const std::vector< std::string > &filters, std::vector< std::string > &paths)
const std::vector<std::pair<TrigCodes::TrigBitSet,OffEgSel> >& egHLT::OffHelper::trigCuts ( ) const
inline

Definition at line 180 of file EgHLTOffHelper.h.

References trigCuts_.

180 {return trigCuts_;}
std::vector< std::pair< TrigCodes::TrigBitSet, OffEgSel > > trigCuts_
const trigger::TriggerEvent* egHLT::OffHelper::trigEvt ( ) const
inline

Definition at line 179 of file EgHLTOffHelper.h.

References edm::Handle< T >::product(), and trigEvt_.

179 {return trigEvt_.product();}
edm::Handle< trigger::TriggerEvent > trigEvt_
T const * product() const
Definition: Handle.h:74

Member Data Documentation

edm::Handle<reco::BeamSpot> egHLT::OffHelper::beamSpot_
private

Definition at line 94 of file EgHLTOffHelper.h.

Referenced by fillHLTData(), and getHandles().

edm::InputTag egHLT::OffHelper::beamSpotTag_
private

Definition at line 75 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

bool egHLT::OffHelper::calHLTEleTrkIsol_
private

Definition at line 144 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

bool egHLT::OffHelper::calHLTEmIsol_
private

Definition at line 143 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

bool egHLT::OffHelper::calHLTHcalIsol_
private

Definition at line 142 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

bool egHLT::OffHelper::calHLTPhoTrkIsol_
private

Definition at line 145 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

edm::ESHandle<CaloGeometry> egHLT::OffHelper::caloGeom_
private

Definition at line 79 of file EgHLTOffHelper.h.

Referenced by fillClusShapeData(), fillIsolData(), and getHandles().

edm::InputTag egHLT::OffHelper::caloJetsTag_
private

Definition at line 68 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::ESHandle<CaloTopology> egHLT::OffHelper::caloTopology_
private

Definition at line 80 of file EgHLTOffHelper.h.

Referenced by fillClusShapeData(), and getHandles().

edm::Handle<CaloTowerCollection> egHLT::OffHelper::caloTowers_
private

Definition at line 95 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and getHandles().

edm::InputTag egHLT::OffHelper::caloTowersTag_
private

Definition at line 76 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::Handle<EcalRecHitCollection> egHLT::OffHelper::ebRecHits_
private

Definition at line 83 of file EgHLTOffHelper.h.

Referenced by fillClusShapeData(), fillIsolData(), and getHandles().

edm::InputTag egHLT::OffHelper::ecalRecHitsEBTag_
private

Definition at line 66 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::InputTag egHLT::OffHelper::ecalRecHitsEETag_
private

Definition at line 67 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::Handle<EcalRecHitCollection> egHLT::OffHelper::eeRecHits_
private

Definition at line 84 of file EgHLTOffHelper.h.

Referenced by fillClusShapeData(), fillIsolData(), and getHandles().

edm::InputTag egHLT::OffHelper::electronsTag_
private

Definition at line 73 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

OffEgSel egHLT::OffHelper::eleCuts_
private

Definition at line 59 of file EgHLTOffHelper.h.

Referenced by fillOffEleVec(), and setup().

OffEgSel egHLT::OffHelper::eleLooseCuts_
private

Definition at line 58 of file EgHLTOffHelper.h.

Referenced by fillOffEleVec(), and setup().

edm::Handle<HBHERecHitCollection> egHLT::OffHelper::hbheHits_
private

Definition at line 86 of file EgHLTOffHelper.h.

Referenced by getHandles().

edm::InputTag egHLT::OffHelper::hbheHitsTag_
private

Definition at line 70 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::Handle<HFRecHitCollection> egHLT::OffHelper::hfHits_
private

Definition at line 85 of file EgHLTOffHelper.h.

Referenced by getHandles().

edm::InputTag egHLT::OffHelper::hfHitsTag_
private

Definition at line 71 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

EgammaHLTTrackIsolation* egHLT::OffHelper::hltEleTrkIsolAlgo_
private

Definition at line 110 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), setup(), and ~OffHelper().

double egHLT::OffHelper::hltEleTrkIsolInnerCone_
private

Definition at line 133 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltEleTrkIsolOuterCone_
private

Definition at line 132 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltEleTrkIsolPtMin_
private

Definition at line 131 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltEleTrkIsolRSpan_
private

Definition at line 135 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltEleTrkIsolZSpan_
private

Definition at line 134 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltEMIsolEMinEB_
private

Definition at line 119 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolEMinEE_
private

Definition at line 123 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolEtaSliceEB_
private

Definition at line 117 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolEtaSliceEE_
private

Definition at line 121 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolEtMinEB_
private

Definition at line 118 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolEtMinEE_
private

Definition at line 122 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolInnerConeEB_
private

Definition at line 116 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolInnerConeEE_
private

Definition at line 120 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltEMIsolOuterCone_
private

Definition at line 115 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

std::vector<std::string> egHLT::OffHelper::hltFiltersUsed_
private

Definition at line 102 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setupTriggers().

std::vector<std::pair<std::string,int> > egHLT::OffHelper::hltFiltersUsedWithNrCandsCut_
private

Definition at line 103 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setupTriggers().

int egHLT::OffHelper::hltHadIsolDepth_
private

Definition at line 140 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltHadIsolEtMin_
private

Definition at line 139 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltHadIsolInnerCone_
private

Definition at line 138 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltHadIsolOuterCone_
private

Definition at line 137 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

EgammaHLTTrackIsolation* egHLT::OffHelper::hltPhoTrkIsolAlgo_
private

Definition at line 111 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), setup(), and ~OffHelper().

bool egHLT::OffHelper::hltPhoTrkIsolCountTrks_
private

Definition at line 130 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and setup().

double egHLT::OffHelper::hltPhoTrkIsolInnerCone_
private

Definition at line 127 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltPhoTrkIsolOuterCone_
private

Definition at line 126 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltPhoTrkIsolPtMin_
private

Definition at line 125 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltPhoTrkIsolRSpan_
private

Definition at line 129 of file EgHLTOffHelper.h.

Referenced by setup().

double egHLT::OffHelper::hltPhoTrkIsolZSpan_
private

Definition at line 128 of file EgHLTOffHelper.h.

Referenced by setup().

std::string egHLT::OffHelper::hltTag_
private

Definition at line 101 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setup().

edm::Handle<reco::TrackCollection> egHLT::OffHelper::isolTrks_
private

Definition at line 87 of file EgHLTOffHelper.h.

Referenced by fillIsolData(), and getHandles().

edm::InputTag egHLT::OffHelper::isolTrkTag_
private

Definition at line 69 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

std::vector<std::pair<std::string,std::string> > egHLT::OffHelper::l1PreAndSeedFilters_
private

Definition at line 104 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setupTriggers().

std::vector<std::string> egHLT::OffHelper::l1PreScaledFilters_
private

Definition at line 106 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setupTriggers().

std::vector<std::string> egHLT::OffHelper::l1PreScaledPaths_
private

Definition at line 105 of file EgHLTOffHelper.h.

Referenced by setTrigInfo(), and setupTriggers().

edm::ESHandle<MagneticField> egHLT::OffHelper::magField_
private

Definition at line 81 of file EgHLTOffHelper.h.

Referenced by getHandles().

OffEgSel egHLT::OffHelper::phoCuts_
private

Definition at line 61 of file EgHLTOffHelper.h.

Referenced by fillOffPhoVec(), and setup().

OffEgSel egHLT::OffHelper::phoLooseCuts_
private

Definition at line 60 of file EgHLTOffHelper.h.

Referenced by fillOffPhoVec(), and setup().

edm::InputTag egHLT::OffHelper::photonsTag_
private

Definition at line 74 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::Handle<reco::GsfElectronCollection> egHLT::OffHelper::recoEles_
private

Definition at line 91 of file EgHLTOffHelper.h.

Referenced by fillOffEleVec(), and getHandles().

edm::Handle<std::vector<reco::CaloJet> > egHLT::OffHelper::recoJets_
private

Definition at line 92 of file EgHLTOffHelper.h.

Referenced by getHandles(), and makeOffEvt().

edm::Handle<reco::PhotonCollection> egHLT::OffHelper::recoPhos_
private

Definition at line 90 of file EgHLTOffHelper.h.

Referenced by fillOffPhoVec(), and getHandles().

std::vector<edm::ParameterSet> egHLT::OffHelper::trigCutParams_
private

Definition at line 148 of file EgHLTOffHelper.h.

Referenced by setup(), and setupTriggers().

std::vector<std::pair<TrigCodes::TrigBitSet,OffEgSel> > egHLT::OffHelper::trigCuts_
private

Definition at line 63 of file EgHLTOffHelper.h.

Referenced by fillOffEleVec(), fillOffPhoVec(), setupTriggers(), and trigCuts().

edm::Handle<trigger::TriggerEvent> egHLT::OffHelper::trigEvt_
private

Definition at line 89 of file EgHLTOffHelper.h.

Referenced by getHandles(), setTrigInfo(), and trigEvt().

edm::InputTag egHLT::OffHelper::triggerSummaryLabel_
private

Definition at line 72 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().

edm::Handle<edm::TriggerResults> egHLT::OffHelper::trigResults_
private

Definition at line 97 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setTrigInfo().

edm::InputTag egHLT::OffHelper::trigResultsTag_
private

Definition at line 77 of file EgHLTOffHelper.h.

Referenced by getHandles(), and setup().