Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef Analysis_Observables_Event_Shapes_EE_H
0002 #define Analysis_Observables_Event_Shapes_EE_H
0003 
0004 #include "AddOns/Analysis/Triggers/Final_Selector.H"
0005 #include "ATOOLS/Math/Vector.H"
0006 #include "ATOOLS/Math/Matrix.H"
0007 
0008 namespace ANALYSIS {
0009 
0010   struct Event_Shape_EE_Data {
0011     friend std::ostream& operator<<( std::ostream&, const Event_Shape_EE_Data &);
0012     double        thrust, major, minor, oblateness;
0013     ATOOLS::Vec3D thrustaxis,majoraxis,minoraxis;
0014     Event_Shape_EE_Data(double thru,double m1,double m2,double oblate,
0015             ATOOLS::Vec3D ta,ATOOLS::Vec3D m1a,ATOOLS::Vec3D m2a);
0016   };
0017 
0018   class Event_Shapes_EE : public Final_Selector {
0019   private:
0020     unsigned int                      m_startaxes,m_maxidentaxes;
0021     double                            m_accuracy;
0022     std::string                       m_key;
0023     std::vector<ATOOLS::Vec3D>        m_vectors, m_vectors_save;
0024 
0025     void          Select(const ATOOLS::Particle_List &,double=1.,double ncount=1);
0026     void          CalculateLinears();
0027 
0028     void          RotateMoms(std::vector<ATOOLS::Vec3D> &,const ATOOLS::Vec3D &);
0029     ATOOLS::Vec3D NewAxis(const std::vector<ATOOLS::Vec3D> &,const ATOOLS::Vec3D &);
0030     double        CalculateThrust(const std::vector<ATOOLS::Vec3D> &,const ATOOLS::Vec3D &);
0031     double        SumP(const std::vector<ATOOLS::Vec3D> &);
0032     double        SumNP(const std::vector<ATOOLS::Vec3D> &,const ATOOLS::Vec3D &);
0033     unsigned int  ipow(int,int);
0034   protected:
0035     ATOOLS::Vec3D m_thrustaxis,m_majoraxis,m_minoraxis;
0036     double        m_thrust,m_major,m_minor,m_oblateness;
0037     double        m_cparameter, m_dparameter;
0038   public:
0039     Event_Shapes_EE(const std::string & inlistname,
0040             const std::string & outlistname,
0041             std::shared_ptr<ATOOLS::Particle_Qualifier_Base> const);
0042     void Evaluate(const ATOOLS::Blob_List &,double=1.,double ncount=1);
0043     void Evaluate(const ATOOLS::Particle_List &,double=1.,double ncount=1);
0044     Analysis_Object * GetCopy() const;
0045 
0046     double        Thrust()     { return m_thrust;     }
0047     double        Major()      { return m_major;      }
0048     double        Minor()      { return m_minor;      }
0049     double        Oblateness() { return m_oblateness; }
0050     ATOOLS::Vec3D ThrustAxis() { return m_thrustaxis; }
0051     ATOOLS::Vec3D MajorAxis()  { return m_majoraxis;  }
0052     ATOOLS::Vec3D MinorAxis()  { return m_minoraxis;  }
0053   };
0054 }
0055 
0056 #endif