14 vector<vector<double> > rawinfv;
15 vector<vector<int> > dgtinfv;
17 unsigned int NHITS =
rawinfos.size();
25 rawinfv.resize(NVARSR);
26 dgtinfv.resize(NVARSD);
28 for(
int i=0; i<NVARSR; i++) rawinfv[i].resize(NHITS);
29 for(
int i=0; i<NVARSD; i++) dgtinfv[i].resize(NHITS);
32 for(
unsigned int nh=0; nh<NHITS; nh++)
33 for(
int iv=0; iv<NVARSR; iv++)
36 for(
unsigned int nh=0; nh<NHITS; nh++)
37 for(
int iv=0; iv<NVARSD; iv++)
43 evioDOMNodeP dgtbankhit = evioDOMNode::createEvioDOMNode(
bankID, 100);
46 for(
int d=0;
d<NVARSD;
d++)
47 *dgtbankhit << evioDOMNode::createEvioDOMNode(
bankID, mbank.
id[
d+NVARSR], dgtinfv[
d]);
53 evioDOMNodeP rawbankhit = evioDOMNode::createEvioDOMNode(
bankID, 200);
56 for(
int r=0;
r<NVARSR;
r++)
57 *rawbankhit << evioDOMNode::createEvioDOMNode(
bankID, mbank.
id[
r], rawinfv[
r]);
73 event =
new evioDOMTree(1, 0);
78 *
event << evioDOMNode::createEvioDOMNode(1, 1, &head.
evn, 1);
79 *
event << evioDOMNode::createEvioDOMNode(1, 2, &head.
type, 1);
80 *
event << evioDOMNode::createEvioDOMNode(1, 3, &head.
beamPol, 1);
81 *
event << evioDOMNode::createEvioDOMNode(1, 4, &head.
targetPol, 1);
98 for(
unsigned int i=0; i<MAXP && i<MGP.size(); i++)
100 pid.push_back((
double) MGP[i].PID);
101 px.push_back(MGP[i].momentum.getX()/MeV);
102 py.push_back(MGP[i].momentum.getY()/MeV);
103 pz.push_back(MGP[i].momentum.getZ()/MeV);
104 vx.push_back(MGP[i].vertex.getX()/cm);
105 vy.push_back(MGP[i].vertex.getY()/cm);
106 vz.push_back(MGP[i].vertex.getZ()/cm);
110 generatedp = evioDOMNode::createEvioDOMNode(10, 0);
111 evioDOMNodeP rawbankhit = evioDOMNode::createEvioDOMNode(10, 200);
116 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 10, pid);
117 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 20, px);
118 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 30, py);
119 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 40, pz);
120 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 50, vx);
121 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 60, vy);
122 *rawbankhit << evioDOMNode::createEvioDOMNode(10, 70, vz);
143 unsigned int nraws, ndigit;
145 for(
unsigned int i=0; i<mbank.
name.size(); i++)
147 if(mbank.
type[i] == 0) ndigit++;
148 if(mbank.
type[i] == 1) nraws++;
150 if(PHout.
raws.size() != nraws || PHout.
dgtz.size() != ndigit)
152 cout <<
" Output does not match bank definition. This hit won't be written in the output stream." << endl;
153 cout <<
" nraws size: " << nraws <<
" Output nraws: " << PHout.
raws.size() << endl;
154 cout <<
" ndgtz size: " << ndigit <<
" Output ndgt: " << PHout.
dgtz.size() << endl;
158 vector<double> rawinf;
161 for(
unsigned int r=0;
r<nraws;
r++)
162 rawinf.push_back(PHout.
raws[
r]);
164 for(
unsigned int d=0;
d<ndigit;
d++)
165 dgtinf.push_back(PHout.
dgtz[
d]);
177 for(map<string, string>::iterator it=sims.begin(); it!=sims.end(); it++)
179 data.push_back(it->first +
": " + it->second +
" ");
182 event =
new evioDOMTree(1, 0);
184 *
event << evioDOMNode::createEvioDOMNode(5, 1, data);
vector< vector< int > > dgtinfos
void WriteGenerated(MOutputs *, vector< MGeneratedParticle >)
Pure Virtual Method to write generated particles infos.
vector< double > raws
Raw information.
void RecordAndClear(MOutputs *, MBank)
Pure Virtual Method to record hits in event / then clear hits objects on heap.
void SaveSimConditions(MOutputs *, map< string, string >)
Pure Virtual Method to save the simulation conditions on the file.
vector< int > id
Output variable identifier.
vector< string > name
Variable name.
void SetBankHeader(int, string, MOutputs *)
Pure Virtual Method to set the bank header.
vector< int > type
Type of variable: 0=int, 1=double.
map< string, opts > args
Options map.
void WriteEvent(MOutputs *)
Pure Virtual Method to write event on disk.
void SetOutpHeader(header, MOutputs *)
Pure Virtual Method to set the output header. MOutputs needed for some output (txt) ...
vector< int > dgtz
Digitized information.
vector< vector< double > > rawinfos
void ProcessOutput(PH_output, MOutputs *, MBank)
Pure Virtual Method to process the output.