Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:42

0001 #ifndef Analysis_Triggers_Final_Selector_H
0002 #define Analysis_Triggers_Final_Selector_H
0003 
0004 
0005 #include "AddOns/Analysis/Main/Analysis_Object.H"
0006 #include "AddOns/Analysis/Triggers/Calorimeter_Cone.H"
0007 #include "AddOns/Analysis/Triggers/Kt_Algorithm.H"
0008 #include "AddOns/Analysis/Triggers/Durham_Algorithm.H"
0009 #include <vector>
0010 #include <memory>
0011 
0012 namespace ANALYSIS {
0013   struct Final_Selector_Data {
0014     bool   keep, ko;
0015     int    bf, min_n, max_n;
0016     double eta_min, eta_max, et_min, pt_min;
0017     double r_min, mass_min, mass_max, f;
0018     Final_Selector_Data(): 
0019       keep(true), ko(false), bf(true), min_n(-1), max_n(-1), 
0020       eta_min(0.), eta_max(0.), et_min(0.), pt_min(0.),
0021       r_min(0.), mass_min(-1.), mass_max(-1.), f(0.5) {}
0022     Final_Selector_Data(double _eta_min, double _eta_max, double _et_min, double _pt_min, 
0023             double _r_min, double _mass_min, double _mass_max): 
0024       keep(true), ko(false), bf(true), min_n(-1), max_n(-1),
0025       eta_min(_eta_min), eta_max(_eta_max), et_min(_et_min), pt_min(_pt_min),
0026       r_min(_r_min), mass_min(_mass_min), mass_max(_mass_max), f(0.5) {}
0027   };
0028 
0029 
0030   typedef std::map<ATOOLS::Flavour,Final_Selector_Data>                            Final_Data_Map;
0031   typedef std::map<std::pair<ATOOLS::Flavour,ATOOLS::Flavour>,Final_Selector_Data> Final_Correlator_Map;
0032   using Particle_Qualifier_Base_SP
0033     = std::shared_ptr<ATOOLS::Particle_Qualifier_Base>;
0034 
0035 
0036   class Final_Selector : public Analysis_Object {
0037   protected:
0038     Particle_Qualifier_Base_SP        p_qualifier;
0039     std::string                       m_inlistname, m_outlistname;
0040     bool                              m_ownlist, m_extract;
0041     int                               m_mode;
0042     Jet_Algorithm_Base              * p_jetalg;
0043     Final_Data_Map                    m_fmap;
0044     Final_Correlator_Map              m_cmap;
0045 
0046     bool   PtSelect(const ATOOLS::Vec4D &, double);
0047     bool   EtSelect(const ATOOLS::Vec4D &, double); 
0048     bool   EtaSelect(const ATOOLS::Vec4D &, double,double);
0049     bool   DeltaRSelect(const ATOOLS::Vec4D &,const ATOOLS::Vec4D &,double); 
0050     bool   MassSelect(const ATOOLS::Vec4D &,const ATOOLS::Vec4D &,double,double); 
0051     double DeltaR(const ATOOLS::Vec4D &,const ATOOLS::Vec4D &); 
0052     void   JetSelect(Particle_List * pl,const Flavour& jf);
0053 
0054     void   Select(ATOOLS::Particle_List *,Final_Data_Map::iterator);
0055     void   Select2(ATOOLS::Particle_List *,Final_Correlator_Map::iterator);
0056     void   SelectN(ATOOLS::Particle_List *,Final_Data_Map::iterator);   
0057     void   Extract(ATOOLS::Particle_List *); 
0058  public:
0059     Final_Selector(const std::string &,const std::string &);
0060     Final_Selector(const std::string &,const std::string &, int mode, 
0061                    Particle_Qualifier_Base_SP qualifier=nullptr);
0062 
0063     void AddSelector(const ATOOLS::Flavour &, const Final_Selector_Data &);
0064     void AddSelector(const ATOOLS::Flavour & ,const ATOOLS::Flavour &, const Final_Selector_Data &);
0065     void AddSelector(const ATOOLS::Flavour &, int, int);
0066     void AddSelector(const ATOOLS::Flavour &, const Final_Selector_Data &,
0067              Calorimeter_Cone * const);
0068 
0069     void AddKeepFlavour(const ATOOLS::Flavour &);
0070 
0071     void Evaluate(const ATOOLS::Blob_List &,double, double);
0072     void Output();
0073     Jet_Algorithm_Base * GetJetAlgorithm() { return  p_jetalg; }
0074 
0075     Analysis_Object * GetCopy() const;    
0076     ~Final_Selector();
0077     void SetAnalysis(Primitive_Analysis  * ana);
0078   };
0079 
0080   class Leading_Particle : public Analysis_Object {
0081   private:
0082     ATOOLS::Particle_Qualifier_Base * p_qualifier;
0083     std::string                       m_inlistname, m_outlistname;
0084     int                               m_mode;
0085   public:
0086     Leading_Particle(const std::string &,const std::string &);
0087     Leading_Particle(const std::string &,const std::string &, int mode, 
0088              ATOOLS::Particle_Qualifier_Base * const qualifier=NULL);
0089     ~Leading_Particle();
0090     Analysis_Object * GetCopy() const;    
0091     void Evaluate(const ATOOLS::Blob_List &,double, double);
0092     void Output();
0093   };
0094 }
0095 
0096 #endif