Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:11:20

0001 #ifndef FASTSIM_PARTICLEFILTER
0002 #define FASTSIM_PARTICLEFILTER
0003 
0004 #include "DataFormats/Math/interface/LorentzVector.h"
0005 #include <vector>
0006 
0007 ///////////////////////////////////////////////
0008 // Author: Patrick Janot
0009 // Date: 09 Dez 2003
0010 //
0011 // Revision: Class structure modified to match SimplifiedGeometryPropagator
0012 //           S. Kurz, 29 May 2017
0013 //////////////////////////////////////////////////////////
0014 
0015 namespace edm {
0016   class ParameterSet;
0017 }
0018 
0019 namespace fastsim {
0020   class Particle;
0021 
0022   //! (Kinematic) cuts on the particles that are propagated.
0023   /*!
0024         All other particles are skipped.
0025     */
0026   class ParticleFilter {
0027   public:
0028     //! Default Constructor.
0029     ParticleFilter(const edm::ParameterSet& cfg);
0030 
0031     //! Check all if all criteria are fullfilled.
0032     /*!
0033             - Particle is invisible (neutrinos by default, list can be extended)
0034             - Kinematic cuts (calls acceptsEN(...))
0035             - Vertex within tracker volume (calls acceptsVtx(...))
0036             \sa acceptsEn(const Particle & particle)
0037             \sa acceptsVtx(const math::XYZTLorentzVector & originVertexPosition)
0038         */
0039     bool accepts(const Particle& particle) const;
0040 
0041     //! Kinematic cuts on the particle
0042     bool acceptsEn(const Particle& particle) const;
0043 
0044     //! Vertex within tracker volume
0045     /*!
0046             \param originVertexPosition Position of origin vertex.
0047         */
0048     bool acceptsVtx(const math::XYZTLorentzVector& originVertexPosition) const;
0049 
0050   private:
0051     double chargedPtMin2_;            //!< Minimum pT^2 of a charged particle
0052     double EMin_;                     //!< Minimum energy of a particle
0053     double protonEMin_;               //!< Allow *ALL* protons with energy > protonEMin
0054     double cos2ThetaMax_;             //!< Particles must have abs(eta) < etaMax if close to beampipe
0055     double vertexRMax2_;              //!< Radius^2 of tracker volume
0056     double vertexZMax_;               //!< Z of tracker volume
0057     std::vector<int> skipParticles_;  //!< List of invisible particles (neutrinos are excluded by default)
0058   };
0059 }  // namespace fastsim
0060 
0061 #endif