#ifndef ANALYSIS_IVANALYZER_HXX #define ANALYSIS_IVANALYZER_HXX #include "IBeamlineCoordinates.hxx" #include "IHistoListo.hxx" #include #include namespace COMET{ class IVAnalyzer; } class TGeoNode; class COMET::IVAnalyzer{ public: IVAnalyzer(const std::string& name, bool useBeamline=false); virtual ~IVAnalyzer(); void SetOutputDirectory(TDirectory* dir){ if(fAllHists) fAllHists->SetDirectory(fOutput); fOutput=dir; } virtual bool Initialise(std::string name); virtual bool EventStart(){return true;} virtual bool Analyze(const IHandle data)=0; virtual bool EventEnd(){return true;} virtual bool Finalize(); static std::string GetTargetDatumClass(){return ""; } static std::string GetTargetDatumName(){return ""; } std::string GetName()const{return fName;} protected: void SetName(const std::string& val){ fName=val;} TDirectory* GetOutputDirectory()const{return fOutput;} const std::string& GetDatumName()const{return fDatumName;} void SetDatumName(const std::string& datum){ fDatumName=datum;} const COMET::IHistoListo& GetHistoListo()const{return *fAllHists;} void AddHistogram(COMET::IVHistogram* hist, bool force_directory=false){ fAllHists->Add(hist,force_directory); } const COMET::IVHistogram* GetHist(const std::string& hist,bool complain=false)const{ return fAllHists->GetHist(hist,complain); } COMET::IVHistogram* GetHist(const std::string& hist,bool complain=false){ return fAllHists->GetHist(hist,complain); } template const T* GetHistAs(std::string name, bool complain=false)const{ return fAllHists->GetHistAs(name,complain); } template T* GetHistAs(std::string name, bool complain=false){ return fAllHists->GetHistAs(name,complain); } double ConvertGlobalToBeamlineAxis(const TVector3& globalPos)const; const COMET::IBeamlineCoordinates& Beamline()const{return fBeamlineCoords;} bool UseBeamline()const{return fUseBeamline;} virtual bool SetupHistograms()=0; virtual bool FinalizeHistograms(){return true;} protected: static const double kInvalidPoint; private: TDirectory* fOutput; std::string fDatumName; COMET::IHistoListo* fAllHists; std::string fName; COMET::IBeamlineCoordinates fBeamlineCoords; bool fUseBeamline; }; #endif // ANALYSIS_IVANALYZER_HXX