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