FEDRA emulsion software from the OPERA Collaboration
EdbDataSet Class Reference

#include <EdbDataSet.h>

Inheritance diagram for EdbDataSet:
Collaboration diagram for EdbDataSet:

Public Member Functions

 EdbDataSet ()
 ============================================================================== More...
 
 EdbDataSet (const char *file)
 
EdbDataPieceFindPiece (const char *name)
 
const char * GetAnaDir () const
 
const char * GetParDir () const
 
EdbDataPieceGetPiece (int id)
 
int GetRunList (const char *file)
 
int N () const
 
void Print ()
 
void PrintRunList ()
 
int ReadDataSetDef (const char *file)
 
void Set0 ()
 
void WriteRunList ()
 
virtual ~EdbDataSet ()
 

Private Attributes

TString eAnaDir
 
TFile * eDBFile
 
TString eDBFileName
 
TString eInputList
 
TString eParDir
 
TObjArray ePieces
 

Constructor & Destructor Documentation

◆ EdbDataSet() [1/2]

EdbDataSet::EdbDataSet ( )

==============================================================================

1418 {
1419  Set0();
1420 }
void Set0()
Definition: EdbDataSet.cxx:1437

◆ EdbDataSet() [2/2]

EdbDataSet::EdbDataSet ( const char *  file)

1424 {
1425  Set0();
1426  if(ReadDataSetDef(file)<0);
1427  Set0();
1428 }
int ReadDataSetDef(const char *file)
Definition: EdbDataSet.cxx:1448
TFile * file
Definition: write_pvr.C:3

◆ ~EdbDataSet()

EdbDataSet::~EdbDataSet ( )
virtual

1432 {
1433  if(ePieces.GetEntries()) ePieces.Delete();
1434 }
TObjArray ePieces
Definition: EdbDataSet.h:153

Member Function Documentation

◆ FindPiece()

EdbDataPiece * EdbDataSet::FindPiece ( const char *  name)

1530 {
1531  const char *nn;
1532  EdbDataPiece *piece=0;
1533  for(int i=0; i<ePieces.GetEntriesFast(); i++){
1534  piece = (EdbDataPiece*)ePieces.At(i);
1535  nn = piece->GetName();
1536  if(!strcmp(nn,name)) return piece;
1537  }
1538  return 0;
1539 }
Definition: EdbDataSet.h:25
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24

◆ GetAnaDir()

const char* EdbDataSet::GetAnaDir ( ) const
inline
165 {return eAnaDir.Data();}
TString eAnaDir
Definition: EdbDataSet.h:148

◆ GetParDir()

const char* EdbDataSet::GetParDir ( ) const
inline
166 {return eParDir.Data();}
TString eParDir
Definition: EdbDataSet.h:149

◆ GetPiece()

EdbDataPiece* EdbDataSet::GetPiece ( int  id)
inline
163  { if(id<ePieces.GetEntriesFast()) return (EdbDataPiece *)ePieces.At(id); else return 0;}

◆ GetRunList()

int EdbDataSet::GetRunList ( const char *  file)

