#include "AddOns/Analysis/Observables/Primitive_Observable_Base.H" #include "ATOOLS/Org/MyStrStream.H" #include "ATOOLS/Org/Exception.H" #include "ATOOLS/Org/Scoped_Settings.H" using namespace ANALYSIS; using namespace ATOOLS; namespace ANALYSIS { class Blobdata : public Primitive_Observable_Base { std::string m_datakey; public: Blobdata(const std::string& datakey, int type, double xmin, double xmax, int nbins) : Primitive_Observable_Base(type, xmin, xmax, nbins), m_datakey(datakey) { m_name="Blobdata_"+m_datakey+".dat"; } ~Blobdata() { } void Evaluate(const ATOOLS::Blob_List & blobs, double weight, double ncount) { if (m_datakey=="") return; Blob *signal(blobs.FindFirst(btp::Signal_Process)); if (signal) { Blob_Data_Base *facscale((*signal)[m_datakey]); if (facscale) { p_histo->Insert(sqrt(facscale->Get()), weight, ncount); } else PRINT_INFO("Key "<::operator()(const Analysis_Key &key) const { Scoped_Settings s{ key.m_settings }; const auto parameters = s.SetDefault({}).GetVector(); if (parameters.size()<5) return NULL; return new Blobdata(parameters[4], HistogramType(parameters[3]), s.Interprete(parameters[0]), s.Interprete(parameters[1]), s.Interprete(parameters[2])); } void ATOOLS::Getter::PrintInfo(std::ostream &str,const size_t width) const { str<<"e.g. [Blobdata, 0.0, 500.0, 50, LinErr, Factorisation_Scale]"; }