#include "hpiontrackerbeampar.h"
#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()
{
	
}
void HPionTrackerBeamPar::putParams(HParamList * l)
{
	
	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)
{
	
        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: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