Back to home page

EIC code displayed by LXR

 
 

    


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     // constructors
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     // destructor
0044     virtual ~Primitive_Observable_Base();
0045 
0046     // member functions
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   };// end of class Primitive_Observable_Base
0079 
0080   // --- inline functions ---
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 }// end of namespace ANALYSIS
0089 
0090 #endif