ROOT logo
//_HADES_CLASS_DESCRIPTION
////////////////////////////////////////////////////////////////////
//  HPionTrackerParAsciiFileIo
//
//  Class for PionTracker parameter input/output from/into Ascii file
//
////////////////////////////////////////////////////////////////////

#include "hpiontrackerparasciifileio.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hpiontrackerdetector.h"
#include "hparset.h"
#include "hpiontrackertrb3lookup.h"
#include "hpiontrackercalpar.h"
#include "hpiontrackercalrunpar.h"

ClassImp (HPionTrackerParAsciiFileIo)

    HPionTrackerParAsciiFileIo::HPionTrackerParAsciiFileIo (fstream * f) : HDetParAsciiFileIo (f)
{
    // constructor calls the base class constructor
    fName = "HPionTrackerParIo";
}

Bool_t HPionTrackerParAsciiFileIo::init (HParSet * pPar, Int_t * set)
{
    // calls the appropriate read function for the container
    const  Text_t * name = pPar->GetName();

    if (NULL != pFile)
    {
	if (0 == strncmp (name, "PionTrackerTrb3Lookup", strlen ("PionTrackerTrb3Lookup")))
	{
	    return readFile<HPionTrackerTrb3Lookup> ( (HPionTrackerTrb3Lookup *) pPar);
	}

	if (0 == strncmp (name, "PionTrackerCalPar", strlen ("PionTrackerCalPar")))
	{
	    return read ( (HPionTrackerCalPar *) pPar, set);
	}

	Error ("init(HParSet*,Int_t*)",
	       "initialization of %s not possible from  ASCII file!", name);
	return kFALSE;
    }

    Error ("init(HParSet*,Int_t*)", "No input file open");
    return kFALSE;
}

Int_t HPionTrackerParAsciiFileIo::write (HParSet * pPar)
{
    // calls the appropriate write function for the container
    if (NULL != pFile)
    {
	const  Text_t * name = pPar->GetName();

	if (0 == strncmp (name, "PionTrackerTrb3Lookup", strlen ("PionTrackerTrb3Lookup")))
	{
	    return writeFile<HPionTrackerTrb3Lookup> ( (HPionTrackerTrb3Lookup *) pPar);
	}

	if (0 == strncmp (name, "PionTrackerCalPar", strlen ("PionTrackerCalPar")))
	{
	    return writeFile<HPionTrackerCalPar> ( (HPionTrackerCalPar *) pPar);
	}

	if (0 == strncmp(name, "PionTrackerCalRunPar", strlen ("PionTrackerCalRunPar")))
	{
	    return write((HPionTrackerCalRunPar*)pPar);
	}

	Error ("write(HParSet*)", "%s could not be written to ASCII file", name);
	return -1;
    }

    Error ("write(HParSet*)", "No output file open");
    return -1;
}

template<class T> Int_t HPionTrackerParAsciiFileIo::write(T* pPar)
{
   // template function for parameter containers
   // calls the function putAsciiHeader(TString&) of the parameter container,
   // writes the header and calls the function write(fstream&) of the class
   pPar->putAsciiHeader(fHeader);
   writeHeader(pPar->GetName(), pPar->getParamContext());
   pPar->write(*pFile);
   pFile->write(sepLine, strlen(sepLine));
   pPar->setChanged(kFALSE);
   return 1;
}