1543 {
1544  char buf[256];
1545  char filename[256];
1546  int nrun=0;
1547 
1548  FILE *fp=fopen(file,"r");
1549  if (!fp) {
1550  Log(1,"EdbDataSet::GetRunList","ERROR open file: %s", file);
1551  return(-1);
1552  }
1553  else Log(2,"EdbDataSet::GetRunList", "Read runs list from file: %s", file );
1554 
1555  EdbDataPiece *piece=0;
1556  EdbDataPiece *pp=0;
1557  int plateID,pieceID,flag;
1558 
1559  int ntok=0;
1560  while( fgets(buf,256,fp)!=NULL ) {
1561  ntok = sscanf(buf,"%d %d %s %d",&plateID,&pieceID,filename,&flag);
1562  if(ntok!=4) break;
1563  if(flag<=0) continue;
1564  nrun++;
1565  piece = new EdbDataPiece(plateID,pieceID,filename,flag);
1566  piece->MakeName();
1567  if( (pp=FindPiece(piece->GetName())) ) {
1568  pp->AddRunFile( filename );
1569  delete piece;
1570  } else {
1571  piece->MakeNameCP(GetAnaDir());
1572  piece->MakeNamePar(GetParDir());
1573  if(piece->TakePiecePar()>=0)
1574  ePieces.Add(piece);
1575  else {
1576  Log(1,"EdbDataSet::GetRunList","Missing par file for piece!!!");
1577  if(fp) fclose(fp);
1578  return -1;
1579  }
1580  }
1581  }
1582  fclose(fp);
1583 
1584  return nrun;
1585 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
void MakeNamePar(const char *dir)
Definition: EdbDataSet.cxx:273
void AddRunFile(const char *name)
Definition: EdbDataSet.cxx:181
const char * MakeNameCP(const char *dir)
Definition: EdbDataSet.cxx:204
int TakePiecePar()
Definition: EdbDataSet.cxx:281
const char * MakeName()
Definition: EdbDataSet.cxx:195
const char * GetParDir() const
Definition: EdbDataSet.h:166
const char * GetAnaDir() const
Definition: EdbDataSet.h:165
EdbDataPiece * FindPiece(const char *name)
Definition: EdbDataSet.cxx:1529
string filename
Definition: emthickness.cpp:34
fclose(pFile)
#define NULL
Definition: nidaqmx.h:84

◆ N()

int EdbDataSet::N ( ) const
inline
161 { return ePieces.GetEntriesFast(); }

◆ Print()

void EdbDataSet::Print ( )

1505 {
1506  EdbDataPiece *p=0;
1507  printf("EdbDataSet with %d pieces:",N());
1508  for(int i=0; i<N(); i++){
1509  p = ((EdbDataPiece*)ePieces.At(i));
1510  printf("%s %s\n",p->GetName(), p->GetRunFile(0));
1511  }
1512 }
int N() const
Definition: EdbDataSet.h:161
p
Definition: testBGReduction_AllMethods.C:8

◆ PrintRunList()

void EdbDataSet::PrintRunList ( )

1497 {
1498  for(int i=0; i<ePieces.GetEntriesFast(); i++){
1499  ((EdbDataPiece*)ePieces.At(i))->Print();
1500  }
1501 }
void Print()
Definition: EdbDataSet.cxx:1504

◆ ReadDataSetDef()

int EdbDataSet::ReadDataSetDef ( const char *  file)

1449 {
1450  char buf[256];
1451  char key[256];
1452  char name[256];
1453 
1454  FILE *fp=fopen(file,"r");
1455  if (fp==NULL) {
1456  Log(1,"EdbDataSet::ReadDataSetDef","ERROR open file: %s", file);
1457  return(-1);
1458  }else
1459  Log(2,"EdbDataSet::ReadDataSetDef", "Read Data Set Definitions from: %s", file );
1460 
1461  while( fgets(buf,256,fp)!=NULL ) {
1462  for( int i=0; i<(int)strlen(buf); i++ )
1463  if( buf[i]=='#' ) {
1464  buf[i]='\0'; // cut out comments starting from #
1465  break;
1466  }
1467 
1468  if( sscanf(buf,"%s",key)!=1 ) continue;
1469 
1470  if ( !strcmp(key,"OUTPUT_DATA_DIR") )
1471  {
1472  sscanf(buf+strlen(key),"%s",name);
1473  eAnaDir = name;
1474  }
1475  else if ( !strcmp(key,"INPUT_RUNS_LIST") )
1476  {
1477  sscanf(buf+strlen(key),"%s",name);
1478  eInputList=name;
1479  }
1480  else if ( !strcmp(key,"PARAMETERS_DIR") )
1481  {
1482  sscanf(buf+strlen(key),"%s",name);
1483  eParDir=name;
1484  }
1485  else if ( !strcmp(key,"DBFILNAME") )
1486  {
1487  sscanf(buf+strlen(key),"%s",name);
1488  eDBFileName=name;
1489  }
1490  }
1491  fclose(fp);
1492  return GetRunList(eInputList.Data());
1493 }
int GetRunList(const char *file)
Definition: EdbDataSet.cxx:1542
TString eDBFileName
Definition: EdbDataSet.h:150
TString eInputList
Definition: EdbDataSet.h:147

◆ Set0()

void EdbDataSet::Set0 ( )

1438 {
1439  eInputList = "runs.lst";
1440  eAnaDir = "./";
1441  eParDir = "./";
1442  eDBFileName = "pieces_DB.root";
1443  eDBFile = 0;
1444  ePieces.SetOwner();
1445 }
TFile * eDBFile
Definition: EdbDataSet.h:151

◆ WriteRunList()

void EdbDataSet::WriteRunList ( )

1517 {
1518  if(!eDBFile) eDBFile = new TFile(eDBFileName.Data(),"UPDATE");
1519  //else eDBFile->Cd();
1520 
1521  for(int i=0; i<ePieces.GetEntriesFast(); i++){
1522  ((EdbDataPiece*)ePieces.At(i))->MakeName();
1523  }
1524 
1525  ePieces.Write("pieces",1);
1526 }

Member Data Documentation

◆ eAnaDir

TString EdbDataSet::eAnaDir
private

◆ eDBFile

TFile* EdbDataSet::eDBFile
private

◆ eDBFileName

TString EdbDataSet::eDBFileName
private

◆ eInputList

TString EdbDataSet::eInputList
private

◆ eParDir

TString EdbDataSet::eParDir
private

◆ ePieces

TObjArray EdbDataSet::ePieces
private

The documentation for this class was generated from the following files: