Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:25

0001 #ifndef PYTHIAHEPMCFILTERGAMMAGAMMA_h
0002 #define PYTHIAHEPMCFILTERGAMMAGAMMA_h
0003 
0004 //
0005 // Package:    GeneratorInterface/GenFilters
0006 // Class:      PythiaHepMCFilterGammaGamma
0007 //
0008 // Original Author:  Matteo Sani
0009 //
0010 //
0011 
0012 #include "FWCore/Framework/interface/Frameworkfwd.h"
0013 #include "GeneratorInterface/Core/interface/BaseHepMCFilter.h"
0014 
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/Framework/interface/MakerMacros.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 
0019 namespace edm {
0020   class HepMCProduct;
0021 }
0022 
0023 class PythiaHepMCFilterGammaGamma : public BaseHepMCFilter {
0024 public:
0025   explicit PythiaHepMCFilterGammaGamma(const edm::ParameterSet&);
0026   ~PythiaHepMCFilterGammaGamma() override;
0027 
0028   /** @return true if this GenEvent passes the double EM enrichment
0029       criterion */
0030   bool filter(const HepMC::GenEvent* myGenEvent) override;
0031 
0032 private:
0033   const edm::EDGetTokenT<edm::HepMCProduct> token_;
0034 
0035   //----------
0036   // filter parameters
0037   //----------
0038 
0039   /** minimum pt and maximum absolute eta for electron and photon seeds */
0040   const double ptSeedThr, etaSeedThr;
0041 
0042   /** minimum pt and maximum absolute eta for photons to be added
0043       to seeds to form candidates (see also ptElThr, etaElThr) */
0044   const double ptGammaThr, etaGammaThr;
0045 
0046   /** minimum pt and maximum absolute eta for charged (stable) particles
0047       to be counted in the isolation cone */
0048   const double ptTkThr, etaTkThr;
0049 
0050   /** minimum pt and maximum absolute eta for electrons to be added
0051       to seeds to form candidates (see also ptGammaThr, etaGammaThr) */
0052   const double ptElThr, etaElThr;
0053 
0054   /** delta R of cone around candidates in which charged tracks are counted */
0055   const double dRTkMax;
0056 
0057   /** delta R of cone around seeds in which other electrons/photons are
0058       added to seeds to form candidates */
0059   const double dRSeedMax;
0060 
0061   /** maximum difference in phi and eta for which other electrons/photons
0062       are added to seeds to form candidates.
0063 
0064       Note that electrons/photons are accepted if they are within the cone
0065       specified by dRSeedMax or if they are within the rectangular region
0066       specified by (dPhiSeedMax, dEtaSeedMax). */
0067   const double dPhiSeedMax, dEtaSeedMax;
0068 
0069   /** this parameter is effectively unused */
0070   const double dRNarrowCone;
0071 
0072   /** minimum pt for leading and subleading candidate */
0073   const double pTMinCandidate1, pTMinCandidate2;
0074 
0075   /** maximum absolute eta for candidates */
0076   const double etaMaxCandidate;
0077 
0078   /** invariant mass range for mass of a pair of candidates */
0079   const double invMassMin, invMassMax;
0080 
0081   /** minimum energy for both candidates */
0082   const double energyCut;
0083 
0084   /** maximum number of charged particles in the isolation cone
0085       around each candidate */
0086   const int nTkConeMax;
0087 
0088   /** maximum number of charged particles summed over both
0089       cones of a pair of candidates */
0090   const int nTkConeSum;
0091 
0092   /** if true, prompt seeds (electrons/photons with no mother
0093       or only ancestors of the same type) will be considered
0094       as having zero charged tracks in the isolation cone */
0095   const bool acceptPrompts;
0096 
0097   /** minimum pt for prompt seed particles to be considered (only
0098       effective if acceptPrompts is true) */
0099   const double promptPtThreshold;
0100 };
0101 #endif