Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:19:30

0001 #ifndef PHPYTHIA8_PHPY8PARTICLETRIGGER_H
0002 #define PHPYTHIA8_PHPY8PARTICLETRIGGER_H
0003 
0004 #include "PHPy8GenTrigger.h"
0005 
0006 #include <string>
0007 #include <vector>  // for vector
0008 
0009 namespace Pythia8
0010 {
0011   class Pythia;
0012 }
0013 
0014 class PHPy8ParticleTrigger : public PHPy8GenTrigger
0015 {
0016  public:
0017   PHPy8ParticleTrigger(const std::string &name = "PHPy8ParticleTrigger");
0018   ~PHPy8ParticleTrigger() override;
0019 
0020   bool Apply(Pythia8::Pythia *pythia) override;
0021 
0022   void AddParticles(const std::string &particles);
0023   void AddParticles(int particle);
0024   void AddParticles(std::vector<int> particles);
0025 
0026   void AddParents(const std::string &parents);
0027   void AddParents(int parent);
0028   void AddParents(std::vector<int> parents);
0029 
0030   void SetPtHigh(double pt);
0031   void SetPtLow(double pt);
0032   void SetPtHighLow(double ptHigh, double ptLow);
0033 
0034   void SetPHigh(double p);
0035   void SetPLow(double p);
0036   void SetPHighLow(double pHigh, double pLow);
0037 
0038   //! rapidity cuts
0039   void SetYHigh(double Y);
0040   void SetYLow(double Y);
0041   void SetYHighLow(double YHigh, double YLow);
0042 
0043   void SetEtaHigh(double eta);
0044   void SetEtaLow(double eta);
0045   void SetEtaHighLow(double etaHigh, double etaLow);
0046 
0047   void SetAbsEtaHigh(double eta);
0048   void SetAbsEtaLow(double eta);
0049   void SetAbsEtaHighLow(double etaHigh, double etaLow);
0050 
0051   void SetPzHigh(double pz);
0052   void SetPzLow(double pz);
0053   void SetPzHighLow(double pzHigh, double pzLow);
0054 
0055   //! Whether to apply the criteria to unstable particles in the Pythia records too (default = true)
0056   void SetStableParticleOnly(bool b) { m_doStableParticleOnly = b; }
0057 
0058   void PrintConfig();
0059 
0060  private:
0061   std::vector<int> _theParents;
0062   std::vector<int> _theParticles;
0063 
0064   double _theYHigh{999.9};
0065   double _theYLow{999.9};
0066   double _theEtaHigh{999.9};
0067   double _theEtaLow{999.9};
0068   double _thePtHigh{999.9};
0069   double _thePtLow{999.9};
0070   double _thePHigh{999.9};
0071   double _thePLow{999.9};
0072   double _thePzHigh{999.9};
0073   double _thePzLow{999.9};
0074 
0075   bool _doYHighCut{false};
0076   bool _doYLowCut{false};
0077   bool _doBothYCut{false};
0078   bool _doEtaHighCut{false};
0079   bool _doEtaLowCut{false};
0080   bool _doBothEtaCut{false};
0081   bool _doAbsEtaHighCut{false};
0082   bool _doAbsEtaLowCut{false};
0083   bool _doBothAbsEtaCut{false};
0084   bool _doPtHighCut{false};
0085   bool _doPtLowCut{false};
0086   bool _doBothPtCut{false};
0087   bool _doPHighCut{false};
0088   bool _doPLowCut{false};
0089   bool _doBothPCut{false};
0090   bool _doPzHighCut{false};
0091   bool _doPzLowCut{false};
0092   bool _doBothPzCut{false};
0093 
0094   bool m_doStableParticleOnly = true;
0095 };
0096 
0097 #endif