File indexing completed on 2025-04-19 09:09:41
0001 #ifndef Analysis_Main_Analysis_Object_H
0002 #define Analysis_Main_Analysis_Object_H
0003
0004 #include "ATOOLS/Org/Getter_Function.H"
0005 #include "ATOOLS/Org/Scoped_Settings.H"
0006 #include "ATOOLS/Phys/Blob_List.H"
0007 #include <string>
0008
0009 namespace ATOOLS {
0010 class Scoped_Settings;
0011 }
0012
0013 namespace ANALYSIS {
0014
0015 class Primitive_Analysis;
0016
0017 struct Analysis_Key {
0018 Analysis_Key(ATOOLS::Scoped_Settings s, Primitive_Analysis* a):
0019 m_settings{s}, p_analysis{a}
0020 {}
0021 ATOOLS::Scoped_Settings m_settings;
0022 Primitive_Analysis *p_analysis;
0023 };
0024
0025 class Analysis_Object {
0026 public:
0027
0028 typedef ATOOLS::Getter_Function<Analysis_Object, Analysis_Key>
0029 Getter_Function;
0030
0031 protected:
0032
0033 Primitive_Analysis *p_ana;
0034
0035 std::string m_name;
0036 bool m_isobs, m_isdet;
0037
0038 public:
0039
0040 Analysis_Object();
0041
0042 virtual ~Analysis_Object();
0043
0044 virtual void Evaluate(const ATOOLS::Blob_List &blobs,
0045 double value,double ncount) = 0;
0046 virtual void EvaluateNLOcontrib(double weight, double ncount);
0047 virtual void EvaluateNLOevt();
0048
0049 virtual void Reset();
0050 virtual void Restore(double scale=1.0);
0051 virtual void EndEvaluation(double scale=1.0);
0052 virtual void Output(const std::string &pname);
0053
0054 virtual void Test(const int mode=0);
0055
0056 virtual Analysis_Object *GetCopy() const = 0;
0057
0058 virtual Analysis_Object &operator+=(const Analysis_Object &obj);
0059
0060 virtual void SetAnalysis(Primitive_Analysis *ana);
0061 virtual void SetName(const std::string &name);
0062
0063 inline Primitive_Analysis *Analysis() const { return p_ana; }
0064
0065 inline std::string Name() const { return m_name; }
0066
0067 inline bool IsObservable() const { return m_isobs; }
0068 inline bool IsDetector() const { return m_isdet; }
0069
0070 };
0071
0072 }
0073
0074 #endif