ROOT logo
#include "hpiontrackerbeampar.h"

//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////
//
// HPionTrackerBeamPar
//
// Container class for PionTracker beam parameters
//
/////////////////////////////////////////////////////////////

#include "hparamlist.h"

#include "TObjString.h"
#include "TObjArray.h"


#include <iostream>
#include <iomanip>
#include <vector>
#include <fstream>
using namespace std;

ClassImp (HPionTrackerBeamPar)

HPionTrackerBeamPar::HPionTrackerBeamPar(const Char_t * name, const Char_t * title, const Char_t * context)
	: HParCond (name, title, context)
{
	clear();
}

void HPionTrackerBeamPar::clear()
{
	// clears the container
}

void HPionTrackerBeamPar::putParams(HParamList * l)
{

	// add the parameters to the list for writing
	if (!l) return;
	vector<HBeamElement>& elements = beam.getElements();
        TString all_elements="";

	for(UInt_t i=0;i<elements.size();i++){
	    all_elements+=elements[i].fName;
	    if(i<elements.size()-1)all_elements+="," ;
	}
	l->add ("elements", (Text_t*)all_elements.Data());
	l->add ("targetElementNum", ftargetElementNum);

	for(UInt_t i=0;i<elements.size();i++){
	    TArrayD all;
	    elements[i].toLinearArray(all);
	    l->add (Form("%s",elements[i].fName.Data()), all);
	}

}

Bool_t HPionTrackerBeamPar::getParams(HParamList * l)
{
	// gets the parameters from the list (read from input)
        if (!l) return kFALSE;
        Char_t line[1000];
        if (!l->fill ("elements"        , (Text_t*)line,1000))      return kFALSE;
        TString all_elements=line;
	if (!l->fill ("targetElementNum", &ftargetElementNum)) return kFALSE;
	vector<HBeamElement>& elements = beam.getElements();
	elements.clear();

	beam.setTargetElementOnly(ftargetElementNum);

	TObjArray* ar = all_elements.Tokenize(",");
	if(ar) {
	    for(Int_t i=0; i<ar->GetEntries();i++){
               TString name = ((TObjString*)ar->At(i))->GetString();
               TArrayD all;
	       if (!l->fill (name.Data(), &all)) return kFALSE;
	       HBeamElement e;
               e.fromLinearArray(all);
               e.fName = name;
	       elements.push_back(e);
	    }
	}

	if(ar) {
	    ar->Delete() ;
	    delete ar;
	}

	return kTRUE;
}

Bool_t  HPionTrackerBeamPar::initBeamLine(TString filename,Int_t targetElementNum,Bool_t debug)
{
    ftargetElementNum = targetElementNum;
    return beam.initBeamLine(filename,targetElementNum,debug);
}

void  HPionTrackerBeamPar::createAsciiFile(TString filename)
{

    ofstream fout;
    fout.open(filename.Data());

    fout<<"##############################################################################"<<endl;
    fout<<"# Class:   HPionTrackerBeamPar "<<endl;
    fout<<"# Context: PionTrackerBeamParProduction "<<endl;
    fout<<"#"<<endl;
    fout<<"##############################################################################"<<endl;
    fout<<"[PionTrackerBeamPar]"<<endl;
    fout<<"//----------------------------------------------------------------------------"<<endl;

    vector<HBeamElement>& elements = beam.getElements();
    TString all_elements="";

    for(UInt_t i=0;i<elements.size();i++){
	all_elements+=elements[i].fName;
	if(i<elements.size()-1)all_elements+="," ;
    }
    fout<<"elements: Text_t "<<all_elements.Data()<<endl;
    fout<<"targetElementNum: Int_t "<<ftargetElementNum<<endl;

    for(UInt_t i=0;i<elements.size();i++){
	TArrayD all;
	elements[i].toLinearArray(all);
	fout<<Form("%s: Double_t \\",elements[i].fName.Data())<<endl;
        Int_t ct=0;
	for(Int_t j=0;j<all.GetSize();j++){
	    if(ct==10){
		fout<<" \\"<<endl;
		ct=0;
	    }
            ct++;
            fout<<" "<<setw(10)<<all[j];
	}
        fout<<endl;
    }
    fout<<"##############################################################################"<<endl;
    fout.close();

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