FEDRA emulsion software from the OPERA Collaboration
EdbDataSet Class Reference

OPERA emulsion data set. More...

#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
 path for analysis data directory More...
 
TFile * eDBFile
 the file (database) to save all parameters More...
 
TString eDBFileName
 root file to keep pieces parameters More...
 
TString eInputList
 list of input data (runs) More...
 
TString eParDir
 path for parameters directory More...
 
TObjArray ePieces
 array of runs More...
 

Detailed Description

OPERA emulsion data set.

Constructor & Destructor Documentation

◆ EdbDataSet() [1/2]

EdbDataSet::EdbDataSet ( )

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

1413{
1414 Set0();
1415}
void Set0()
Definition: EdbDataSet.cxx:1432

◆ EdbDataSet() [2/2]

EdbDataSet::EdbDataSet ( const char *  file)

1419{
1420 Set0();
1421 if(ReadDataSetDef(file)<0);
1422 Set0();
1423}
int ReadDataSetDef(const char *file)
Definition: EdbDataSet.cxx:1443
TFile * file
Definition: write_pvr.C:3

◆ ~EdbDataSet()

EdbDataSet::~EdbDataSet ( )
virtual

1427{
1428 if(ePieces.GetEntries()) ePieces.Delete();
1429}
TObjArray ePieces
array of runs
Definition: EdbDataSet.h:154

Member Function Documentation

◆ FindPiece()

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

1525{
1526 const char *nn;
1527 EdbDataPiece *piece=0;
1528 for(int i=0; i<ePieces.GetEntriesFast(); i++){
1529 piece = (EdbDataPiece*)ePieces.At(i);
1530 nn = piece->GetName();
1531 if(!strcmp(nn,name)) return piece;
1532 }
1533 return 0;
1534}
Edb raw data unit (scanned plate) associated with run file.
Definition: EdbDataSet.h:26
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24

◆ GetAnaDir()

const char * EdbDataSet::GetAnaDir ( ) const
inline
166{return eAnaDir.Data();}
TString eAnaDir
path for analysis data directory
Definition: EdbDataSet.h:149

◆ GetParDir()

const char * EdbDataSet::GetParDir ( ) const
inline
167{return eParDir.Data();}
TString eParDir
path for parameters directory
Definition: EdbDataSet.h:150

◆ GetPiece()

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

◆ GetRunList()

int EdbDataSet::GetRunList ( const char *  file)

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

◆ N()

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

◆ Print()

void EdbDataSet::Print ( )

1500{
1501 EdbDataPiece *p=0;
1502 printf("EdbDataSet with %d pieces:",N());
1503 for(int i=0; i<N(); i++){
1504 p = ((EdbDataPiece*)ePieces.At(i));
1505 printf("%s %s\n",p->GetName(), p->GetRunFile(0));
1506 }
1507}
int N() const
Definition: EdbDataSet.h:162
p
Definition: testBGReduction_AllMethods.C:8

◆ PrintRunList()

void EdbDataSet::PrintRunList ( )

1492{
1493 for(int i=0; i<ePieces.GetEntriesFast(); i++){
1494 ((EdbDataPiece*)ePieces.At(i))->Print();
1495 }
1496}
void Print()
Definition: EdbDataSet.cxx:1499

◆ ReadDataSetDef()

int EdbDataSet::ReadDataSetDef ( const char *  file)

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

◆ Set0()

void EdbDataSet::Set0 ( )

1433{
1434 eInputList = "runs.lst";
1435 eAnaDir = "./";
1436 eParDir = "./";
1437 eDBFileName = "pieces_DB.root";
1438 eDBFile = 0;
1439 ePieces.SetOwner();
1440}
TFile * eDBFile
the file (database) to save all parameters
Definition: EdbDataSet.h:152

◆ WriteRunList()

void EdbDataSet::WriteRunList ( )

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

Member Data Documentation

◆ eAnaDir

TString EdbDataSet::eAnaDir
private

path for analysis data directory

◆ eDBFile

TFile* EdbDataSet::eDBFile
private

the file (database) to save all parameters

◆ eDBFileName

TString EdbDataSet::eDBFileName
private

root file to keep pieces parameters

◆ eInputList

TString EdbDataSet::eInputList
private

list of input data (runs)

◆ eParDir

TString EdbDataSet::eParDir
private

path for parameters directory

◆ ePieces

TObjArray EdbDataSet::ePieces
private

array of runs


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