File indexing completed on 2025-04-19 09:09:42
0001 #ifndef Analysis_Observables_Primitive_Observable_Base_H
0002 #define Analysis_Observables_Primitive_Observable_Base_H
0003
0004 #include "ATOOLS/Math/Vector.H"
0005 #include "ATOOLS/Phys/Flavour.H"
0006 #include "ATOOLS/Math/Histogram.H"
0007 #include "ATOOLS/Org/Getter_Function.H"
0008
0009 #include "ATOOLS/Phys/Particle_List.H"
0010 #include "AddOns/Analysis/Main/Analysis_Object.H"
0011
0012 namespace ANALYSIS {
0013
0014 int HistogramType(const std::string &scale);
0015
0016 class Primitive_Observable_Base: public Analysis_Object {
0017 public:
0018
0019 typedef ATOOLS::Getter_Function<Primitive_Observable_Base, Analysis_Key>
0020 Observable_Getter_Function;
0021
0022 protected:
0023
0024 int m_type, m_nbins;
0025 double m_xmin, m_xmax;
0026 std::string m_listname;
0027 ATOOLS::Histogram * p_histo;
0028 int m_nout;
0029 ATOOLS::Flavour * p_flavs;
0030 ATOOLS::Vec4D * p_moms;
0031 std::string m_blobtype;
0032 bool m_blobdisc, m_splitt_flag;
0033
0034 mutable bool m_copied;
0035
0036 public:
0037
0038
0039 Primitive_Observable_Base();
0040 Primitive_Observable_Base(int type,double xmin,double xmax,int nbins);
0041 Primitive_Observable_Base(const Primitive_Observable_Base & old);
0042
0043
0044 virtual ~Primitive_Observable_Base();
0045
0046
0047 virtual Primitive_Observable_Base *Copy() const = 0;
0048
0049 Analysis_Object *GetCopy() const;
0050
0051 virtual void Evaluate(int nout, const ATOOLS::Vec4D * moms,
0052 const ATOOLS::Flavour * flavs,
0053 double weight, double ncount);
0054 virtual void Evaluate(const ATOOLS::Particle_List & plist,
0055 double weight, double ncount);
0056 virtual void Evaluate(const ATOOLS::Blob_List & blobs, double value, double ncount);
0057
0058 virtual void EndEvaluation(double scale=1.);
0059 virtual void Reset();
0060 virtual void Restore(double scale=1.0);
0061 virtual void Output(const std::string & pname);
0062
0063 virtual void SetBlobType(const std::string & btype=std::string(""));
0064 virtual void SetAnalysis(Primitive_Analysis * ana);
0065
0066 virtual Primitive_Observable_Base & operator+=(const Primitive_Observable_Base & ob);
0067 virtual Analysis_Object & operator+=(const Analysis_Object & ob);
0068
0069 int Type() const;
0070 int Nbins() const;
0071 double Xmin() const;
0072 double Xmax() const;
0073 ATOOLS::Histogram * Histo() const;
0074 bool Splittable() const;
0075
0076 inline void SetName(const std::string &name) { m_name=name; }
0077
0078 };
0079
0080
0081 inline int Primitive_Observable_Base::Type() const { return m_type; }
0082 inline int Primitive_Observable_Base::Nbins() const { return m_nbins; }
0083 inline double Primitive_Observable_Base::Xmin() const { return m_xmin; }
0084 inline double Primitive_Observable_Base::Xmax() const { return m_xmax; }
0085
0086 inline ATOOLS::Histogram * Primitive_Observable_Base::Histo() const { return p_histo; }
0087 inline bool Primitive_Observable_Base::Splittable() const { return m_splitt_flag; }
0088 }
0089
0090 #endif