template<class T> Bool_t HPionTrackerParAsciiFileIo::read (T * pPar, Int_t * set)
{
    // template function for all parameter containers
    // searches the container in the file, reads the data line by line and
    //   called the member function readline(...) of the container class
    const Text_t * name = pPar->GetName();
    HDetector * det = gHades->getSetup()->getDetector ("PionTracker");
    Int_t nSize = det->getMaxModules();

    if (!findContainer (name)) return kFALSE;

    pPar->clear();
    const Int_t maxbuf = 155;
    Text_t buf[maxbuf];

    while (!pFile->eof())
    {
	pFile->getline (buf, maxbuf);

	if (buf[0] == '#') break;

	if (buf[0] != '/' && buf[0] != '\0') pPar->readline (buf, set);
    }

    Bool_t allFound = kTRUE;

    for (Int_t i = 0; i < nSize; i++)
    {
	if (set[i])
	{
	    if (set[i] == 999) set[i] = 1;
	    else allFound = kFALSE;
	}
    }

    if (allFound)
    {
	pPar->setInputVersion (1, inputNumber);
	pPar->setChanged();
	Info ("readFile", "%s initialized from Ascii file", pPar->GetName());
    }

    return allFound;
}
 hpiontrackerparasciifileio.cc:1
 hpiontrackerparasciifileio.cc:2
 hpiontrackerparasciifileio.cc:3
 hpiontrackerparasciifileio.cc:4
 hpiontrackerparasciifileio.cc:5
 hpiontrackerparasciifileio.cc:6
 hpiontrackerparasciifileio.cc:7
 hpiontrackerparasciifileio.cc:8
 hpiontrackerparasciifileio.cc:9
 hpiontrackerparasciifileio.cc:10
 hpiontrackerparasciifileio.cc:11
 hpiontrackerparasciifileio.cc:12
 hpiontrackerparasciifileio.cc:13
 hpiontrackerparasciifileio.cc:14
 hpiontrackerparasciifileio.cc:15
 hpiontrackerparasciifileio.cc:16
 hpiontrackerparasciifileio.cc:17
 hpiontrackerparasciifileio.cc:18
 hpiontrackerparasciifileio.cc:19
 hpiontrackerparasciifileio.cc:20
 hpiontrackerparasciifileio.cc:21
 hpiontrackerparasciifileio.cc:22
 hpiontrackerparasciifileio.cc:23
 hpiontrackerparasciifileio.cc:24
 hpiontrackerparasciifileio.cc:25
 hpiontrackerparasciifileio.cc:26
 hpiontrackerparasciifileio.cc:27
 hpiontrackerparasciifileio.cc:28
 hpiontrackerparasciifileio.cc:29
 hpiontrackerparasciifileio.cc:30
 hpiontrackerparasciifileio.cc:31
 hpiontrackerparasciifileio.cc:32
 hpiontrackerparasciifileio.cc:33
 hpiontrackerparasciifileio.cc:34
 hpiontrackerparasciifileio.cc:35
 hpiontrackerparasciifileio.cc:36
 hpiontrackerparasciifileio.cc:37
 hpiontrackerparasciifileio.cc:38
 hpiontrackerparasciifileio.cc:39
 hpiontrackerparasciifileio.cc:40
 hpiontrackerparasciifileio.cc:41
 hpiontrackerparasciifileio.cc:42
 hpiontrackerparasciifileio.cc:43
 hpiontrackerparasciifileio.cc:44
 hpiontrackerparasciifileio.cc:45
 hpiontrackerparasciifileio.cc:46
 hpiontrackerparasciifileio.cc:47
 hpiontrackerparasciifileio.cc:48
 hpiontrackerparasciifileio.cc:49
 hpiontrackerparasciifileio.cc:50
 hpiontrackerparasciifileio.cc:51
 hpiontrackerparasciifileio.cc:52
 hpiontrackerparasciifileio.cc:53
 hpiontrackerparasciifileio.cc:54
 hpiontrackerparasciifileio.cc:55
 hpiontrackerparasciifileio.cc:56
 hpiontrackerparasciifileio.cc:57
 hpiontrackerparasciifileio.cc:58
 hpiontrackerparasciifileio.cc:59
 hpiontrackerparasciifileio.cc:60
 hpiontrackerparasciifileio.cc:61
 hpiontrackerparasciifileio.cc:62
 hpiontrackerparasciifileio.cc:63
 hpiontrackerparasciifileio.cc:64
 hpiontrackerparasciifileio.cc:65
 hpiontrackerparasciifileio.cc:66
 hpiontrackerparasciifileio.cc:67
 hpiontrackerparasciifileio.cc:68
 hpiontrackerparasciifileio.cc:69
 hpiontrackerparasciifileio.cc:70
 hpiontrackerparasciifileio.cc:71
 hpiontrackerparasciifileio.cc:72
 hpiontrackerparasciifileio.cc:73
 hpiontrackerparasciifileio.cc:74
 hpiontrackerparasciifileio.cc:75
 hpiontrackerparasciifileio.cc:76
 hpiontrackerparasciifileio.cc:77
 hpiontrackerparasciifileio.cc:78
 hpiontrackerparasciifileio.cc:79
 hpiontrackerparasciifileio.cc:80
 hpiontrackerparasciifileio.cc:81
 hpiontrackerparasciifileio.cc:82
 hpiontrackerparasciifileio.cc:83
 hpiontrackerparasciifileio.cc:84
 hpiontrackerparasciifileio.cc:85
 hpiontrackerparasciifileio.cc:86
 hpiontrackerparasciifileio.cc:87
 hpiontrackerparasciifileio.cc:88
 hpiontrackerparasciifileio.cc:89
 hpiontrackerparasciifileio.cc:90
 hpiontrackerparasciifileio.cc:91
 hpiontrackerparasciifileio.cc:92
 hpiontrackerparasciifileio.cc:93
 hpiontrackerparasciifileio.cc:94
 hpiontrackerparasciifileio.cc:95
 hpiontrackerparasciifileio.cc:96
 hpiontrackerparasciifileio.cc:97
 hpiontrackerparasciifileio.cc:98
 hpiontrackerparasciifileio.cc:99
 hpiontrackerparasciifileio.cc:100
 hpiontrackerparasciifileio.cc:101
 hpiontrackerparasciifileio.cc:102
 hpiontrackerparasciifileio.cc:103
 hpiontrackerparasciifileio.cc:104
 hpiontrackerparasciifileio.cc:105
 hpiontrackerparasciifileio.cc:106
 hpiontrackerparasciifileio.cc:107
 hpiontrackerparasciifileio.cc:108
 hpiontrackerparasciifileio.cc:109
 hpiontrackerparasciifileio.cc:110
 hpiontrackerparasciifileio.cc:111
 hpiontrackerparasciifileio.cc:112
 hpiontrackerparasciifileio.cc:113
 hpiontrackerparasciifileio.cc:114
 hpiontrackerparasciifileio.cc:115
 hpiontrackerparasciifileio.cc:116
 hpiontrackerparasciifileio.cc:117
 hpiontrackerparasciifileio.cc:118
 hpiontrackerparasciifileio.cc:119
 hpiontrackerparasciifileio.cc:120
 hpiontrackerparasciifileio.cc:121
 hpiontrackerparasciifileio.cc:122
 hpiontrackerparasciifileio.cc:123
 hpiontrackerparasciifileio.cc:124
 hpiontrackerparasciifileio.cc:125
 hpiontrackerparasciifileio.cc:126
 hpiontrackerparasciifileio.cc:127
 hpiontrackerparasciifileio.cc:128
 hpiontrackerparasciifileio.cc:129
 hpiontrackerparasciifileio.cc:130
 hpiontrackerparasciifileio.cc:131
 hpiontrackerparasciifileio.cc:132
 hpiontrackerparasciifileio.cc:133
 hpiontrackerparasciifileio.cc:134
 hpiontrackerparasciifileio.cc:135
 hpiontrackerparasciifileio.cc:136
 hpiontrackerparasciifileio.cc:137
 hpiontrackerparasciifileio.cc:138
 hpiontrackerparasciifileio.cc:139