Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class Analysis_Object
0071 
0072 }// end of namespace ANALYSIS
0073 
0074 #endif