GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RadLevelSchemeReader.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2004-2006 by Olivier Stezowski & Christian Finck *
3  * stezow(AT)ipnl.in2p3.fr, cfinck(AT)ires.in2p3.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
20 
23 #ifndef Gw_RadLevelSchemeReader
24 #include "RadLevelSchemeReader.h"
25 #endif
26 
27 // root include's
28 #ifndef ROOT_TString
29 #include <TString.h>
30 #endif
31 
32 #ifndef ROOT_TStyle
33 #include <TStyle.h>
34 #endif
35 
36 #ifndef ROOT_TObjArray
37 #include <TObjArray.h>
38 #endif
39 
40 #ifndef ROOT_TList
41 #include <TList.h>
42 #endif
43 
44 // gw include's
45 #ifndef GW_ENSDF_H
46 #include "ENSDF.h"
47 #endif
48 
49 #ifndef GW_LEVELSCHEME_H
50 #include "LevelScheme.h"
51 #endif
52 
53 #ifndef GW_NUCLEARLEVEL_H
54 #include "NuclearLevel.h"
55 #endif
56 
57 #ifndef GW_XGAMMALINK_H
58 #include "XGammaLink.h"
59 #endif
60 
61 
62 using namespace Gw;
63 
64 //__________________________________________________________
65 RadLevelSchemeReader::RadLevelSchemeReader(const char* filename, Option_t* opt)
66  : BaseLevelSchemeReader(filename, opt)
67 {
68  //Default Constructor
69  fLog.GetProcessName() = "RadLevelSchemeReader";
70 
71 }
72 
73 //__________________________________________________________
75 {
76 // default destructor
77 }
78 
79 
80 //__________________________________________________________
82 {
83 
84  static const UInt_t kMaxLengthLine = 120;
85 
86  // logger message
87  fLog.SetProcessMethod("Check()");
88 
89  // open file to read data.
90  FILE *file = fopen(fFileName.Data(),"r");
91  if ( file == NULL ) {
92  fLog << error << Form(" Cannot open file %s in LevelScheme::InitAGS \n", fFileName.Data()) << dolog;
93  return 0;
94  }
95 
96  // Initialisations from Radware
97  Int_t j, j1; Char_t line[kMaxLengthLine];
98 
99  Int_t z, nblevel, nbgamma, nbband, nbtext;
100  Float_t sizex, sizey, aspect_ratio, maxtan, maxdist,
101  cascadewidth, cascadesep, arroww, arrowl;
102 
103  Int_t band, flag, sflag, elflag;
104  Float_t e, de, dxl, dxr, sldx, sldy, eldx, eldy;
105 
106  Char_t eol, jpi[16], kay[16];
107 
108  Int_t li, lf, flg, elflg;
109  Float_t intensity, dintensity, branching, conv, mix, dconv, dmix, dbranching, x1, x2;//,lamba;
110  char em, clamba;
111 
112  // temporary collection to keep the numeric label associated in the AGS file
113  // with the gammas, the levels, the bands and the comments.
114  // if everything goes right, the four collections will be emptied in the corresponding TList
115  // in which the slot number is not necessary
116 
117 // TObjArray fBand, fLevel, fLink, fText;
118 // fBand.SetOwner(kTRUE); fLevel.SetOwner(kTRUE);
119 // fLink.SetOwner(kTRUE); fText.SetOwner(kTRUE);
120 
121  TString lab;
122  NuclearLevel *level; Cascade *cascade; GammaLink *gamma;
123 
124  // read some comments (first five lines of file)
125  // printf("Level Scheme File header:\n");
126  for (int j = 0; j < 5; ++j) {
127  fgets(line, kMaxLengthLine, file); // printf("%s", line);
128  }
129  fLog << info << Form(" ---> Reading file %s",fFileName.Data());
130  fgets(line, kMaxLengthLine, file);
131  if (strncmp(line, " ASCII GLS file format version 1.0", 34)) {
132  fLog << error << "Cannot read ASCII gls file" << dolog;
133  fclose(file);
134  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
135  return 0;
136  }
137  fgets(line, kMaxLengthLine, file);
138 
139  // read some global data
140  fgets(line, kMaxLengthLine, file);
141  if (sscanf(line, "%i%i%i%i%i%f%f%f",
142  &z,
143  &nblevel, &nbgamma, &nbband, &nbtext,
144  &sizex, &sizey, &aspect_ratio) != 8) {
145  fLog << error << "Cannot read ASCII gls file" << dolog;
146  fclose(file);
147  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
148  return 0;
149  }
150 
151  fLog << info << Form("\t %d levels, %d gammas and %d bands supposed to be in this level scheme \n",
152  nblevel,nbgamma,nbband) << nline;;
153  fLevel.Expand(nblevel);
154  fLink.Expand(nbgamma);
155  fBand.Expand(nbband);
156  fText.Expand(nbtext);
157 
158  // fName.SetTextSize(sizey); // default text size in LevelScheme's name
159 
160  fgets(line, kMaxLengthLine, file);
161  fgets(line, kMaxLengthLine, file);
162  if (sscanf(line, "%f%f%f%f%f%f",
163  &maxtan, &maxdist,
164  &cascadewidth, &cascadesep,
165  &arroww, &arrowl) != 6) {
166  fLog << error << "Cannot read ASCII gls file" << dolog;
167  fclose(file);
168  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
169  return 0;
170  }
171 
172  // fLevelL.SetLineWidth();
173 
174  fgets(line, kMaxLengthLine, file);
175  fgets(line, kMaxLengthLine, file);
176 
177  Float_t arrowbreak, levelbreak, lsl_csx, lsl_csy, lel_csx, lel_csy, gel_csx, gel_csy;
178  if (sscanf(line, "%f%f%f%f%f%f%f%f",
179  &arrowbreak, &levelbreak,
180  &lsl_csx, &lsl_csy,
181  &lel_csx, &lel_csy,
182  &gel_csx, &gel_csy) != 8) {
183  fLog << error << "Cannot read ASCII gls file" << dolog;
184  fclose(file);
185  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
186  return 0;
187  }
188  fgets(line, kMaxLengthLine, file);
189  fgets(line, kMaxLengthLine, file);
190 
191  // Reading each individual level
192 
193  fLog << debug << Form(" Reading level") << nline;
194  for (j = 0; j < nblevel; j++) { // loop over nblevel
195 
196  fLog << debug << Form(" Reading level %d \n ",j) << nline;
197 
198  fgets(line, kMaxLengthLine, file);
199  if (sscanf(line, "%*6c%f%f%8c%6c%i%i%i%i %c",
200  &e, &de, jpi, kay,
201  &band, &flag,
202  &sflag, &elflag, &eol) != 9) {
203  fLog << error << "Cannot read ASCII gls file" << dolog;
204  fclose(file);
205  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
206  return 0;
207  }
208 
209  band--;
210  // printf(" jpi %s \n ",jpi);
211  jpi[8] = '\0';
212 
213  if (eol == '&') {
214  fgets(line, kMaxLengthLine, file);
215  if (sscanf(line, "%*2c%f%f%f%f%f%f",
216  &sldx, &sldy,
217  &eldx, &eldy,
218  &dxl, &dxr) != 6) {
219  fLog << error << "Cannot read ASCII gls file" << dolog;
220  fclose(file);
221  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
222  return 0;
223  }
224  } else {
225  sldx = sldy = 0.f;
226  eldx = eldy = 0.f;
227  dxl = dxr = 0.f;
228  }
229 
230  // Init this new level and add it to the list of level
231  fLog << debug << Form(" Initialisation level %d \n ",j) << nline;
232  level = new NuclearLevel(); fLevel.AddAt(level,j);
233 
234  // In Radware, a level belongs to a band. In this package, a Cascade
235  // is a given decay path. So a cascade is defined by a sequence of links.
236  // Here, the tempband collection is used to store temporary the levels.
237  // The final cascades will be composed a links one they are read.
238 
239  if ( fBand.At(band) == NULL ) { // doesn't exist
240  cascade = new Cascade(); fBand.AddAt(cascade,band);
241  } else {
242  cascade = (Cascade *)fBand.At(band);
243  }
244 
245  cascade->Add(level); // add this level to the band # band
246 
247  fLog << debug << Form(" Set Level properties \n ") << nline;
248  // flags for level
249  if ( flag == 1 )
250  level->SetStyle(Level::kTentative); // tentative
251  if ( flag == 2 ) level->SetLineWidth(2*gStyle->GetLineWidth()); // isomer
252 
253  sscanf(jpi, "%i", &j1);
254  if (!strncmp(jpi + 5, "/2", 2)) {
255  // printf(" spin %d \n ",j1);
256  level->GetSpin().Set(j1,2);
257  // spin = (float) j1 / 2.f;
258  } else {
259  // printf(" spin %d \n ",j1);
260  level->GetSpin().Set(j1);
261  // spin = (float) j1;
262  }
263  level->SetColor(Level::kUnknown);
264  if (jpi[7] == '-') {
265  level->GetParity().Set(Parity::kMinus);
266  level->SetColor(Level::kMinus);
267  // parity = -1.f;
268  }
269  else {
270  level->GetParity().Set(Parity::kPlus);
271  level->SetColor(Level::kPlus);
272  // parity = 1.f;
273  }
274 
275  // flags for spin and parity
276  fLog << debug << Form(" \t Spin & parity \n ") << nline;
277  if ( sflag == 0 ) { // both are known
278  level->GetSpin().SetInfo(InfoData::kKnown);
280  level->SetLabel(jpi,0);
281  }
282  if ( sflag == 1 ) { // spin is tentative, parity known
285  lab = jpi; lab.Insert(6,")"); lab.Insert(0,"("); level->SetLabel(lab.Data(),0);
286  }
287  if ( sflag == 2 ) { // spin is tentative, parity known
288  level->GetSpin().SetInfo(InfoData::kKnown);
290  lab = jpi; lab.Insert(8,")"); lab.Insert(6,"("); level->SetLabel(lab.Data(),0);
291  }
292  if ( sflag == 3 ) { // both tentative
295  lab = jpi; lab.Insert(8,")"); lab.Insert(0,"("); level->SetLabel(lab.Data(),0);
296  }
297  if ( sflag == 4 ) { // spin known, parity unknown
298  level->GetSpin().SetInfo(InfoData::kKnown);
300  lab = jpi; lab.Remove(7,1); level->SetLabel(lab.Data(),0);
301  }
302  if ( sflag == 5 ) { // spin tentative, parity unknown
305  lab = jpi; lab.Remove(7,1); lab.Insert(6,")"); lab.Insert(0,"("); level->SetLabel(lab.Data(),0);
306  }
307  if ( sflag == 6 ) { // both are unknown
310  lab = "-?"; level->SetLabel(lab.Data(),0);
311  }
312  //K quantum number - not yet implemented
313  // sscanf(kay, "%i", &j1);
314  // if (!strncmp(kay + 4, "/2", 2)) {
315  // k = (float) j1 / 2.f;
316  // } else {
317  // k = (float) j1;
318  // }
319 
320  fLog << debug << Form(" Set labels \n ") << nline;
321 
322  // spin label
323  //level->GetLabel(0).SetTextSize(lsl_csy);
324  level->GetLabel(0).SetX(sldx); level->GetLabel(0).SetY(sldy);
325  //level->GetLabel(0).SetTextSize(sizey);level->GetLabel(0).SetX(sldx);level->GetLabel(0).SetY(sldy);
326 
327  // for isomers
328  //level->GetLabel(2).SetTextSize(sizey);
329 
330  // energy label
331  //level->GetLabel(0).SetTextSize(lel_csy);
332  // latex->SetX(eldx);latex->SetY(eldy);
333 
334  // additional label
335  //latex->SetTextSize(sizey);
336 
337  fLog << debug << Form(" Set level offset \n ") << nline ;
338  // set additional offset from the default position.
339  fLog << debug << Form(" offset left side %f \n ",dxl) << nline ;
340  level->SetX1(dxl);
341  fLog << debug << Form(" offset right side %f \n ",dxr) << nline ;
342  level->SetX2(dxr);
343  fLog << debug << Form(" vertical offset %f \n ",e) << nline ;
344  level->SetY1(e);
345  fLog << debug << Form(" vertical offset %f \n ",e) << nline ;
346  level->SetY2(e);
347 
348  level->GetEnergy().Set(e,de);
349  } // j < nblevels
350  fLog << info << Form("\t %d levels correctly read in %d bands \n",
351  fLevel.GetEntries(),fBand.GetEntries()) << nline ;
352 
353  fgets(line, kMaxLengthLine, file);
354 
355  // Start reading each band
356  char name[8]; Float_t x0, nx;
357  for (j = 0; j < nbband; ++j) {
358 
359  fgets(line, kMaxLengthLine, file);
360  if (sscanf(line, "%*6c%8c%f%f%f%f%f%f",
361  name, &x0, &nx,
362  &sldx, &sldy,
363  &eldx, &eldy) != 7) {
364  fLog << error << "Cannot read ASCII gls file" << dolog;
365  fclose(file);
366  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
367  return 0;
368  }
369 
370  // in case a band exist without levels in it.
371  if ( fBand.At(j) == 0 ) fBand.AddAt(new Cascade(),j);
372  cascade = (Cascade *)fBand.At(j);
373 
374  // set cascade's name and position
375  TLatex &lat = cascade->GetLatex("name");
376  TString tmp(name);
377  while (tmp[0] == ' ') tmp.Remove(0,1); // remove blanks in name
378  Float_t textSize = sizey/(nx*5);
379  lat.SetText(x0, sizey,tmp.Data()); lat.SetTextSize(textSize);
380  Level::SetDefaultLabelSize(textSize);
381  Link::SetDefaultLabelSize(textSize);
382 
383  // now for this band, compute the level position and width
384  for( j1 = 0; j1 < cascade->GetSize() ; j1++){
385 
386  level = (NuclearLevel *)cascade->At(j1);
387  //printf("x0 = %f ; nx/2 = %f ; level->GetX1()=%f ; SetX1 = %f \n",x0,nx/2,level->GetX1(),x0 - nx/2 + level->GetX1());
388  //printf("x0 = %f ; nx/2 = %f ; level->GetX2()=%f ; SetX2 = %f \n",x0,nx/2,level->GetX2(),x0 + nx/2 + level->GetX2());
389  level->SetX1( x0 - nx/2 + level->GetX1() );
390  level->SetX2( x0 + nx/2 + level->GetX2() );
391  level->SetDefaultLabels();
392  } // j1
393  } // nbbands
394  fLog << info << Form("\t %d bands correctly read \n",fBand.GetSize()) << nline;
395 
396  // Start reading each individual gamma
397 
398  fgets(line, kMaxLengthLine, file);
399  fgets(line, kMaxLengthLine, file);
400  fgets(line, kMaxLengthLine, file);
401 
402  for (j = 0; j < nbgamma; ++j) {
403 
404  // read informations from the files
405  fgets(line, kMaxLengthLine, file);
406  eol = '&';
407  intensity = dintensity = 0.0f;
408  if (sscanf(line, "%*6c%f%f%*3c%c%*c%c%i%i%f%f %c",
409  &e, &de, &em, &clamba,
410  &li, &lf,
411  &intensity, &dintensity, &eol) < 6) {
412  fLog << error << "Cannot read ASCII gls file" << dolog;
413  fclose(file);
414  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
415  return 0;
416  }
417 
418  if (clamba == ' ') clamba = '0';
419 // lamba = (float) (clamba - '0');
420  li--;
421  lf--;
422  if (eol == '&') {
423  fgets(line, kMaxLengthLine, file);
424  if (sscanf(line, "%*2c%f%f%f%f%f%f %c",
425  &conv, &dconv,
426  &branching, &dbranching,
427  &mix, &dmix, &eol) != 7) {
428  fLog << error << "Cannot read ASCII gls file" << dolog;
429  fclose(file);
430  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
431  return 0;
432  }
433  } else {
434  conv = dconv = 0.0f;
435  branching = dbranching = 0.0f;
436  mix = dmix = 0.0f;
437  // calc_alpha(j);
438  }
439  if (eol == '&') {
440  fgets(line, kMaxLengthLine, file);
441  if (sscanf(line, "%*2c%f%f%f%f%i%i",
442  &x1, &x2,
443  &eldx, &eldy,
444  &flg, &elflg) != 6) {
445  fLog << error << "Cannot read ASCII gls file" << dolog;
446  fclose(file);
447  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
448  return 0;
449  }
450  } else {
451  x1 = x2 = 0.f;
452  eldx = eldy = 0.f;
453  flg = elflg = 0;
454  }
455  if ( li >= fLevel.GetEntries() ) {
456  fLog << error << Form("- ! - gamma-ray %d associated with a non-existing initial level %d \n",j,li) << dolog;
457  fclose(file);
458  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
459  return 0;
460  }
461  if ( lf >= fLevel.GetEntries() ) {
462  fLog << error << Form(" - ! - gamma-ray %d associated with a non-existing final level %d \n",j,lf) << dolog;
463  fclose(file);
464  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
465  }
466 
467  // now creates a new gamma link
468  if( conv > 0 ){ // a converted gamma-ray
469  // gamma = new XGammaLink();
470  gamma = new GammaLink();
471  } else {
472  gamma = new GammaLink();
473  }
474  if ( gamma == NULL )
475  fLog << error << " Pointer is NULL" << nline ;
476 
477  fLink.AddAt(gamma,j);
478  // set characteristics
479  gamma->GetEnergy().Set(e,de);
480  if( conv > 0 ) {
481  // conv = 0.0;
482  //gamma->GetStrength().Set(intensity*(1+conv),
483  // intensity*(1+conv)*((dintensity/intensity)+(dconv/conv)));
484  gamma->GetStrength().Set(intensity,dintensity);
485  } else {
486  gamma->GetStrength().Set(intensity,dintensity);
487  }
488  gamma->GetMixing().Set(mix,dmix);
489  gamma->GetConversion().Set(conv,dconv);
490 
491  lab = em + clamba;
492  gamma->SetEM(lab.Data());
493  gamma->SetIL((Level *)fLevel.At(li));
494  gamma->SetFL((Level *)fLevel.At(lf));
495  gamma->SetDefaultLabels();
496  // to draw the link
497  if ( gamma->GetIL() != NULL || gamma->GetFL() != NULL ) {
498  Double_t xi = (gamma->GetIL()->GetX2()+gamma->GetIL()->GetX1())/2.0;
499  Double_t xf = (gamma->GetFL()->GetX2()+gamma->GetFL()->GetX1())/2.0;
500  if ( x1 == 0.00 && x2 != 0.00 ) {
501  xi = (x2 - TMath::Abs(gamma->GetIL()->GetX2()-gamma->GetIL()->GetX1()))/2.0;
502  xf = (x2 - TMath::Abs(gamma->GetIL()->GetX2()-gamma->GetIL()->GetX1()))/2.0;
503  }
504  if ( x1 != 0.00 && x2 != 0.00 ) {
505  xi = x1 - TMath::Abs(gamma->GetIL()->GetX2()-gamma->GetIL()->GetX1()) / 2.0;
506  xf = x2 - TMath::Abs(gamma->GetIL()->GetX2()-gamma->GetIL()->GetX1()) / 2.0;
507  }
508  gamma->SetPoints(xi,xf);
509  if ( xi > gamma->GetIL()->GetX2() ) gamma->GetIL()->SetExtraLineX2(xi);
510  if ( xi < gamma->GetIL()->GetX1() ) gamma->GetIL()->SetExtraLineX1(xi);
511 
512  if ( xf > gamma->GetFL()->GetX2() ) gamma->GetFL()->SetExtraLineX2(xf);
513  if ( xf < gamma->GetFL()->GetX1() ) gamma->GetFL()->SetExtraLineX1(xf);
514  }
515  else {
516  fLog << warning << Form("WARNING one gamma %f is not linked \n", gamma->GetEnergy().Get()) << nline ;
517  }
518  } // j - gamma
519  fLog << info << Form("\t %d gammas correctly read \n",fLink.GetEntries()) << nline;
520 
521  // now read additional text to be written on the level scheme
522  Char_t text[40]; Int_t dumi; Float_t size, x, y;
523  if (nbtext > 0) {
524  fgets(line, kMaxLengthLine, file);
525  fgets(line, kMaxLengthLine, file);
526  for (j = 0; j < nbtext; ++j) {
527  fgets(line, kMaxLengthLine, file);
528  if (sscanf(line, "%*7c%40c%i", text, &dumi) != 2) {
529  fLog << error << "Cannot read ASCII gls file" << dolog ;
530  fclose(file);
531  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
532  return 0;
533  }
534 
535  fgets(line, kMaxLengthLine, file);
536  if (sscanf(line, "%*2c%f%f%f%f",
537  &size, &size,&x, &y) != 4) {
538  fLog << error << "Cannot read ASCII gls file" << dolog;
539  fclose(file);
540  fBand.Clear(); fLevel.Clear(); fLink.Clear(); fText.Clear();
541  return 0;
542  }
543 
544  TLatex *latex = new TLatex(x,y,text); latex->SetTextSize(size); fText.AddAt(latex,j);
545  } // j - labels
546  fLog << info << Form("\t %d extra comments correctly read \n",fText.GetEntries()) << nline;
547  } // if nbtext
548  fclose(file);
549  fLog << info << Form(" ... Reading file %s DONE \n", fFileName.Data()) << nline;
550  fLog << dolog;
551 
552  fIsChecked = true;
553  return 1;
554 }
555 
556 
557 //__________________________________________________________
559 {
560  // set name and reference
561  levelScheme.SetName(fOptions.Data());
562  TString lab = "From Radware AGS file "; lab += fFileName.Data();
563  levelScheme.SetReference(lab.Data());
564 
565 }
566 
567 
568 
A level Scheme.
Definition: LevelScheme.h:82
A BaseLevelSchemeReader class to read level scheme files.
virtual void SetColor(EDefaultColor color)
Set color.
Definition: Level.cpp:107
A cascade is a list of links.
Definition: Cascade.h:51
virtual void Set(Data_T data)
set the measure and its error (default err=0)
Definition: Measure.h:66
virtual Int_t Check()
check file before imported level scheme
void Set(Int_t n, Int_t d=1)
To set the spin.
Definition: Spin.cpp:124
interface to ENSDF Evaluated Nuclear Structure Data File
LogMessage & error(LogMessage &)
LogMessage & warning(LogMessage &)
virtual void SetName(const Char_t *name)
set level scheme name.
Definition: LevelScheme.h:298
static void SetDefaultLabelSize(Float_t size)
Definition: Level.h:68
header file for a NuclearLevel
A nuclear level.
Definition: NuclearLevel.h:66
TString fFileName
name of level scheme file
TObjArray fText
list of texts
LogMessage & nline(LogMessage &)
void SetExtraLineX2(Double_t)
Definition: Level.cpp:156
Bool_t fIsChecked
flag for reading is ok
virtual Data_T Get() const
get the value, can be overloaded
Definition: Data.h:70
LogMessage & info(LogMessage &)
manipulator to modify the LogMessage
Parity & GetParity()
get the parity and modify it if it is needed
Definition: NuclearLevel.h:87
TObjArray fLevel
list of levels
Measure< Float_t > & GetEnergy()
Definition: NuclearLevel.h:91
virtual TLatex & GetLabel(Int_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:251
LogMessage & dolog(LogMessage &)
virtual void SetDefaultLabels()
Set default labels.
Definition: Level.cpp:243
RadLevelSchemeReader(const char *filename, Option_t *opt)
void Set(Parity::EParity)
Definition: Parity.h:77
header file for a LevelScheme
LogMessage & debug(LogMessage &)
virtual std::string & GetProcessName()
To get the Process name.
Definition: GwLogMessage.h:224
virtual void SetX2(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:273
virtual void FillLabels(LevelScheme &levelScheme)
fill labels
virtual void SetY1(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:284
virtual void SetLabel(const char *, Int_t)
to set labels
Definition: Level.cpp:204
virtual void SetX1(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:262
Spin & GetSpin()
to get the spin and modify it if it is needed
Definition: NuclearLevel.h:84
TObjArray fLink
list of links
virtual void SetInfo(InfoData::EData)
to set some information about this data
Definition: InfoData.h:83
virtual void SetReference(const Char_t *)
set level scheme reference.
Definition: LevelScheme.h:299
virtual void SetProcessMethod(const char *)
To set the current method.
virtual TLatex & GetLatex(Option_t *opt="name")
to get and modify the displayed properties of name and type
Definition: Cascade.cpp:91
LogMessage fLog
log message
virtual void SetY2(Double_t)
All labels are shifted when moving a level to another position.
Definition: Level.cpp:303
const Int_t size
Definition: BenchIO.C:24
virtual void SetStyle(EDefaultStyle style)
Set style.
Definition: Level.cpp:99
void SetExtraLineX1(Double_t)
Definition: Level.cpp:140
TObjArray fBand
list of cascades
Base class describing a general level.
Definition: Level.h:53