EMEnrichingFilterAlgo

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
#ifndef EMEnrichingFilterAlgo_h
#define EMEnrichingFilterAlgo_h

/** \class EMEnrichingFilter
 *
 *  EMEnrichingFilter 
 *
 * \author J Lamb, UCSB
 *
 ************************************************************/

#include "DataFormats/HepMCCandidate/interface/GenParticle.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Utilities/interface/ESGetToken.h"
#include "MagneticField/Engine/interface/MagneticField.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"

#include <vector>

class EMEnrichingFilterAlgo {
public:
  EMEnrichingFilterAlgo(const edm::ParameterSet &, edm::ConsumesCollector &&);

  bool filter(const edm::Event &iEvent, const edm::EventSetup &iSetup) const;

private:
  bool filterPhotonElectronSeed(float clusterthreshold,
                                float isoConeSize,
                                float hOverEMax,
                                float tkIsoMax,
                                float caloIsoMax,
                                bool requiretrackmatch,
                                const std::vector<reco::GenParticle> &genPars,
                                const std::vector<reco::GenParticle> &genParsCurved) const;

  std::vector<reco::GenParticle> applyBFieldCurv(const std::vector<reco::GenParticle> &genPars,
                                                 const edm::EventSetup &iSetup) const;
  bool filterIsoGenPar(float etmin,
                       float conesize,
                       const reco::GenParticleCollection &gph,
                       const reco::GenParticleCollection &gphCurved) const;
  float deltaRxyAtEE(const reco::GenParticle &gp1, const reco::GenParticle &gp2) const;

private:
  //constants
  const float FILTER_TKISOCUT_;
  const float FILTER_CALOISOCUT_;
  const float FILTER_ETA_MIN_;
  const float FILTER_ETA_MAX_;
  const float ECALBARRELMAXETA_;
  const float ECALBARRELRADIUS_;
  const float ECALENDCAPZ_;

  //parameters of the filter
  const float isoGenParETMin_;
  const float isoGenParConeSize_;
  const float clusterThreshold_;
  const float isoConeSize_;
  const float hOverEMax_;
  const float tkIsoMax_;
  const float caloIsoMax_;
  const bool requireTrackMatch_;

  const edm::EDGetTokenT<reco::GenParticleCollection> genParSourceToken_;
  const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magneticFieldToken_;
};
#endif