#ifndef CXLevelSchemePlayer_H #define CXLevelSchemePlayer_H #include "TNamed.h" #include "TLatex.h" #include "GammaLink.h" #include "LevelScheme.h" #include "NuclearLevel.h" #include "CXNucleus.h" #include "CXBashColor.h" using namespace Gw; class CXMainWindow; class CXGuiLSPlayer; class TH1; class CXLevelSchemePlayer : public TNamed { private: CXMainWindow *fMainWindow = nullptr; CXGuiLSPlayer *fGuiLSPlayer = nullptr; TString fExpDataDir; TString fENSDFDataDir; CXBashColor *fBashColor = nullptr; Int_t fMinStrenght; Int_t fMaxStrenght; Int_t fMinSpin; Int_t fMaxSpin; Float_t fRangeXMin; Float_t fRangeXMax; map fYrastEnergies; Float_t fMinELevel; Float_t fMaxELevel; Float_t fMinLifeTime; Float_t fMaxLifeTime; TH1 *fCurrentHist = nullptr; Color_t fColorWheel[48]; Color_t fCurrentColor; TList *fListOfArrows = nullptr; TList *fListOfLatex = nullptr; TList *fListOfBoxes = nullptr; TList *fListOfCXArrows = nullptr; TList *fListOfDatabase = nullptr; Bool_t fCanReplot; Bool_t fLevelDraw; public: CXLevelSchemePlayer(const char* name="", const char *title=""); virtual ~CXLevelSchemePlayer(); void SetMainWindow(CXMainWindow *w){fMainWindow = w;} void SetGuiLSPlayer(CXGuiLSPlayer *player){fGuiLSPlayer = player;} void CleanArrows(); LevelScheme *DrawArrows(TString ListOfNuclei, TH1 *h, TString DataSet); LevelScheme *DrawArrowsForNuc(TString NucName, TString DataSet); Bool_t CanReplot(){return fCanReplot;} LevelScheme *ImportExpData(const char *NucSymbol); LevelScheme *ImportENSDFData(const char *NucSymbol, bool quietmode=false,TString dataset="", bool graphical=false); void ProcessedEventLevelScheme(Int_t eventType, Int_t eventX, Int_t eventY, TObject*obj); void RemoveArrow(Int_t ArrowIndex); void PlotLevelScheme(TString NucName, TString Type="ENSDF", TString DataSet="ADOPTED LEVELS, GAMMAS"); TString PrintNucleusLevels(Int_t Z, Int_t N, bool print = false); TString PrintNucleusLevels(LevelScheme *lev, TString NucName, bool print = false); TString PrintNucleusGammas(Int_t Z, Int_t N, bool print = false); TString PrintNucleusGammas(LevelScheme *lev, TString NucName, bool print = false); LevelScheme *GetLevelScheme(TString Symb, bool print = false, TString dataset=""); TString GetLTString(Float_t LifeTime); private: void DrawArrow(TH1 *hist, const Gw::GammaLink *gamma, CXNucleus Nuc, TString DataType); void ConnectCanvas(); void CalcYrast(LevelScheme *lev); TString GetSpinFromLev(NuclearLevel *nuclev); NuclearLevel *GetLevel(NuclearLevel *nuclev, LevelScheme *ls); void DrawLink(LevelScheme *ls, GammaLink *gammalink); void ShiftLink(GammaLink *link,Float_t XShift); void GetLimits(GammaLink *link, Float_t &xmin,Float_t &xmax,Float_t &ymin,Float_t &ymax); void ResizeNucLev(NuclearLevel *nuclev,Float_t width); ClassDef(CXLevelSchemePlayer,0) }; #endif // CXLevelSchemePlayer_H