// %%%%%%%%%%%%% // gemc headers // %%%%%%%%%%%%% #include "evio_output.h" #include void evio_output :: RecordAndClear(MOutputs* output, MBank mbank) { // Need to reorganize the vectors. // First index must be variable index // Second index must be hit number index vector > rawinfv; vector > dgtinfv; int NHITS = rawinfos.size(); if(NHITS) { int NVARSR = rawinfos[0].size(); int NVARSD = dgtinfos[0].size(); // cout << NHITS << " " << NVARSR << " " << NVARSD << endl; rawinfv.resize(NVARSR); dgtinfv.resize(NVARSD); for(int i=0; i> TAG=bankID NUM=1 << // hit size should be the same as bitId size // if(NHITS != bitId.size()) cout << " Alarm! " << NHITS << " " << bitId.size() << endl; // // *bankevent << evioDOMNode::createEvioDOMNode(bankID, 1, bitId); // // creating dgthitbank, inserting it in bankevent >> TAG=bankID NUM=100 << // if(NVARSD) // { // // evioDOMNodeP dgtbankhit = evioDOMNode::createEvioDOMNode(bankID, 100); // *bankevent << dgtbankhit; // for(int d=0; d> TAG=bankID NUM=200 << // if(NVARSR) // { // // evioDOMNodeP rawbankhit = evioDOMNode::createEvioDOMNode(bankID, 200); // *bankevent << rawbankhit; // for(int r=0; rpchan->write(*event); // delete event; } void evio_output :: SetOutpHeader(int evtn, MOutputs* output) { // event = new evioDOMTree(1, 0); // creating and inserting head bank >> TAG=1 NUM=1 << // evioDOMNodeP head = evioDOMNode::createEvioDOMNode(1, 1); // *event << evioDOMNode::createEvioDOMNode(1, 1, &evtn, 1); } void evio_output :: WriteGenerated(MOutputs* output, vector MGP) { double MAXP = output->gemcOpt.args["NGENP"].arg; // creating and inserting generated particles bank >> TAG=10 NUM=10 << // generatedp = evioDOMNode::createEvioDOMNode(10, 10); int NP = MGP.size(); vector< vector > gensinfos; for(int i=0; i geninfo; geninfo.push_back((double) MGP[i].PID); geninfo.push_back(MGP[i].momentum.getX()/MeV); geninfo.push_back(MGP[i].momentum.getY()/MeV); geninfo.push_back(MGP[i].momentum.getZ()/MeV); geninfo.push_back(MGP[i].vertex.getX()/cm); geninfo.push_back(MGP[i].vertex.getY()/cm); geninfo.push_back(MGP[i].vertex.getZ()/cm); gensinfos.push_back(geninfo); } // for(int p=0; p rawinf; vector dgtinf; for(int r=0; r