23 #include <Riostream.h>
33 #ifndef Gw_CubicFilter
49 #ifndef ROOT_TContextMenu
50 #include "TContextMenu.h"
65 #ifndef ROOT_TGraphErrors
66 #include "TGraphErrors.h"
89 #ifndef ROOT_TObjString
90 #include "TObjString.h"
101 #ifndef ROOT_TVirtualPad
102 #include "TVirtualPad.h"
106 #ifndef Gw_BaseNucleus
118 #ifndef Gw_LevelScheme
132 fCSManager(new
CSManager(Form(
"%s_%s",
"CSManager", levelScheme->GetName()),
133 Form(
"%s %s",
"CS Manager for", levelScheme->GetName())))
136 SetName(
"GLSPlayer");
138 fPathtoSaveLS =
"./";
156 TSeqCollection* listCanvas = gROOT->GetListOfCanvases();
158 TString name(GetName());
159 TCanvas* canvas = 0x0;
160 TIter next(listCanvas);
161 while ( (canvas = (TCanvas*)next()) ) {
162 if ( name.CompareTo(canvas->GetName()) == 0 ) {
169 canvas = gROOT->MakeDefCanvas();
170 canvas->SetName(GetName());
171 canvas->SetTitle(GetName());
174 if ( !canvas->HasConnection(
"ProcessedEvent(Int_t, Int_t, Int_t, TObject*)") )
178 if ( option.Contains(
"new") ) {
184 TVirtualPad* pad = TVirtualPad::Pad();
195 fAxis->SetWmax(ymax);
212 TObjString* sNucleus =
new TObjString(nucleus);
217 TString spin(opt), parity(
"+"); Ssiz_t parity_offset = spin.Length();
218 if ( !spin.Contains(
"+") ) {
219 if ( !spin.Contains(
"-") ) {
224 parity_offset = spin.Index(
"-");
229 parity_offset = spin.Index(
"+");
231 spin.Remove(parity_offset);
239 static Double_t deltaR = 0;
240 static Double_t delta = 0;
242 TVirtualPad* pad = TVirtualPad::Pad();
250 static Double_t xmin = 0;
251 static Double_t xmax = 0;
253 pad->GetRange(xRmin, yRmin, xRmax, yRmax);
258 deltaR = xRmax - xRmin;
262 pad->Range(xRmin, yRmin, xRmax, yRmax);
263 fAxis->SetLabelSize(0.03);
264 fLog <<
warning <<
"Adding new ground level to the same level scheme" <<
nline;
270 level->
SetX1((xmax+xmin-width)/2+delta*(nbNuclei-1)); level->
SetX2((xmax+xmin+width)/2+delta*(nbNuclei-1));
272 level->SetLineWidth(3);
276 if (parity.Contains(
"+")) {
279 if (parity.Contains(
"-")) {
282 if (parity.Contains(
"?")) {
292 label->SetX(0.55); label->SetY(0.95);
332 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
342 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
352 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
363 TString nameFile(path);
365 if ( nameFile.EndsWith(
".root") ) {
368 if ( nameFile.Sizeof() && !nameFile.EndsWith(
"/") )
370 nameFile += nameLS; nameFile +=
".root";
373 TSeqCollection* list = gROOT->GetListOfFiles();
375 if ( (file = (TFile*)list->FindObject(nameFile.Data())) ) {
376 file->ReOpen(
"UPDATE");
379 file =
new TFile(nameFile.Data(),
"UPDATE");
385 fLog <<
info << Form(
"Write level scheme in %s file", nameFile.Data()) <<
dolog;
404 for (Int_t i = 0; i < listCascade->GetEntries(); ++i) {
411 TVirtualPad* pad = TVirtualPad::Pad();
416 TSeqCollection* list = pad->GetListOfPrimitives();
437 TVirtualPad* pad = TVirtualPad::Pad();
439 TSeqCollection* list = pad->GetListOfPrimitives();
440 list->Remove(cLevel);
460 if (cCas->FindObject(cLink)){
476 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
504 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
540 TFile* fileIn =
new TFile(fileName,
"READ");
558 TMethod* m = Class()->GetMethod(
"DoProject",
"");
571 TMethod* m = Class()->GetMethod(
"AddLink",
"");
584 TMethod* m = Class()->GetMethod(
"AddLevel",
"");
597 TMethod* m = Class()->GetMethod(
"AddFirstLevel",
"");
603 fLog <<
error <<
"Cannot Popup AddFirstLevel dialog box" <<
dolog;
610 TMethod* m = Class()->GetMethod(
"AddGroundLevel",
"");
616 fLog <<
error <<
"Cannot Popup AddGroundLevel dialog box" <<
dolog;
623 TMethod* m = Class()->GetMethod(
"AddArrow",
"");
636 TMethod* m = Class()->GetMethod(
"AddText",
"");
649 TMethod* m = Class()->GetMethodWithPrototype(
"WriteLS",
"const char*,const char *,Int_t");
660 void GLSPlayer::AddLink(Float_t strength, Float_t errStrength, Float_t energy, Float_t errEnergy,
const Char_t* mult)
665 AddLinkOnTop(strength, energy, errStrength, errEnergy, mult);
669 fLog <<
error <<
"Ambigous selection, please re-select objects" <<
nline;
688 if (level1 == 0x0 || level2 == 0x0) {
689 fLog <<
error <<
"Selected levels are not nuclear levels" <<
dolog;
715 x1I = levelI->GetX1();
716 x2I = levelI->GetX2();
717 yI = levelI->GetY1();
719 x1F = levelF->GetX1();
720 x2F = levelF->GetX2();
721 yF = levelF->GetY1();
723 Float_t offsetX = (x2I - x1I)*0.02;
724 Float_t offsetY = (yI - yF)*0.01;
729 arrow->SetLineWidth(levelI->GetLineWidth());
730 arrow->SetArrowSize(0.02);
731 arrow->SetOption(opt);
736 arrow->SetLineWidth(levelI->GetLineWidth());
737 arrow->SetArrowSize(0.02);
738 arrow->SetOption(opt);
750 text->SetX(gPad->AbsPixeltoX(
GetLastX())); text->SetY(gPad->AbsPixeltoY(
GetLastY()));
772 Float_t y1IL, y2IL, y1c, y2c;
795 newLink->
SetIL(newLevel);
804 for (Int_t i = 0; i < list->GetEntries(); ++i) {
808 for (Int_t j = index; j < cas->GetEntries(); ++j) {
809 Link* link =
static_cast<Link*
> ( cas->At(j) );
813 link->
SetFL(newLevel);
815 levelI->
SetY1(levelI->GetY1()+energy); levelI->
SetY2(levelI->GetY2()+energy);
837 if (em.Length() > 2 && em.Length() < 1) {
838 fLog <<
warning <<
"Multipolarity of the link not readable set to E1" <<
dolog;
843 Float_t y1IL, y2IL, y;
851 x1c = level->GetX1();
853 x2c = level->GetX2();
874 if(level==0x0)
return;
900 newLink->
SetEM(em.Data());
906 errY1IL = TMath::Sqrt(errY1IL*errY1IL + errEnergy*errEnergy);
927 newLink->
SetIL(newLevel);
948 if (level1 == 0x0 || level2 == 0x0) {
949 fLog <<
error <<
"Selected levels are not nuclear levels" <<
dolog;
983 lambda = UShort_t(TMath::Abs(spin1-spin2)+0.5);
989 link.
SetEM(Form(
"%c%d", em, lambda));
1018 if (level1 == 0x0 || level2 == 0x0) {
1019 fLog <<
error <<
"Selected levels are not nuclear levels" <<
dolog;
1032 Float_t energyI = 0;
1033 Float_t energyF = 0;
1048 Float_t energy = energyI - energyF;
1057 newLink->
SetEM(mult);
1060 if (newLink->
IsE()) {
1061 fLog <<
warning << Form(
"Selection rule not valided, change multi-polarity from %s to E%d", mult, newLink->
GetLambda()) <<
nline;
1063 fLog <<
warning << Form(
"Selection rule not valided, change multi-polarity from %s to M%d", mult, newLink->
GetLambda()) <<
nline;
1067 newLink->
SetFL(levelF);
1068 newLink->
SetIL(levelI);
1091 Int_t idxFirstLink = 0;
1092 Double_t min = 9999999.;
1096 for (Int_t j = 0; j < cCas->GetEntries(); ++j) {
1097 link =
static_cast<Link*
> ( cCas->At(j) );
1101 level = link->
GetIL();
1103 if (level->GetY1() < min) {
1104 min = level->GetY1();
1109 level->
SetX1(level->GetX1()+mv);
1110 level->
SetX2(level->GetX2()+mv);
1113 if (extra->GetX1() == level->GetX2()-mv) {
1114 extra->SetX1(extra->GetX1()+mv);
1116 if (extra->GetX2() == level->GetX1()-mv) {
1117 extra->SetX2(extra->GetX2()+mv);
1126 link =
static_cast<Link*
> ( cCas->At(idxFirstLink) );
1127 level = link->
GetFL();
1129 level->
SetX1(level->GetX1()+mv);
1130 level->
SetX2(level->GetX2()+mv);
1137 name->SetX(name->GetX()+mv);
1158 TString spin(dJp), parity(
"+"); Ssiz_t parity_offset = spin.Length();
1159 if ( !spin.Contains(
"+") ) {
1160 if ( !spin.Contains(
"-") ) {
1165 parity_offset = spin.Index(
"-");
1170 parity_offset = spin.Index(
"+");
1172 spin.Remove(parity_offset);
1192 if (parity.Contains(
"+")) {
1195 if (parity.Contains(
"-")) {
1198 if (parity.Contains(
"?")) {
1212 const Char_t* jp, Option_t* opt)
1216 TString option(opt);
1224 TString spin(jp), parity(
"+"); Ssiz_t parity_offset = spin.Length();
1225 if ( !spin.Contains(
"+") ) {
1226 if ( !spin.Contains(
"-") ) {
1231 parity_offset = spin.Index(
"-");
1236 parity_offset = spin.Index(
"+");
1238 spin.Remove(parity_offset);
1257 min = link->
GetFL()->GetX1();
1258 max = link->
GetFL()->GetX2();
1266 if (level->GetX2() > max) max = level->GetX2();
1267 if (level->GetX1() <= min) min = level->GetX1();
1275 min = level->GetX1();
1276 max = level->GetX2();
1283 if (level->GetX2() > max) max = level->GetX2();
1284 if (level->GetX1() <= min) min = level->GetX1();
1294 if (option.Contains(
"left")) {
1296 x1 = limit-1.5*width;
1297 x2 = limit-0.5*width;
1299 if (option.Contains(
"right")) {
1301 x1 = limit+0.5*width;
1302 x2 = limit+1.5*width;
1304 if ( option.Contains(
"+") ) {
1308 x1 = limit-width/2.;
1309 x2 = limit+width/2.;
1312 for (Int_t i = 0; i < levels->GetEntries(); ++i) {
1313 Level* level =
static_cast<Level*
> ( levels->At(i) );
1314 if (option.Contains(
"left")) {
1315 if ( level->GetX1() >= limit) {
1316 level->
SetX1(level->GetX1()+width);
1317 level->
SetX2(level->GetX2()+width);
1320 if ( level->GetX1() <= limit) {
1321 level->
SetX1(level->GetX1()-width);
1322 level->
SetX2(level->GetX2()-width);
1328 for (Int_t i = 0; i < links->GetEntries(); ++i) {
1329 Link* link =
static_cast<Link*
> ( links->At(i) );
1330 if (option.Contains(
"left")) {
1331 if ( link->GetX()[1] >= limit) {
1335 if ( link->GetX()[1] <= limit) {
1342 for (Int_t i = 0; i < cascades->GetEntries(); ++i) {
1345 if (option.Contains(
"left")) {
1346 if ( name->GetX() >= limit) {
1347 name->SetX(name->GetX()+width);
1350 if ( name->GetX() <= limit)
1351 name->SetX(name->GetX()-width);
1365 if (parity.Contains(
"+")) {
1368 if (parity.Contains(
"-")) {
1371 if (parity.Contains(
"?")) {
1404 Double_t xRmin, xRmax, yRmin, yRmax;
1416 moy += (level->GetX1() + level->GetX2())/2.;
1425 if ( TVirtualPad::Pad() != 0 ) {
1426 TVirtualPad::Pad()->GetRange(xRmin, yRmin, xRmax, yRmax);
1457 Float_t x1i = link->GetX()[1];
1458 Float_t x2i = link->GetX()[5];
1461 for (Int_t i = 0; i < nLinks; ++i) {
1487 Float_t x1i = level->GetX1();
1488 Float_t x2i = level->GetX2();
1490 for (Int_t i = 1; i < nLevels; ++i) {
1496 for (Int_t i = 0; i < nLevels; ++i) {
1522 Int_t nEntries = cas->GetEntries();
1527 link =
static_cast<GammaLink*
> ( cas->At(0) );
1529 Float_t x1i = link->
GetFL()->GetX1();
1530 Float_t x2i = link->
GetFL()->GetX2();
1532 for (Int_t i = 0; i < nEntries; ++i) {
1533 link =
static_cast<GammaLink*
> ( cas->At(i) );
1539 link =
static_cast<GammaLink*
> ( cas->At(nEntries-1) );
1544 for (Int_t i = 0; i < nEntries; ++i) {
1545 link =
static_cast<GammaLink*
> ( cas->At(i) );
1567 TGraphErrors* gr = cas->
DoJ1();
1574 TString name(
"cObservables");
1575 TCanvas* hJ1 = (TCanvas*)gROOT->FindObject(name);
1580 hJ1 =
new TCanvas(name,
"J1",10,10,700,500);
1584 Int_t nPoints = gr->GetN();
1585 Double_t* y = gr->GetY();
1586 Double_t* dy = gr->GetEY();
1589 for (Int_t i = 0; i < nPoints; ++i) {
1594 Float_t max = TMath::MaxElement(nPoints, y)*1.2;
1595 Float_t min = TMath::MinElement(nPoints, y)*0.8;
1597 gr->SetMarkerColor(2);
1598 gr->SetMarkerStyle(20);
1600 gr->SetMinimum(min);
1601 gr->SetMaximum(max);
1603 gr->GetHistogram()->SetYTitle(
"#Jgothic^{(1)} (#hbar^{2}/MeV)");
1604 gr->GetHistogram()->SetXTitle(
"#omega (keV)");
1606 gr->GetHistogram()->SetTitleOffset(1.0,
"X");
1607 gr->GetHistogram()->SetTitleOffset(1.1,
"Y");
1608 gr->GetHistogram()->SetTitleSize(0.04,
"X");
1609 gr->GetHistogram()->SetTitleSize(0.04,
"Y");
1610 gr->GetXaxis()->SetLabelSize(0.04);
1611 gr->GetXaxis()->SetLabelOffset(0.01);
1612 gr->GetXaxis()->SetLabelSize(0.04);
1613 gr->GetYaxis()->SetLabelOffset(0.01);
1629 TGraphErrors* gr = cas->
DoJ2();
1636 TString name(
"cObservables");
1637 TCanvas* hJ2 = (TCanvas*)gROOT->FindObject(name);
1642 hJ2 =
new TCanvas(name,
"J2",10,10,700,500);
1646 Int_t nPoints = gr->GetN();
1647 Double_t* y = gr->GetY();
1648 Double_t* dy = gr->GetEY();
1651 for (Int_t i = 0; i < nPoints; ++i) {
1656 Float_t max = TMath::MaxElement(nPoints, y)*1.2;
1657 Float_t min = TMath::MinElement(nPoints, y)*0.8;
1659 gr->SetMarkerColor(2);
1660 gr->SetMarkerStyle(20);
1662 gr->SetMinimum(min);
1663 gr->SetMaximum(max);
1665 gr->GetHistogram()->SetYTitle(
"#Jgothic^{(2)} (#hbar^{2}/MeV)");
1666 gr->GetHistogram()->SetXTitle(
"#omega (keV)");
1668 gr->GetHistogram()->SetTitleOffset(1.0,
"X");
1669 gr->GetHistogram()->SetTitleOffset(1.1,
"Y");
1670 gr->GetHistogram()->SetTitleSize(0.04,
"X");
1671 gr->GetHistogram()->SetTitleSize(0.04,
"Y");
1672 gr->GetXaxis()->SetLabelSize(0.04);
1673 gr->GetXaxis()->SetLabelOffset(0.01);
1674 gr->GetXaxis()->SetLabelSize(0.04);
1675 gr->GetYaxis()->SetLabelOffset(0.01);
1695 TVirtualPad* pad = 0x0;
1699 Int_t entries = fCSManager->
GetRegCSList()->GetEntries();
1700 TVirtualPad* cpad = 0x0;
1702 for (Int_t i = 0; i < entries; ++i) {
1706 TIter next(cpad->GetListOfPrimitives());
1707 while ( (obj = next()) ) {
1708 if ( obj->InheritsFrom(
"TH1") )
1722 for (Int_t i = 0; i < nLinks; ++i) {
1773 Color_t pal[] = {plus, minus, unknown, selected};
1783 Color_t pal[] = {known, tentative};
1799 Color_t pal[] = {def, selected};
1808 for (Int_t i = 0; i <
GetLinkList().GetSize(); ++i) {
virtual void AddGroundLevel(Int_t z=66, Int_t a=152, Option_t *opt="0/1+", Float_t energy=0, Float_t errEnergy=1)
Add ground state level.
virtual Data_T GetError() const
return the error on the measured value
virtual void PopupAddArrow()
Popup AddArrow menu.
virtual void DeSelected()
unselected link
TContextMenu * fContextMenu
static Color_t GetDefaultColor(EDefaultColor d)
virtual void AlignLinks()
Align selected links on level posistions in X.
void SetY2(Double_t y2)
Set Y2.
virtual bool IsM() const
true if this transition is magnetic
void SetCCascade(Cascade *cascade)
set current cascade
virtual void Project(Option_t *axis="x")
Project with CSManger.
virtual void DeSelected()
unselected link
static void SetDefaultLabelSize(Float_t size)
static Style_t GetDefaultStyle(EDefaultStyle d)
virtual TList * FindCLinkInCascade() const
Find the cascades that own the currengt link.
virtual void AddLink(Float_t strength=100, Float_t errStrength=1, Float_t energy=300, Float_t errEnergy=1, const Char_t *mult="E2")
Add link with selected link/level.
TGraphErrors * DoJ2() const
Compute J2.
virtual void SetLineColorPeak(Color_t color)
A cascade is a list of links.
virtual Bool_t IsSelected()
return selection
virtual void Set(Data_T data)
set the measure and its error (default err=0)
virtual void SetCascadeColorPalette(Color_t def, Color_t selected)
set color palette for level
virtual void AddArrow(Option_t *opt="|>")
Add arrows to the LS between two selected levels.
void Set(Int_t n, Int_t d=1)
To set the spin.
virtual void AddLinkBetween(Float_t strength=10, Float_t energy=300, Float_t errStrength=1, Float_t errEnergy=1)
Add gamma link on the top of any selected link (under progress)
virtual void Draw(Option_t *opt="")
to draw this level scheme
virtual void DoProject(Option_t *axis="x", Option_t *gateName="Gate", Option_t *optFilter="reset", Option_t *optDraw="")
Make gate, project and drawing.
LogMessage & error(LogMessage &)
static void SetStylePalette(Style_t *pal)
static const char * WhichSymbol(Int_t Z)
return the symbol corresponding to Z if the nucleus is found in the correspondence table ...
LogMessage & warning(LogMessage &)
virtual const Char_t * GetName() const
to get only the cascade's name
static void SetColorPalette(Color_t *pal)
virtual void AlignCascade()
Align selected cascade's levels/links respect to the first selected in X.
header file for all type of CSManager
virtual EDefaultStyle GetDefaultStyle()
return default style
virtual void InsertLink(Measure< Float_t > strength)
insert a gamma link between two seleted levels
virtual void MakeCascade(const Char_t *label="New")
Make Cascade from selected links.
void SetCLevel(Level *level)
set current level
const Cascade * GetCCascade()
get current cascade
virtual void AddLinkToCascade()
Add existing link to cascade.
virtual void SetName(const Char_t *name)
set level scheme name.
void Register(CorrelatedSpace *cs)
Add correlated space.
static void SetDefaultLabelSize(Float_t size)
Cascade * fSelectedLevels
pointer to the selected links
virtual EDefaultColor GetDefaultColor()
return default color
virtual void SetLinkLabelsColor(Color_t color)
Set label color for levels.
Level * GetCurrentLevel()
Float_t Get() const
To get the spin as a float.
virtual void DeSelected()
unselected link
virtual Level * GetIL()
to get the initial level
virtual void DeSelect()
Deselect all objects.
LogMessage & nline(LogMessage &)
virtual void SetLevelStylePalette(Color_t known, Color_t tentative)
set style palette for level
CSManager correlated spaces manager.
A spin is defined by two integers: a numerator and a denominator.
virtual void AddFirstLevel(Float_t energy=300, Float_t errEnergy=1, const Char_t *jp="0+", Option_t *opt="left")
Add first level to a new cascade beside the current cascade.
static PeakCreator * AddPeakCreator(TVirtualPad *pad=0x0)
add a peak creator to the given pad. Current pad if argument is 0x0
virtual Level * GetFL()
to get the final level
virtual void Selected()
Selected link.
virtual void DrawProj(Option_t *opt="")
Draw projection.
static Float_t GetXMin(Float_t xRmin, Float_t xRmax)
Get size from range.
virtual void SetDefaultLabels()
Set default labels.
virtual void PopupWriteLS()
Popup write LS menu.
Most of the methods relies on graphical approach for level scheme.
Color_t fCColorSelectedLink
This class discribes a specific quantum number: the parity.
virtual void MoveCascade(Float_t mv=200, Bool_t lastLevel=true)
Move all levels/link (extra line) from a casacde (excluded last level if lastLevel = false) ...
virtual void SetEM(const char *em="E2")
to set the multipolarity
virtual void SetPoints()
to set points from the levels and the Strength
A link between two levels.
static Float_t * GetDefaultSize()
Get default size.
virtual void SetLevelLabelsColor(Color_t color)
Set label color for levels.
TList * fNucleiList
pointer to the selected levels
virtual void Select()
Select all objects.
Cascade * GetCurrentCascade()
virtual void PopupAddGroundLevel()
Popup AddGroundLevel menu.
static Float_t GetYRmin(Float_t ymin, Float_t ymax)
static void SetDefaultColor(Color_t color)
virtual Bool_t CheckPolarity(GammaLink &link)
Check multi-polarity.
const TList * GetRegCSList()
Get registred CS list.
virtual Data_T Get() const
get the value, can be overloaded
virtual void PopupAddText()
Popup AddText menu.
void Project(Option_t *axis)
Project.
LogMessage & info(LogMessage &)
manipulator to modify the LogMessage
virtual Int_t CollectGate(Option_t *opt="reset")
Collect gate on a histogram and add them to filter.
Parity & GetParity()
get the parity and modify it if it is needed
virtual void SetLevelVisLabel(const char *s="0000")
Set vis label for levels.
TArrow * NewArrow(Float_t x1, Float_t y1, Float_t x2, Float_t y2)
create new arrow
virtual void AddText(const Char_t *msg)
Add text to the LS at last mouse position.
Measure< Float_t > & GetEnergy()
virtual void SetLinkDefaultColor(Color_t col)
set color palette for link
virtual void ShowGate(Option_t *opt="gate")
Show gate on spectrum.
virtual void SetVisLabel(const char *)
Used to determine which label should be drawn.
static Float_t GetYRmax(Float_t ymin, Float_t ymax)
virtual void SetLinkVisLabel(const char *s="000")
Set vis label for levels.
virtual void Draw(Option_t *opt="")
To draw this level scheme.
static Float_t GetXRmax(Float_t xmin, Float_t xmax)
static Color_t GetDefaultColor()
virtual Bool_t HasExtraLine()
check if extra line
virtual void SetLevelColorPalette(Color_t plus, Color_t minus, Color_t unknown, Color_t selected)
set color palette for level
static void SetDefaultLabelColor(Color_t color)
LogMessage & dolog(LogMessage &)
const Char_t * GetString() const
To get the spin as a string.
virtual void PopupAddLevel()
Popup AddLevel menu.
bool IsParity(Parity::EParity) const
virtual void SetDefaultLabels()
Set default labels.
virtual Measure< Float_t > & GetEnergy()
to get/modify the gamma-ray energy and its error
virtual Bool_t IsSelected()
return selection
virtual void DrawProjTot(Option_t *opt="")
Draw projection total.
static Float_t GetXAxis(Float_t xmin, Float_t xmax)
Get position of axis in X.
virtual void SetLevelLabelsSize(Float_t size)
Set label size for levels.
static Bool_t IsvalideGateColor(Color_t co)
virtual void WriteLS(const char *nameLS, const char *path, Int_t write=TObject::kOverwrite)
Save level scheme.
Bool_t Connect(TCanvas *c=0x0)
Connect the Canvas to this to collect events.
void Set(Parity::EParity)
header file for a LevelScheme
static Float_t GetYLabels(Float_t ymin, Float_t ymax)
Get position of labels in Y.
virtual Bool_t IsSelected()
return selection
void DrawProj(Option_t *opt)
Draw projection.
virtual Measure< Float_t > & GetStrength()
to get the strength and modify it if it is needed
header file for a Cascade
virtual void PopupDoProject()
Popup DoProject menu.
virtual std::string & GetProcessName()
To get the Process name.
virtual void SetLabelColor(EDefaultColor color)
Set color label.
header file for a BaseNucleus
virtual void AddLevel(Float_t energy=300, Float_t errEnergy=1, const Char_t *dJp="0/1+")
Add new level to the current cascade.
virtual void SetX2(Double_t)
All labels are shifted when moving a level to another position.
virtual void SetY1(Double_t)
All labels are shifted when moving a level to another position.
void SetY1(Double_t y1)
Set Y1.
header file for a general 1D peak
virtual TLine & GetExtraLine()
Get extra line.
virtual void SetVisLabel(const char *)
Used to determine which label should be drawn.
virtual void AlignLevels()
Align selected levels respect to the first selected in X (does not affect the associated links) ...
static Float_t GetXRmin(Float_t xmin, Float_t xmax)
Get range from size.
virtual Level * SetFL(Level *final)
to change the final level - return the previous one
virtual void UpdateDrawingOptions()
update drawing options color/style
virtual void SetX1(Double_t)
All labels are shifted when moving a level to another position.
virtual void DeleteLevel()
Delete current level.
static void SetColorPalette(Color_t *pal)
Int_t CollectGate(Option_t *opt="reset")
Collect gates on spectra.
virtual void SetName(const Char_t *name)
to set only the cascade's name
Spin & GetSpin()
to get the spin and modify it if it is needed
virtual void SetLinkLabelsSize(Float_t size)
Set label size for levels.
virtual void DoJ1(Option_t *opt="AP") const
Do J1.
void DrawProjTot(Option_t *opt, Option_t *axis="x")
Draw total projection.
A graphical interface for placing schematic peak onto a 1D histogram with a given position...
virtual UShort_t GetLambda() const
returns the numeric part of the multipolarity
virtual void RegisterCS(const Char_t *fileName, const Char_t *name=CorrelatedSpace::GetDefaultName())
Register correlated space.
virtual void SetInfo(InfoData::EData)
to set some information about this data
void SetFilterBaseName(const Char_t *name)
Set Filter Base Name.
virtual void SetDrawAs(EDrawAs d)
Set drawing flag.
virtual void Selected()
Selected link.
virtual void AddLinkOnTop(Measure< Float_t > strength, Measure< Float_t > energy)
Add gamma link on the top of a band by selected a link or a link.
virtual void DoJ2(Option_t *opt="AP") const
Do J2.
A GammaLink binds two nuclear levels.
virtual void PopupAddLink()
Popup AddLink menu.
virtual void SetProcessMethod(const char *)
To set the current method.
LevelScheme * fLevelScheme
virtual TLatex & GetLatex(Option_t *opt="name")
to get and modify the displayed properties of name and type
virtual void SetY2(Double_t)
All labels are shifted when moving a level to another position.
virtual bool IsE() const
true if this transition is electric
TList * fSelectedCascades
pointer to the selected levels
void SetCLink(Link *link)
set current link
virtual Int_t CollectLinks(Option_t *o="")
Collect selected links.
TGraphErrors * DoJ1() const
Compute J1.
virtual void Selected()
Selected link.
virtual void DeleteLink()
Delete current link.
static Float_t GetXMax(Float_t xRmin, Float_t xRmax)
TLatex * NewText(const char *msg)
create new text
TVirtualPad * GetProjTotPad(Int_t idx)
Get pad of total projection spectrum for a given CS.
virtual void Draw(Option_t *opt="")
to draw this level scheme
BaseLSPlayer to work on level scheme.
virtual Level * SetIL(Level *initial)
to change the final level - return the previous one
virtual void SetError(Data_T derr)
set the error of this value
static Float_t GetDefaultWidth()
Get default width.
virtual BasePeak * CreatePeak(const TH1 *h, Double_t x, Option_t *opt="")
It creates a peak at position x for the 1D spectra.
static Float_t GetDefaultLabelSize()
static void SetDefaultLabelColor(Color_t color)
Data_T GetValue() const
get the value, cannot be overloaded
virtual void PopupAddFirstLevel()
Popup AddFirstLevel menu.
GLSPlayer(LevelScheme *levelScheme)
virtual Int_t GetLastX()
set/get fLastX/fLastY
Base class describing a general level.