99 #include <JANA/JEventProcessor.h>
100 #include <JANA/JFactory_base.h>
101 #include <JANA/JApplication.h>
102 #include <JANA/JEventLoop.h>
103 using namespace jana;
117 #include "FCAL/DFCALPhoton.h"
121 #include "BCAL/DBCALPhoton.h"
127 #include "TOF/DTOFRawHit.h"
128 #include "TOF/DTOFRawHitMC.h"
139 #include "PID/DPhoton.h"
141 #include "PID/DChargedTruthMatch.h"
154 #include "evioFileChannel.hxx"
155 #include "evioUtil.hxx"
156 using namespace evio;
160 #include "danaevio/dana_evio_dict.h"
165 static map< string, pair<uint16_t,uint8_t> >
tagMap;
169 static pthread_mutex_t
initMutex = PTHREAD_MUTEX_INITIALIZER;
178 static bool done_once_only =
false;
179 static string danaevio =
"";
190 if(!done_once_only) {
194 gPARMS->SetDefaultParameter(
"EVIO:DANAEVIO",danaevio);
197 get_tagNum_dictionary();
200 setEVIOMap(danaevio);
204 map<string, set<string> >::iterator iter1;
205 set<string>::iterator iter2;
206 jout << endl << endl << endl <<
" DANA object output flags:" << endl << endl;
207 for(iter1=evioMap.begin(); iter1!=evioMap.end(); iter1++) {
208 jout <<
" " << setiosflags(ios::left) << setw(20) << iter1->first+
":";
209 if(iter1->second.size()>0) {
210 for(iter2=iter1->second.begin(); iter2!=iter1->second.end(); iter2++) {
211 jout << setw(20) <<
string(((*iter2).size()>0)?(*iter2):(
"untagged")) <<
string(
" ");
214 jout << setw(20) <<
"(not selected)";
218 jout << endl << endl<< endl;
223 setEVIOMap(danaevio);
250 if(danaevio==NULL)
return;
251 if(danaevio.size()<=0)
return;
254 map< string, set<string> >::iterator iter;
255 vector<string> params;
256 SplitString<string>(danaevio,params,
",");
257 for(
unsigned int i=0; i<params.size(); i++) {
259 vector<string> paramsCS(params);
260 std::transform(params[i].begin(), params[i].end(), params[i].begin(), (
int(*)(
int)) tolower);
261 bool plus=(params[i][0]==
'+');
262 bool minus=(params[i][0]==
'-');
264 string value = params[i].substr((plus||minus)?1:0);
265 string valueCS = paramsCS[i].substr((plus||minus)?1:0);
269 for(iter=evioMap.begin(); iter!=evioMap.end(); iter++)
if(!minus) iter->second.insert(
"");
else iter->second.erase(
"");
271 }
else if(value==
"none") {
272 for(iter=evioMap.begin(); iter!=evioMap.end(); iter++)
if(minus) iter->second.insert(
"");
else iter->second.erase(
"");
273 }
else if(value==
"truth") {
274 if(!minus) evioMap[
"dbeamphoton"].insert(
"");
else evioMap[
"dbeamphoton"].erase(
"");
275 if(!minus) evioMap[
"dmcthrown"].insert(
"");
else evioMap[
"dmcthrown"].erase(
"");
276 if(!minus) evioMap[
"dmctrackhit"].insert(
"");
else evioMap[
"dmctrackhit"].erase(
"");
277 if(!minus) evioMap[
"dfcaltruthshower"].insert(
"");
else evioMap[
"dfcaltruthshower"].erase(
"");
278 if(!minus) evioMap[
"dbcaltruthshower"].insert(
"");
else evioMap[
"dbcaltruthshower"].erase(
"");
279 if(!minus) evioMap[
"dtoftruth"].insert(
"");
else evioMap[
"dtoftruth"].erase(
"");
280 if(!minus) evioMap[
"dsctruth"].insert(
"");
else evioMap[
"dsctruth"].erase(
"");
281 if(!minus) evioMap[
"dtofrawhitmc"].insert(
"");
else evioMap[
"dtofrawhitmc"].erase(
"");
284 }
else if(value==
"hits") {
285 if(!minus) evioMap[
"dcdchit"].insert(
"");
else evioMap[
"dcdchit"].erase(
"");
286 if(!minus) evioMap[
"dfdchit"].insert(
"");
else evioMap[
"dfdchit"].erase(
"");
287 if(!minus) evioMap[
"dfcalhit"].insert(
"");
else evioMap[
"dfcalhit"].erase(
"");
288 if(!minus) evioMap[
"dbcalhit"].insert(
"");
else evioMap[
"dbcalhit"].erase(
"");
289 if(!minus) evioMap[
"dschit"].insert(
"");
else evioMap[
"dschit"].erase(
"");
290 if(!minus) evioMap[
"dtofrawhit"].insert(
"");
else evioMap[
"dtofrawhit"].erase(
"");
292 }
else if(value==
"tracks") {
293 if(!minus) evioMap[
"dtrackwirebased"].insert(
"");
else evioMap[
"dtrackwirebased"].erase(
"");
294 if(!minus) evioMap[
"dtracktimebased"].insert(
"");
else evioMap[
"dtracktimebased"].erase(
"");
295 if(!minus) evioMap[
"dchargedtrack"].insert(
"");
else evioMap[
"dchargedtrack"].erase(
"");
296 if(!minus) evioMap[
"dphoton"].insert(
"");
else evioMap[
"dphoton"].erase(
"");
297 if(!minus) evioMap[
"dcdctrackhit"].insert(
"");
else evioMap[
"dcdctrackhit"].erase(
"");
298 if(!minus) evioMap[
"dfdcpseudo"].insert(
"");
else evioMap[
"dfdcpseudo"].erase(
"");
302 string::size_type colon = value.find(
":");
305 if(colon!=string::npos) {
306 name = value.substr(0,colon);
307 tag = valueCS.substr(colon+1);
310 map< string, set<string> >::iterator found = evioMap.find(name);
311 if(found!=evioMap.end()) {
312 if(!minus)found->second.insert(tag);
else found->second.erase(tag);
314 jerr << endl <<
" ?unknown DANAEVIO parameter: " << params[i] << endl;
329 XML_Parser xmlParser = XML_ParserCreate(NULL);
334 if(XML_Parse(xmlParser,dana_evio_dict_String.c_str(),dana_evio_dict_String.size(),
true)!=0) {
335 jout << endl << endl <<
" Successfully loaded default tag/num dictionary" << endl << endl << endl;
337 jerr << endl << endl << endl <<
" ?get_tagNum_dictionary...parse error for default string"
338 << endl << endl <<
" " << XML_ErrorString(XML_GetErrorCode(xmlParser))
339 << endl << endl << endl;
341 XML_ParserFree(xmlParser);
345 string danadict =
"";
346 gPARMS->SetDefaultParameter(
"EVIO:DANADICT",danadict);
349 const int bufSize = 10000;
353 XML_Parser xmlParser2 = XML_ParserCreate(NULL);
357 FILE *
f = fopen(danadict.c_str(),
"r");
363 len = fread(buf,1,bufSize,f);
365 status=XML_Parse(xmlParser2,buf,len,done);
366 if((!done)&&(status==0)) {
367 jerr << endl << endl << endl <<
" ?read_custom_dictionary...parseXMLFile parse error for " << danadict
368 << endl << endl << XML_ErrorString(XML_GetErrorCode(xmlParser2))
369 << endl << endl << endl;
371 XML_ParserFree(xmlParser2);
378 jerr << endl << endl << endl <<
" ?Unable to read custom tag/num dictionary: " << danadict
379 << endl << endl << endl;
380 XML_ParserFree(xmlParser2);
385 jout << endl << endl <<
" Using custom tag/num dictionary: " << danadict << endl << endl << endl;
386 XML_ParserFree(xmlParser2);
400 if( (strcasecmp(xmlname,
"xmldumpDictEntry")!=0) &&
401 (strcasecmp(xmlname,
"evioDictEntry")!=0) &&
402 (strcasecmp(xmlname,
"danaevioDictEntry")!=0)
409 for (
int i=0; atts[i]; i+=2) {
410 if(strcasecmp(atts[i],
"name")==0) {
412 }
else if(strcasecmp(atts[i],
"tag")==0) {
413 tag = atoi(atts[i+1]);
414 }
else if(strcasecmp(atts[i],
"num")==0) {
415 num = atoi(atts[i+1]);
420 tagMap[name]=pair<uint16_t,uint8_t>(tag,num);
444 pair<uint16_t,uint8_t> p =
tagMap[
"DanaEvent"];
446 _data.push_back(myDDANAEVIODOMTree);
450 if(evioMap[
"dmctrackhit" ].
size()>0) addDMCTrackHit( eventLoop, myDDANAEVIODOMTree->
tree);
451 if(evioMap[
"dbeamphoton" ].
size()>0) addDBeamPhoton( eventLoop, myDDANAEVIODOMTree->
tree);
452 if(evioMap[
"dmcthrown" ].
size()>0) addDMCThrown( eventLoop, myDDANAEVIODOMTree->
tree);
453 if(evioMap[
"dfcaltruthshower" ].
size()>0) addDFCALTruthShower( eventLoop, myDDANAEVIODOMTree->
tree);
454 if(evioMap[
"dbcaltruthshower" ].
size()>0) addDBCALTruthShower( eventLoop, myDDANAEVIODOMTree->
tree);
455 if(evioMap[
"dtoftruth" ].
size()>0) addDTOFTruth( eventLoop, myDDANAEVIODOMTree->
tree);
456 if(evioMap[
"dsctruthhit" ].
size()>0) addDSCTruthHit( eventLoop, myDDANAEVIODOMTree->
tree);
457 if(evioMap[
"dmctrajectorypoint" ].
size()>0) addDMCTrajectoryPoint( eventLoop, myDDANAEVIODOMTree->
tree);
459 if(evioMap[
"dcdchit" ].
size()>0) addDCDCHit( eventLoop, myDDANAEVIODOMTree->
tree);
460 if(evioMap[
"dfdchit" ].
size()>0) addDFDCHit( eventLoop, myDDANAEVIODOMTree->
tree);
461 if(evioMap[
"dbcalhit" ].
size()>0) addDBCALHit( eventLoop, myDDANAEVIODOMTree->
tree);
462 if(evioMap[
"dfcalhit" ].
size()>0) addDFCALHit( eventLoop, myDDANAEVIODOMTree->
tree);
463 if(evioMap[
"dtofrawhitmc" ].
size()>0) addDTOFRawHitMC( eventLoop, myDDANAEVIODOMTree->
tree);
464 if(evioMap[
"dschit" ].
size()>0) addDSCHit( eventLoop, myDDANAEVIODOMTree->
tree);
465 if(evioMap[
"dtagmhit" ].
size()>0) addDTAGMHit( eventLoop, myDDANAEVIODOMTree->
tree);
466 if(evioMap[
"dtaghhit" ].
size()>0) addDTAGHHit( eventLoop, myDDANAEVIODOMTree->
tree);
468 if(evioMap[
"dcdctrackhit" ].
size()>0) addDCDCTrackHit( eventLoop, myDDANAEVIODOMTree->
tree);
469 if(evioMap[
"dfdcpseudo" ].
size()>0) addDFDCPseudo( eventLoop, myDDANAEVIODOMTree->
tree);
470 if(evioMap[
"dtrackwirebased" ].
size()>0) addDTrackWireBased( eventLoop, myDDANAEVIODOMTree->
tree);
471 if(evioMap[
"dtracktimebased" ].
size()>0) addDTrackTimeBased( eventLoop, myDDANAEVIODOMTree->
tree);
472 if(evioMap[
"dchargedtrack" ].
size()>0) addDChargedTrack( eventLoop, myDDANAEVIODOMTree->
tree);
473 if(evioMap[
"dphoton" ].
size()>0) addDPhoton( eventLoop, myDDANAEVIODOMTree->
tree);
474 if(evioMap[
"dvertex" ].
size()>0) addDVertex( eventLoop, myDDANAEVIODOMTree->
tree);
475 if(evioMap[
"dtrackcandidate" ].
size()>0) addDTrackCandidate( eventLoop, myDDANAEVIODOMTree->
tree);
476 if(evioMap[
"dbcalphoton" ].
size()>0) addDBCALPhoton( eventLoop, myDDANAEVIODOMTree->
tree);
477 if(evioMap[
"dfcalphoton" ].
size()>0) addDFCALPhoton( eventLoop, myDDANAEVIODOMTree->
tree);
478 if(evioMap[
"dchargedtruthmatch" ].
size()>0) addDChargedTruthMatch( eventLoop, myDDANAEVIODOMTree->
tree);
479 if(evioMap[
"dtofrawhit" ].
size()>0) addDTOFRawHit( eventLoop, myDDANAEVIODOMTree->
tree);
480 if(evioMap[
"dtofhit" ].
size()>0) addDTOFHit( eventLoop, myDDANAEVIODOMTree->
tree);
481 if(evioMap[
"dtofpoint" ].
size()>0) addDTOFPoint( eventLoop, myDDANAEVIODOMTree->
tree);
482 if(evioMap[
"dbcalshower" ].
size()>0) addDBCALShower( eventLoop, myDDANAEVIODOMTree->
tree);
483 if(evioMap[
"dfcalcluster" ].
size()>0) addDFCALCluster( eventLoop, myDDANAEVIODOMTree->
tree);
484 if(evioMap[
"dfdccathodecluster" ].
size()>0) addDFDCCathodeCluster( eventLoop, myDDANAEVIODOMTree->
tree);
485 if(evioMap[
"dfdcsegment" ].
size()>0) addDFDCSegment( eventLoop, myDDANAEVIODOMTree->
tree);
490 addObjIdBank(myDDANAEVIODOMTree->
tree);
501 pair<uint16_t,uint8_t> p =
tagMap[nameId];;
502 return(evioDOMNode::createEvioDOMNode<T>(p.first,p.second));
511 pair<uint16_t,uint8_t> p =
tagMap[nameId];;
512 return(evioDOMNode::createEvioDOMNode(p.first,p.second));
523 evioDOMNodeP objIdBank = createContainerNode(
"objIdBank");
528 evioDOMNodeP idBank = createLeafNode<uint64_t> (
"objIdBank.id");
529 evioDOMNodeP nameTagBank = createLeafNode<string> (
"objIdBank.nameTag");
530 *objIdBank << idBank << nameTagBank;
534 map<int,string>::iterator iter;
535 for(iter=objIdMap.begin(); iter!=objIdMap.end(); iter++) {
536 *idBank << iter->first;
537 *nameTagBank << iter->second;
550 evioDOMNodeP mcthrown = createContainerNode(
"DMCThrown");
555 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DMCThrown.objId");
556 evioDOMNodeP typeBank = createLeafNode<int> (
"DMCThrown.type");
557 evioDOMNodeP pdgtypeBank = createLeafNode<int> (
"DMCThrown.pdgtype");
558 evioDOMNodeP myidBank = createLeafNode<int> (
"DMCThrown.myid");
559 evioDOMNodeP parentidBank = createLeafNode<int> (
"DMCThrown.parentid");
560 evioDOMNodeP mechBank = createLeafNode<int> (
"DMCThrown.mech");
561 evioDOMNodeP xBank = createLeafNode<float> (
"DMCThrown.x");
562 evioDOMNodeP yBank = createLeafNode<float> (
"DMCThrown.y");
563 evioDOMNodeP zBank = createLeafNode<float> (
"DMCThrown.z");
564 evioDOMNodeP pxBank = createLeafNode<float> (
"DMCThrown.px");
565 evioDOMNodeP pyBank = createLeafNode<float> (
"DMCThrown.py");
566 evioDOMNodeP pzBank = createLeafNode<float> (
"DMCThrown.pz");
567 evioDOMNodeP energyBank = createLeafNode<float> (
"DMCThrown.energy");
568 *mcthrown << objIdBank << typeBank << pdgtypeBank << myidBank << parentidBank << mechBank
569 << xBank << yBank << zBank << pxBank << pyBank << pzBank << energyBank;
573 evioDOMNodeP assocBank = createContainerNode(
"DMCThrown.assocObjectBanks");
574 *mcthrown << assocBank;
579 set<string>::iterator iter;
580 for(iter=evioMap[
"dmcthrown"].begin(); iter!=evioMap[
"dmcthrown"].end(); iter++) {
582 vector<const DMCThrown*> mcthrowns;
583 eventLoop->Get(mcthrowns,(*iter).c_str());
584 if(mcthrowns.size()<=0)
continue;
588 for(
unsigned int i=0; i<mcthrowns.size(); i++) {
589 *objIdBank << mcthrowns[i]->id;
590 *typeBank << mcthrowns[i]->type;
591 *pdgtypeBank << mcthrowns[i]->pdgtype;
592 *myidBank << mcthrowns[i]->myid;
593 *parentidBank << mcthrowns[i]->parentid;
594 *mechBank << mcthrowns[i]->mech;
596 DVector3 pos = mcthrowns[i]->position();
601 DVector3 mom = mcthrowns[i]->momentum();
606 *energyBank << mcthrowns[i]->energy();
608 objIdMap[mcthrowns[i]->id]=mcthrowns[i]->GetNameTag();
612 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DMCThrown.assocObjects");
613 *assocBank << assocObjs;
616 vector<const JObject*> objs;
617 mcthrowns[i]->GetT(objs);
618 for(
unsigned int j=0; j<objs.size(); j++) {
620 *assocObjs << objs[j]->id;
621 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
625 if(assocCount==0)assocBank->cutAndDelete();
637 evioDOMNodeP mctrackhit = createContainerNode(
"DMCTrackHit");
642 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DMCTrackHit.objId");
643 evioDOMNodeP rBank = createLeafNode<float> (
"DMCTrackHit.r");
644 evioDOMNodeP phiBank = createLeafNode<float> (
"DMCTrackHit.phi");
645 evioDOMNodeP zBank = createLeafNode<float> (
"DMCTrackHit.z");
646 evioDOMNodeP trackBank = createLeafNode<int> (
"DMCTrackHit.track");
647 evioDOMNodeP primaryBank = createLeafNode<int> (
"DMCTrackHit.primary");
648 evioDOMNodeP ptypeBank = createLeafNode<int> (
"DMCTrackHit.ptype");
649 evioDOMNodeP systemBank = createLeafNode<int> (
"DMCTrackHit.system");
650 *mctrackhit << objIdBank << rBank << phiBank << zBank << trackBank << primaryBank
651 << ptypeBank << systemBank;
655 evioDOMNodeP assocBank = createContainerNode(
"DMCTrackHit.assocObjectBanks");
656 *mctrackhit << assocBank;
661 set<string>::iterator iter;
662 for(iter=evioMap[
"dmctrackhit"].begin(); iter!=evioMap[
"dmctrackhit"].end(); iter++) {
665 vector<const DMCTrackHit*> mctrackhits;
666 eventLoop->Get(mctrackhits,(*iter).c_str());
667 if(mctrackhits.size()<=0)
continue;
671 for(
unsigned int i=0; i<mctrackhits.size(); i++) {
672 *objIdBank << mctrackhits[i]->id;
673 *rBank << mctrackhits[i]->r;
674 *phiBank << mctrackhits[i]->phi;
675 *zBank << mctrackhits[i]->z;
676 *trackBank << mctrackhits[i]->track;
677 *primaryBank << mctrackhits[i]->primary;
678 *ptypeBank << mctrackhits[i]->ptype;
679 *systemBank << mctrackhits[i]->system;
681 objIdMap[mctrackhits[i]->id]=mctrackhits[i]->GetNameTag();
685 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DMCTrackHit.assocObjects");
686 *assocBank << assocObjs;
689 vector<const JObject*> objs;
690 mctrackhits[i]->GetT(objs);
691 for(
unsigned int j=0; j<objs.size(); j++) {
693 *assocObjs << objs[j]->id;
694 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
698 if(assocCount==0)assocBank->cutAndDelete();
710 evioDOMNodeP toftruth = createContainerNode(
"DTOFTruth");
715 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DTOFTruth.objId");
716 evioDOMNodeP trackBank = createLeafNode<int> (
"DTOFTruth.track");
717 evioDOMNodeP primaryBank = createLeafNode<int> (
"DTOFTruth.primary");
718 evioDOMNodeP xBank = createLeafNode<float> (
"DTOFTruth.x");
719 evioDOMNodeP yBank = createLeafNode<float> (
"DTOFTruth.y");
720 evioDOMNodeP zBank = createLeafNode<float> (
"DTOFTruth.z");
721 evioDOMNodeP pxBank = createLeafNode<float> (
"DTOFTruth.px");
722 evioDOMNodeP pyBank = createLeafNode<float> (
"DTOFTruth.py");
723 evioDOMNodeP pzBank = createLeafNode<float> (
"DTOFTruth.pz");
724 evioDOMNodeP tBank = createLeafNode<float> (
"DTOFTruth.t");
725 evioDOMNodeP EBank = createLeafNode<float> (
"DTOFTruth.E");
726 evioDOMNodeP ptypeBank = createLeafNode<int> (
"DTOFTruth.ptype");
727 *toftruth << objIdBank << trackBank << primaryBank << xBank << yBank << zBank
728 << pxBank << pyBank << pzBank << tBank << EBank << ptypeBank;
732 evioDOMNodeP assocBank = createContainerNode(
"DTOFTruth.assocObjectBanks");
733 *toftruth << assocBank;
738 set<string>::iterator iter;
739 for(iter=evioMap[
"dtoftruth"].begin(); iter!=evioMap[
"dtoftruth"].end(); iter++) {
742 vector<const DTOFTruth*> toftruths;
743 eventLoop->Get(toftruths,(*iter).c_str());
744 if(toftruths.size()<=0)
continue;
748 for(
unsigned int i=0; i<toftruths.size(); i++) {
749 *objIdBank << toftruths[i]->id;
750 *trackBank << toftruths[i]->track;
751 *primaryBank << toftruths[i]->primary;
752 *xBank << toftruths[i]->x;
753 *yBank << toftruths[i]->y;
754 *zBank << toftruths[i]->z;
755 *pxBank << toftruths[i]->px;
756 *pyBank << toftruths[i]->py;
757 *pzBank << toftruths[i]->pz;
758 *tBank << toftruths[i]->t;
759 *EBank << toftruths[i]->E;
760 *ptypeBank << toftruths[i]->ptype;
762 objIdMap[toftruths[i]->id]=toftruths[i]->GetNameTag();
766 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DTOFTruth.assocObjects");
767 *assocBank << assocObjs;
770 vector<const JObject*> objs;
771 toftruths[i]->GetT(objs);
772 for(
unsigned int j=0; j<objs.size(); j++) {
774 *assocObjs << objs[j]->id;
775 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
779 if(assocCount==0)assocBank->cutAndDelete();
792 evioDOMNodeP fcaltruthshower = createContainerNode(
"DFCALTruthShower");
793 tree << fcaltruthshower;
797 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DFCALTruthShower.objId");
798 evioDOMNodeP xBank = createLeafNode<float> (
"DFCALTruthShower.x");
799 evioDOMNodeP yBank = createLeafNode<float> (
"DFCALTruthShower.y");
800 evioDOMNodeP zBank = createLeafNode<float> (
"DFCALTruthShower.z");
801 evioDOMNodeP tBank = createLeafNode<float> (
"DFCALTruthShower.t");
802 evioDOMNodeP pxBank = createLeafNode<float> (
"DFCALTruthShower.px");
803 evioDOMNodeP pyBank = createLeafNode<float> (
"DFCALTruthShower.py");
804 evioDOMNodeP pzBank = createLeafNode<float> (
"DFCALTruthShower.pz");
805 evioDOMNodeP EBank = createLeafNode<float> (
"DFCALTruthShower.E");
806 evioDOMNodeP primaryBank = createLeafNode<float> (
"DFCALTruthShower.primary");
807 evioDOMNodeP trackBank = createLeafNode<float> (
"DFCALTruthShower.track");
808 evioDOMNodeP typeBank = createLeafNode<float> (
"DFCALTruthShower.type");
809 *fcaltruthshower << objIdBank << xBank << yBank << zBank << tBank << pxBank << pyBank<< pzBank
810 << EBank << primaryBank<< trackBank<< typeBank;
814 evioDOMNodeP assocBank = createContainerNode(
"DFCALTruthShower.assocObjectBanks");
815 *fcaltruthshower<< assocBank;
820 set<string>::iterator iter;
821 for(iter=evioMap[
"dfcaltruthshower"].begin(); iter!=evioMap[
"dfcaltruthshower"].end(); iter++) {
824 vector<const DFCALTruthShower*> fcaltruthshowers;
825 eventLoop->Get(fcaltruthshowers,(*iter).c_str());
826 if(fcaltruthshowers.size()<=0)
continue;
830 for(
unsigned int i=0; i<fcaltruthshowers.size(); i++) {
831 *objIdBank << fcaltruthshowers[i]->id;
832 *xBank << fcaltruthshowers[i]->x();
833 *yBank << fcaltruthshowers[i]->y();
834 *zBank << fcaltruthshowers[i]->z();
835 *tBank << fcaltruthshowers[i]->t();
836 *pxBank << fcaltruthshowers[i]->px();
837 *pyBank << fcaltruthshowers[i]->py();
838 *pzBank << fcaltruthshowers[i]->pz();
839 *EBank << fcaltruthshowers[i]->E();
840 *primaryBank << fcaltruthshowers[i]->primary();
841 *trackBank << fcaltruthshowers[i]->track();
842 *typeBank << fcaltruthshowers[i]->type();
844 objIdMap[fcaltruthshowers[i]->id]=fcaltruthshowers[i]->GetNameTag();
848 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DFCALTruthShower.assocObjects");
849 *assocBank << assocObjs;
852 vector<const JObject*> objs;
853 fcaltruthshowers[i]->GetT(objs);
854 for(
unsigned int j=0; j<objs.size(); j++) {
856 *assocObjs << objs[j]->id;
857 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
861 if(assocCount==0)assocBank->cutAndDelete();
873 evioDOMNodeP bcaltruthshower = createContainerNode(
"DBCALTruthShower");
874 tree << bcaltruthshower;
878 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DBCALTruthShower.objId");
879 evioDOMNodeP trackBank = createLeafNode<int> (
"DBCALTruthShower.track");
880 evioDOMNodeP primaryBank = createLeafNode<int> (
"DBCALTruthShower.primary");
881 evioDOMNodeP phiBank = createLeafNode<float> (
"DBCALTruthShower.phi");
882 evioDOMNodeP rBank = createLeafNode<float> (
"DBCALTruthShower.r");
883 evioDOMNodeP zBank = createLeafNode<float> (
"DBCALTruthShower.z");
884 evioDOMNodeP tBank = createLeafNode<float> (
"DBCALTruthShower.t");
885 evioDOMNodeP EBank = createLeafNode<float> (
"DBCALTruthShower.E");
886 *bcaltruthshower << objIdBank << trackBank << primaryBank << phiBank << rBank
887 << zBank << tBank << EBank;
891 evioDOMNodeP assocBank = createContainerNode(
"DBCALTruthShower.assocObjectBanks");
892 *bcaltruthshower<< assocBank;
897 set<string>::iterator iter;
898 for(iter=evioMap[
"dbcaltruthshower"].begin(); iter!=evioMap[
"dbcaltruthshower"].end(); iter++) {
901 vector<const DBCALTruthShower*> bcaltruthshowers;
902 eventLoop->Get(bcaltruthshowers,(*iter).c_str());
903 if(bcaltruthshowers.size()<=0)
continue;
907 for(
unsigned int i=0; i<bcaltruthshowers.size(); i++) {
908 *objIdBank << bcaltruthshowers[i]->id;
909 *trackBank << bcaltruthshowers[i]->track;
910 *primaryBank << bcaltruthshowers[i]->primary;
911 *phiBank << bcaltruthshowers[i]->phi;
912 *rBank << bcaltruthshowers[i]->r;
913 *zBank << bcaltruthshowers[i]->z;
914 *tBank << bcaltruthshowers[i]->t;
915 *EBank << bcaltruthshowers[i]->E;
917 objIdMap[bcaltruthshowers[i]->id]=bcaltruthshowers[i]->GetNameTag();
921 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DBCALTruthShower.assocObjects");
922 *assocBank << assocObjs;
925 vector<const JObject*> objs;
926 bcaltruthshowers[i]->GetT(objs);
927 for(
unsigned int j=0; j<objs.size(); j++) {
929 *assocObjs << objs[j]->id;
930 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
934 if(assocCount==0)assocBank->cutAndDelete();
946 evioDOMNodeP cdchit = createContainerNode(
"DCDCHit");
951 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DCDCHit.objId");
952 evioDOMNodeP ringBank = createLeafNode<int> (
"DCDCHit.ring");
953 evioDOMNodeP strawBank = createLeafNode<int> (
"DCDCHit.straw");
954 evioDOMNodeP dEBank = createLeafNode<float> (
"DCDCHit.dE");
955 evioDOMNodeP tBank = createLeafNode<float> (
"DCDCHit.t");
956 *cdchit << objIdBank << ringBank << strawBank << dEBank << tBank;
960 evioDOMNodeP assocBank = createContainerNode(
"DCDCHit.assocObjectBanks");
961 *cdchit << assocBank;
966 set<string>::iterator iter;
967 for(iter=evioMap[
"dcdchit"].begin(); iter!=evioMap[
"dcdchit"].end(); iter++) {
970 vector<const DCDCHit*> cdchits;
971 eventLoop->Get(cdchits,(*iter).c_str());
972 if(cdchits.size()<=0)
continue;
976 for(
unsigned int i=0; i<cdchits.size(); i++) {
977 *objIdBank << cdchits[i]->id;
978 *ringBank << cdchits[i]->ring;
979 *strawBank << cdchits[i]->straw;
980 *dEBank << cdchits[i]->dE;
981 *tBank << cdchits[i]->t;
983 objIdMap[cdchits[i]->id]=cdchits[i]->GetNameTag();
987 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DCDCHit.assocObjects");
988 *assocBank << assocObjs;
991 vector<const JObject*> objs;
992 cdchits[i]->GetT(objs);
993 for(
unsigned int j=0; j<objs.size(); j++) {
995 *assocObjs << objs[j]->id;
996 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1000 if(assocCount==0)assocBank->cutAndDelete();
1012 evioDOMNodeP mctrajectorypoint = createContainerNode(
"DMCTrajectoryPoint");
1013 tree << mctrajectorypoint;
1017 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DMCTrajectoryPoint.objId");
1018 evioDOMNodeP xBank = createLeafNode<float> (
"DMCTrajectoryPoint.x");
1019 evioDOMNodeP yBank = createLeafNode<float> (
"DMCTrajectoryPoint.y");
1020 evioDOMNodeP zBank = createLeafNode<float> (
"DMCTrajectoryPoint.z");
1021 evioDOMNodeP pxBank = createLeafNode<float> (
"DMCTrajectoryPoint.px");
1022 evioDOMNodeP pyBank = createLeafNode<float> (
"DMCTrajectoryPoint.py");
1023 evioDOMNodeP pzBank = createLeafNode<float> (
"DMCTrajectoryPoint.pz");
1024 evioDOMNodeP EBank = createLeafNode<float> (
"DMCTrajectoryPoint.E");
1025 evioDOMNodeP dEBank = createLeafNode<float> (
"DMCTrajectoryPoint.dE");
1026 evioDOMNodeP primary_trackBank = createLeafNode<int> (
"DMCTrajectoryPoint.primary_track");
1027 evioDOMNodeP trackBank = createLeafNode<int> (
"DMCTrajectoryPoint.track");
1028 evioDOMNodeP partBank = createLeafNode<int> (
"DMCTrajectoryPoint.part");
1029 evioDOMNodeP radlenBank = createLeafNode<float> (
"DMCTrajectoryPoint.radlen");
1030 evioDOMNodeP stepBank = createLeafNode<float> (
"DMCTrajectoryPoint.step");
1031 evioDOMNodeP mechBank = createLeafNode<int> (
"DMCTrajectoryPoint.mech");
1032 *mctrajectorypoint << objIdBank << xBank << yBank << zBank << pxBank << pyBank << pzBank << EBank << dEBank
1033 << primary_trackBank << trackBank << partBank << radlenBank << stepBank << mechBank;
1037 evioDOMNodeP assocBank = createContainerNode(
"DMCTrajectoryPoint.assocObjectBanks");
1038 *mctrajectorypoint << assocBank;
1043 set<string>::iterator iter;
1044 for(iter=evioMap[
"dmctrajectorypoint"].begin(); iter!=evioMap[
"dmctrajectorypoint"].end(); iter++) {
1047 vector<const DMCTrajectoryPoint*> mctrajectorypoints;
1048 eventLoop->Get(mctrajectorypoints,(*iter).c_str());
1049 if(mctrajectorypoints.size()<=0)
continue;
1053 for(
unsigned int i=0; i<mctrajectorypoints.size(); i++) {
1054 *objIdBank << mctrajectorypoints[i]->id;
1055 *xBank << mctrajectorypoints[i]->x;
1056 *yBank << mctrajectorypoints[i]->y;
1057 *zBank << mctrajectorypoints[i]->z;
1058 *pxBank << mctrajectorypoints[i]->px;
1059 *pyBank << mctrajectorypoints[i]->py;
1060 *pzBank << mctrajectorypoints[i]->pz;
1061 *EBank << mctrajectorypoints[i]->E;
1062 *dEBank << mctrajectorypoints[i]->dE;
1063 *primary_trackBank << mctrajectorypoints[i]->primary_track;
1064 *trackBank << mctrajectorypoints[i]->track;
1065 *partBank << mctrajectorypoints[i]->part;
1066 *radlenBank << mctrajectorypoints[i]->radlen;
1067 *stepBank << mctrajectorypoints[i]->step;
1068 *mechBank << mctrajectorypoints[i]->mech;
1070 objIdMap[mctrajectorypoints[i]->id]=mctrajectorypoints[i]->GetNameTag();
1074 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DMCTrajectoryPoint.assocObjects");
1075 *assocBank << assocObjs;
1078 vector<const JObject*> objs;
1079 mctrajectorypoints[i]->GetT(objs);
1080 for(
unsigned int j=0; j<objs.size(); j++) {
1082 *assocObjs << objs[j]->id;
1083 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1087 if(assocCount==0)assocBank->cutAndDelete();
1099 evioDOMNodeP fdchit = createContainerNode(
"DFDCHit");
1104 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DFDCHit.objId");
1105 evioDOMNodeP layerBank = createLeafNode<int> (
"DFDCHit.layer");
1106 evioDOMNodeP moduleBank = createLeafNode<int> (
"DFDCHit.module");
1107 evioDOMNodeP elementBank = createLeafNode<int> (
"DFDCHit.element");
1108 evioDOMNodeP planeBank = createLeafNode<int> (
"DFDCHit.plane");
1109 evioDOMNodeP gPlaneBank = createLeafNode<int> (
"DFDCHit.gPlane");
1110 evioDOMNodeP gLayerBank = createLeafNode<int> (
"DFDCHit.gLayer");
1111 evioDOMNodeP qBank = createLeafNode<float> (
"DFDCHit.q");
1112 evioDOMNodeP tBank = createLeafNode<float> (
"DFDCHit.t");
1113 evioDOMNodeP rBank = createLeafNode<float> (
"DFDCHit.r");
1114 evioDOMNodeP typeBank = createLeafNode<int> (
"DFDCHit.type");
1115 *fdchit << objIdBank << layerBank << moduleBank << elementBank << planeBank
1116 << gPlaneBank << gLayerBank << qBank << tBank << rBank << typeBank;
1120 evioDOMNodeP assocBank = createContainerNode(
"DFDCHits.assocObjectBanks");
1121 *fdchit << assocBank;
1126 set<string>::iterator iter;
1127 for(iter=evioMap[
"dfdchit"].begin(); iter!=evioMap[
"dfdchit"].end(); iter++) {
1130 vector<const DFDCHit*> fdchits;
1131 eventLoop->Get(fdchits,(*iter).c_str());
1132 if(fdchits.size()<=0)
continue;
1136 for(
unsigned int i=0; i<fdchits.size(); i++) {
1137 *objIdBank << fdchits[i]->id;
1138 *layerBank << fdchits[i]->layer;
1139 *moduleBank << fdchits[i]->module;
1140 *elementBank << fdchits[i]->element;
1141 *planeBank << fdchits[i]->plane;
1142 *gPlaneBank << fdchits[i]->gPlane;
1143 *gLayerBank << fdchits[i]->gLayer;
1144 *qBank << fdchits[i]->q;
1145 *tBank << fdchits[i]->t;
1146 *rBank << fdchits[i]->r;
1147 *typeBank << fdchits[i]->type;
1149 objIdMap[fdchits[i]->id]=fdchits[i]->GetNameTag();
1153 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DFDCHits.assocObjects");
1154 *assocBank << assocObjs;
1157 vector<const JObject*> objs;
1158 fdchits[i]->GetT(objs);
1159 for(
unsigned int j=0; j<objs.size(); j++) {
1161 *assocObjs << objs[j]->id;
1162 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1166 if(assocCount==0)assocBank->cutAndDelete();
1178 evioDOMNodeP beamphoton = createContainerNode(
"DBeamPhoton");
1183 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DBeamPhoton.objId");
1184 evioDOMNodeP xBank = createLeafNode<float> (
"DBeamPhoton.x");
1185 evioDOMNodeP yBank = createLeafNode<float> (
"DBeamPhoton.y");
1186 evioDOMNodeP zBank = createLeafNode<float> (
"DBeamPhoton.z");
1187 evioDOMNodeP pxBank = createLeafNode<float> (
"DBeamPhoton.px");
1188 evioDOMNodeP pyBank = createLeafNode<float> (
"DBeamPhoton.py");
1189 evioDOMNodeP pzBank = createLeafNode<float> (
"DBeamPhoton.pz");
1190 evioDOMNodeP tBank = createLeafNode<int> (
"DBeamPhoton.t");
1191 *beamphoton << objIdBank << xBank<< yBank<< zBank<< pxBank<< pyBank<< pzBank << tBank;
1195 evioDOMNodeP assocBank = createContainerNode(
"DBeamPhoton.assocObjectBanks");
1196 *beamphoton << assocBank;
1201 set<string>::iterator iter;
1202 for(iter=evioMap[
"dbeamphoton"].begin(); iter!=evioMap[
"dbeamphoton"].end(); iter++) {
1205 vector<const DBeamPhoton*> beamphotons;
1206 eventLoop->Get(beamphotons,(*iter).c_str());
1207 if(beamphotons.size()<=0)
continue;
1211 for(
unsigned int i=0; i<beamphotons.size(); i++) {
1212 *objIdBank << beamphotons[i]->id;
1215 DVector3 pos = beamphotons[i]->position();
1220 DVector3 mom = beamphotons[i]->momentum();
1225 *tBank << beamphotons[i]->t;
1227 objIdMap[beamphotons[i]->id]=beamphotons[i]->GetNameTag();
1231 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DBeamPhoton.assocObjects");
1232 *assocBank << assocObjs;
1235 vector<const JObject*> objs;
1236 beamphotons[i]->GetT(objs);
1237 for(
unsigned int j=0; j<objs.size(); j++) {
1239 *assocObjs << objs[j]->id;
1240 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1244 if(assocCount==0)assocBank->cutAndDelete();
1256 evioDOMNodeP sctruthhit = createContainerNode(
"DSCTruthHit");
1261 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DSCTruthHit.objId");
1262 evioDOMNodeP dEdxBank = createLeafNode<float> (
"DSCTruthHit.dEdx");
1263 evioDOMNodeP primaryBank = createLeafNode<int8_t> (
"DSCTruthHit.primary");
1264 evioDOMNodeP trackBank = createLeafNode<int> (
"DSCTruthHit.track");
1265 evioDOMNodeP ptypeBank = createLeafNode<int> (
"DSCTruthHit.ptype");
1266 evioDOMNodeP rBank = createLeafNode<float> (
"DSCTruthHit.r");
1267 evioDOMNodeP phiBank = createLeafNode<float> (
"DSCTruthHit.phi");
1268 evioDOMNodeP zBank = createLeafNode<float> (
"DSCTruthHit.z");
1269 evioDOMNodeP tBank = createLeafNode<float> (
"DSCTruthHit.t");
1270 evioDOMNodeP sectorBank = createLeafNode<int> (
"DSCTruthHit.sector");
1271 *sctruthhit << objIdBank << dEdxBank << primaryBank << trackBank << ptypeBank << rBank << phiBank
1272 << zBank << tBank << sectorBank;
1276 evioDOMNodeP assocBank = createContainerNode(
"DSCTruthHit.assocObjectBanks");
1277 *sctruthhit << assocBank;
1282 set<string>::iterator iter;
1283 for(iter=evioMap[
"dsctruthhit"].begin(); iter!=evioMap[
"dsctruthhit"].end(); iter++) {
1286 vector<const DSCTruthHit*> sctruthhits;
1287 eventLoop->Get(sctruthhits,(*iter).c_str());
1288 if(sctruthhits.size()<=0)
continue;
1292 for(
unsigned int i=0; i<sctruthhits.size(); i++) {
1293 *objIdBank << sctruthhits[i]->id;
1294 *dEdxBank << sctruthhits[i]->dEdx;
1295 *primaryBank << (int8_t)sctruthhits[i]->primary;
1296 *trackBank << sctruthhits[i]->track;
1297 *ptypeBank << sctruthhits[i]->ptype;
1298 *rBank << sctruthhits[i]->r;
1299 *phiBank << sctruthhits[i]->phi;
1300 *zBank << sctruthhits[i]->z;
1301 *tBank << sctruthhits[i]->t;
1302 *sectorBank << sctruthhits[i]->sector;
1304 objIdMap[sctruthhits[i]->id]=sctruthhits[i]->GetNameTag();
1308 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DSCTruthHit.assocObjects");
1309 *assocBank << assocObjs;
1312 vector<const JObject*> objs;
1313 sctruthhits[i]->GetT(objs);
1314 for(
unsigned int j=0; j<objs.size(); j++) {
1316 *assocObjs << objs[j]->id;
1317 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1321 if(assocCount==0)assocBank->cutAndDelete();
1333 evioDOMNodeP fcalhit = createContainerNode(
"DFCALHit");
1338 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DFCALHit.objId");
1339 evioDOMNodeP rowBank = createLeafNode<int> (
"DFCALHit.row");
1340 evioDOMNodeP columnBank = createLeafNode<int> (
"DFCALHit.column");
1341 evioDOMNodeP xBank = createLeafNode<float> (
"DFCALHit.x");
1342 evioDOMNodeP yBank = createLeafNode<float> (
"DFCALHit.y");
1343 evioDOMNodeP EBank = createLeafNode<float> (
"DFCALHit.E");
1344 evioDOMNodeP tBank = createLeafNode<float> (
"DFCALHit.t");
1345 *fcalhit << objIdBank << rowBank << columnBank << xBank << yBank << EBank << tBank;
1349 evioDOMNodeP assocBank = createContainerNode(
"DFCALHit.assocObjectBanks");
1350 *fcalhit << assocBank;
1355 set<string>::iterator iter;
1356 for(iter=evioMap[
"dfcalhit"].begin(); iter!=evioMap[
"dfcalhit"].end(); iter++) {
1359 vector<const DFCALHit*> fcalhits;
1360 eventLoop->Get(fcalhits,(*iter).c_str());
1361 if(fcalhits.size()<=0)
continue;
1365 for(
unsigned int i=0; i<fcalhits.size(); i++) {
1366 *objIdBank << fcalhits[i]->id;
1367 *rowBank << fcalhits[i]->row;
1368 *columnBank << fcalhits[i]->column;
1369 *xBank << fcalhits[i]->x;
1370 *yBank << fcalhits[i]->y;
1371 *EBank << fcalhits[i]->E;
1372 *tBank << fcalhits[i]->t;
1374 objIdMap[fcalhits[i]->id]=fcalhits[i]->GetNameTag();
1378 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DFCALHit.assocObjects");
1379 *assocBank << assocObjs;
1382 vector<const JObject*> objs;
1383 fcalhits[i]->GetT(objs);
1384 for(
unsigned int j=0; j<objs.size(); j++) {
1386 *assocObjs << objs[j]->id;
1387 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1391 if(assocCount==0)assocBank->cutAndDelete();
1403 evioDOMNodeP schit = createContainerNode(
"DSCHit");
1408 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DSCHit.objId");
1409 evioDOMNodeP dEBank = createLeafNode<float> (
"DSCHit.dE");
1410 evioDOMNodeP tBank = createLeafNode<float> (
"DSCHit.t");
1411 evioDOMNodeP sectorBank = createLeafNode<int> (
"DSCHit.sector");
1412 *schit << objIdBank << dEBank << tBank << sectorBank;
1416 evioDOMNodeP assocBank = createContainerNode(
"DSCHit.assocObjectBanks");
1417 *schit << assocBank;
1422 set<string>::iterator iter;
1423 for(iter=evioMap[
"dschit"].begin(); iter!=evioMap[
"dschit"].end(); iter++) {
1426 vector<const DSCHit*> schits;
1427 eventLoop->Get(schits,(*iter).c_str());
1428 if(schits.size()<=0)
continue;
1432 for(
unsigned int i=0; i<schits.size(); i++) {
1433 *objIdBank << schits[i]->id;
1434 *dEBank << schits[i]->dE;
1435 *tBank << schits[i]->t;
1436 *sectorBank << schits[i]->sector;
1438 objIdMap[schits[i]->id]=schits[i]->GetNameTag();
1442 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DSCHit.assocObjects");
1443 *assocBank << assocObjs;
1446 vector<const JObject*> objs;
1447 schits[i]->GetT(objs);
1448 for(
unsigned int j=0; j<objs.size(); j++) {
1450 *assocObjs << objs[j]->id;
1451 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1455 if(assocCount==0)assocBank->cutAndDelete();
1467 evioDOMNodeP wirebasedtrack = createContainerNode(
"DTrackWireBased");
1468 tree << wirebasedtrack;
1472 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DTrackWireBased.objId");
1473 evioDOMNodeP chisqBank = createLeafNode<float> (
"DTrackWireBased.chisq");
1474 evioDOMNodeP NdofBank = createLeafNode<int> (
"DTrackWireBased.Ndof");
1475 evioDOMNodeP xBank = createLeafNode<float> (
"DTrackWireBased.x");
1476 evioDOMNodeP yBank = createLeafNode<float> (
"DTrackWireBased.y");
1477 evioDOMNodeP zBank = createLeafNode<float> (
"DTrackWireBased.z");
1478 evioDOMNodeP pxBank = createLeafNode<float> (
"DTrackWireBased.px");
1479 evioDOMNodeP pyBank = createLeafNode<float> (
"DTrackWireBased.py");
1480 evioDOMNodeP pzBank = createLeafNode<float> (
"DTrackWireBased.pz");
1481 evioDOMNodeP qBank = createLeafNode<float> (
"DTrackWireBased.q");
1482 evioDOMNodeP EBank = createLeafNode<float> (
"DTrackWireBased.E");
1483 evioDOMNodeP massBank = createLeafNode<float> (
"DTrackWireBased.mass");
1484 *wirebasedtrack << objIdBank << chisqBank << NdofBank << xBank << yBank << zBank << pxBank << pyBank << pzBank
1485 << qBank << EBank << massBank;
1489 evioDOMNodeP assocBank = createContainerNode(
"DTrackWireBased.assocObjectBanks");
1490 *wirebasedtrack<< assocBank;
1495 set<string>::iterator iter;
1496 for(iter=evioMap[
"dtrackwirebased"].begin(); iter!=evioMap[
"dtrackwirebased"].end(); iter++) {
1499 vector<const DTrackWireBased*> wirebasedtracks;
1500 eventLoop->Get(wirebasedtracks,(*iter).c_str());
1501 if(wirebasedtracks.size()<=0)
continue;
1505 for(
unsigned int i=0; i<wirebasedtracks.size(); i++) {
1506 *objIdBank << wirebasedtracks[i]->id;
1507 *chisqBank << wirebasedtracks[i]->chisq;
1508 *NdofBank << wirebasedtracks[i]->Ndof;
1509 *xBank << wirebasedtracks[i]->x();
1510 *yBank << wirebasedtracks[i]->y();
1511 *zBank << wirebasedtracks[i]->z();
1512 *pxBank << wirebasedtracks[i]->px();
1513 *pyBank << wirebasedtracks[i]->py();
1514 *pzBank << wirebasedtracks[i]->pz();
1515 *qBank << wirebasedtracks[i]->charge();
1516 *EBank << wirebasedtracks[i]->energy();
1517 *massBank << wirebasedtracks[i]->mass();
1519 objIdMap[wirebasedtracks[i]->id]=wirebasedtracks[i]->GetNameTag();
1523 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DTrackWireBased.assocObjects");
1524 *assocBank << assocObjs;
1527 vector<const JObject*> objs;
1528 wirebasedtracks[i]->GetT(objs);
1529 for(
unsigned int j=0; j<objs.size(); j++) {
1531 *assocObjs << objs[j]->id;
1532 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1536 if(assocCount==0)assocBank->cutAndDelete();
1548 evioDOMNodeP timebasedtrack = createContainerNode(
"DTrackTimeBased");
1549 tree << timebasedtrack;
1553 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DTrackTimeBased.objId");
1554 evioDOMNodeP chisqBank = createLeafNode<float> (
"DTrackTimeBased.chisq");
1555 evioDOMNodeP NdofBank = createLeafNode<int> (
"DTrackTimeBased.Ndof");
1556 evioDOMNodeP FOMBank = createLeafNode<float> (
"DTrackTimeBased.FOM");
1557 evioDOMNodeP xBank = createLeafNode<float> (
"DTrackTimeBased.x");
1558 evioDOMNodeP yBank = createLeafNode<float> (
"DTrackTimeBased.y");
1559 evioDOMNodeP zBank = createLeafNode<float> (
"DTrackTimeBased.z");
1560 evioDOMNodeP pxBank = createLeafNode<float> (
"DTrackTimeBased.px");
1561 evioDOMNodeP pyBank = createLeafNode<float> (
"DTrackTimeBased.py");
1562 evioDOMNodeP pzBank = createLeafNode<float> (
"DTrackTimeBased.pz");
1563 evioDOMNodeP qBank = createLeafNode<float> (
"DTrackTimeBased.q");
1564 evioDOMNodeP EBank = createLeafNode<float> (
"DTrackTimeBased.E");
1565 evioDOMNodeP massBank = createLeafNode<float> (
"DTrackTimeBased.mass");
1566 evioDOMNodeP t0Bank = createLeafNode<float> (
"DTrackTimeBased.t0");
1567 *timebasedtrack << objIdBank << chisqBank << NdofBank << FOMBank << xBank << yBank << zBank
1568 << pxBank << pyBank << pzBank << qBank << EBank << massBank << t0Bank;
1572 evioDOMNodeP assocBank = createContainerNode(
"DTrackTimeBased.assocObjectBanks");
1573 *timebasedtrack << assocBank;
1578 set<string>::iterator iter;
1579 for(iter=evioMap[
"dtracktimebased"].begin(); iter!=evioMap[
"dtracktimebased"].end(); iter++) {
1582 vector<const DTrackTimeBased*> timebasedtracks;
1583 eventLoop->Get(timebasedtracks,(*iter).c_str());
1584 if(timebasedtracks.size()<=0)
continue;
1588 for(
unsigned int i=0; i<timebasedtracks.size(); i++) {
1589 *objIdBank << timebasedtracks[i]->id;
1590 *chisqBank << timebasedtracks[i]->chisq;
1591 *NdofBank << timebasedtracks[i]->Ndof;
1592 *FOMBank << timebasedtracks[i]->FOM;
1593 *xBank << timebasedtracks[i]->x();
1594 *yBank << timebasedtracks[i]->y();
1595 *zBank << timebasedtracks[i]->z();
1596 *pxBank << timebasedtracks[i]->px();
1597 *pyBank << timebasedtracks[i]->py();
1598 *pzBank << timebasedtracks[i]->pz();
1599 *qBank << timebasedtracks[i]->charge();
1600 *EBank << timebasedtracks[i]->energy();
1601 *massBank << timebasedtracks[i]->mass();
1602 *t0Bank << timebasedtracks[i]->t0();
1604 objIdMap[timebasedtracks[i]->id]=timebasedtracks[i]->GetNameTag();
1608 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DTrackTimeBased.assocObjects");
1609 *assocBank << assocObjs;
1612 vector<const JObject*> objs;
1613 timebasedtracks[i]->GetT(objs);
1614 for(
unsigned int j=0; j<objs.size(); j++) {
1616 *assocObjs << objs[j]->id;
1617 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1621 if(assocCount==0)assocBank->cutAndDelete();
1633 evioDOMNodeP chargedtrack = createContainerNode(
"DChargedTrack");
1634 tree << chargedtrack;
1638 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DChargedTrack.objId");
1639 evioDOMNodeP hypothesisBank = createContainerNode (
"DChargedTrack.hypothesisBanks");
1640 *chargedtrack << objIdBank << hypothesisBank;
1644 evioDOMNodeP assocBank = createContainerNode(
"DChargedTrack.assocObjectBanks");
1645 *chargedtrack << assocBank;
1650 set<string>::iterator iter;
1651 for(iter=evioMap[
"dchargedtrack"].begin(); iter!=evioMap[
"dchargedtrack"].end(); iter++) {
1654 vector<const DChargedTrack*> chargedtracks;
1655 eventLoop->Get(chargedtracks,(*iter).c_str());
1656 if(chargedtracks.size()<=0)
continue;
1660 for(
unsigned int i=0; i<chargedtracks.size(); i++) {
1661 *objIdBank << chargedtracks[i]->id;
1664 evioDOMNodeP hypotheses = createLeafNode<uint64_t> (
"DChargedTrack.hypotheses");
1665 *hypothesisBank << hypotheses;
1666 for(
unsigned int j=0; j<chargedtracks[i]->hypotheses.size(); j++) {
1667 *hypotheses << chargedtracks[i]->hypotheses[j]->id;
1670 objIdMap[chargedtracks[i]->id]=chargedtracks[i]->GetNameTag();
1674 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DChargedTrack.assocObjects");
1675 *assocBank << assocObjs;
1678 vector<const JObject*> objs;
1679 chargedtracks[i]->GetT(objs);
1680 for(
unsigned int j=0; j<objs.size(); j++) {
1682 *assocObjs << objs[j]->id;
1683 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1687 if(assocCount==0)assocBank->cutAndDelete();
1699 evioDOMNodeP
photon = createContainerNode(
"DPhoton");
1704 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DPhoton.objId");
1705 evioDOMNodeP EBank = createLeafNode<float> (
"DPhoton.E");
1706 evioDOMNodeP pxBank = createLeafNode<float> (
"DPhoton.px");
1707 evioDOMNodeP pyBank = createLeafNode<float> (
"DPhoton.py");
1708 evioDOMNodeP pzBank = createLeafNode<float> (
"DPhoton.pz");
1709 evioDOMNodeP xBank = createLeafNode<float> (
"DPhoton.x");
1710 evioDOMNodeP yBank = createLeafNode<float> (
"DPhoton.y");
1711 evioDOMNodeP zBank = createLeafNode<float> (
"DPhoton.z");
1712 evioDOMNodeP tBank = createLeafNode<float> (
"DPhoton.t");
1713 evioDOMNodeP TagBank = createLeafNode<int> (
"DPhoton.Tag");
1714 *photon << objIdBank << EBank << pxBank << pyBank << pzBank << xBank << yBank << zBank
1715 << tBank << TagBank;
1719 evioDOMNodeP assocBank = createContainerNode(
"DPhoton.assocObjectBanks");
1720 *photon << assocBank;
1725 set<string>::iterator iter;
1726 for(iter=evioMap[
"dphoton"].begin(); iter!=evioMap[
"dphoton"].end(); iter++) {
1729 vector<const DPhoton*> photons;
1730 eventLoop->Get(photons),(*iter).c_str();
1731 if(photons.size()<=0)
continue;
1735 for(
unsigned int i=0; i<photons.size(); i++) {
1736 *objIdBank << photons[i]->id;
1737 *EBank << photons[i]->energy();
1738 *pxBank << photons[i]->px();
1739 *pyBank << photons[i]->py();
1740 *pzBank << photons[i]->pz();
1741 *xBank << photons[i]->x();
1742 *yBank << photons[i]->y();
1743 *zBank << photons[i]->z();
1744 *tBank << photons[i]->getTime();
1745 *TagBank << photons[i]->getTag();
1747 objIdMap[photons[i]->id]=photons[i]->GetNameTag();
1751 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DPhoton.assocObjects");
1752 *assocBank << assocObjs;
1755 vector<const JObject*> objs;
1756 photons[i]->GetT(objs);
1757 for(
unsigned int j=0; j<objs.size(); j++) {
1759 *assocObjs << objs[j]->id;
1760 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1764 if(assocCount==0)assocBank->cutAndDelete();
1776 evioDOMNodeP cdctrackhit = createContainerNode(
"DCDCTrackHit");
1777 tree << cdctrackhit;
1781 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DCDCTrackHit.objId");
1782 evioDOMNodeP ringBank = createLeafNode<int> (
"DCDCTrackHit.ring");
1783 evioDOMNodeP strawBank = createLeafNode<int> (
"DCDCTrackHit.straw");
1784 evioDOMNodeP xBank = createLeafNode<float> (
"DCDCTrackHit.x");
1785 evioDOMNodeP yBank = createLeafNode<float> (
"DCDCTrackHit.y");
1786 evioDOMNodeP stereoBank = createLeafNode<float> (
"DCDCTrackHit.stereo");
1787 evioDOMNodeP tdriftBank = createLeafNode<float> (
"DCDCTrackHit.tdrift");
1788 evioDOMNodeP distBank = createLeafNode<float> (
"DCDCTrackHit.dist");
1789 evioDOMNodeP dEBank = createLeafNode<float> (
"DCDCTrackHit.dE");
1790 *cdctrackhit << objIdBank << ringBank << strawBank << xBank << yBank << stereoBank
1791 << tdriftBank << distBank << dEBank;
1795 evioDOMNodeP assocBank = createContainerNode(
"DCDCTrackHit.assocObjectBanks");
1796 *cdctrackhit << assocBank;
1801 set<string>::iterator iter;
1802 for(iter=evioMap[
"dcdctrackhit"].begin(); iter!=evioMap[
"dcdctrackhit"].end(); iter++) {
1805 vector<const DCDCTrackHit*> cdctrackhits;
1806 eventLoop->Get(cdctrackhits,(*iter).c_str());
1807 if(cdctrackhits.size()<=0)
continue;
1811 for(
unsigned int i=0; i<cdctrackhits.size(); i++) {
1812 *objIdBank << cdctrackhits[i]->id;
1813 *ringBank << cdctrackhits[i]->wire->ring;
1814 *strawBank << cdctrackhits[i]->wire->straw;
1815 *xBank << cdctrackhits[i]->wire->origin.x();
1816 *yBank << cdctrackhits[i]->wire->origin.y();
1817 *stereoBank << cdctrackhits[i]->wire->stereo;
1818 *tdriftBank << cdctrackhits[i]->tdrift;
1819 *distBank << cdctrackhits[i]->dist;
1820 *dEBank << cdctrackhits[i]->dE;
1822 objIdMap[cdctrackhits[i]->id]=cdctrackhits[i]->GetNameTag();
1826 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DCDCTrackHit.assocObjects");
1827 *assocBank << assocObjs;
1830 vector<const JObject*> objs;
1831 cdctrackhits[i]->GetT(objs);
1832 for(
unsigned int j=0; j<objs.size(); j++) {
1834 *assocObjs << objs[j]->id;
1835 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1839 if(assocCount==0)assocBank->cutAndDelete();
1851 evioDOMNodeP fdcpseudo = createContainerNode(
"DFDCPseudo");
1856 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (
"DFDCPseudo.objId");
1857 evioDOMNodeP uBank = createLeafNode<float> (
"DFDCPseudo.u");
1858 evioDOMNodeP vBank = createLeafNode<float> (
"DFDCPseudo.v");
1859 evioDOMNodeP wBank = createLeafNode<float> (
"DFDCPseudo.w");
1860 evioDOMNodeP sBank = createLeafNode<float> (
"DFDCPseudo.s");
1861 evioDOMNodeP layerBank = createLeafNode<int> (
"DFDCPseudo.layer");
1862 evioDOMNodeP wireBank = createLeafNode<int> (
"DFDCPseudo.wire");
1863 evioDOMNodeP timeBank = createLeafNode<float> (
"DFDCPseudo.time");
1864 evioDOMNodeP statusBank = createLeafNode<int> (
"DFDCPseudo.status");
1865 evioDOMNodeP xBank = createLeafNode<float> (
"DFDCPseudo.x");
1866 evioDOMNodeP yBank = createLeafNode<float> (
"DFDCPseudo.y");
1867 evioDOMNodeP dEBank = createLeafNode<float> (
"DFDCPseudo.dE");
1868 *fdcpseudo << objIdBank << uBank<< vBank << wBank << sBank << layerBank << wireBank << timeBank
1869 << statusBank << xBank << yBank << dEBank;
1873 evioDOMNodeP assocBank = createContainerNode(
"DFDCPseudo.assocObjectBanks");
1874 *fdcpseudo << assocBank;
1879 set<string>::iterator iter;
1880 for(iter=evioMap[
"dfdcpseudo"].begin(); iter!=evioMap[
"dfdcpseudo"].end(); iter++) {
1883 vector<const DFDCPseudo*> fdcpseudos;
1884 eventLoop->Get(fdcpseudos,(*iter).c_str());
1885 if(fdcpseudos.size()<=0)
continue;
1889 for(
unsigned int i=0; i<fdcpseudos.size(); i++) {
1890 *objIdBank << fdcpseudos[i]->id;
1891 *uBank << fdcpseudos[i]->u;
1892 *vBank << fdcpseudos[i]->v;
1893 *wBank << fdcpseudos[i]->w;
1894 *sBank << fdcpseudos[i]->s;
1895 *layerBank << fdcpseudos[i]->wire->layer;
1896 *wireBank << fdcpseudos[i]->wire->wire;
1897 *timeBank << fdcpseudos[i]->time;
1898 *statusBank << fdcpseudos[i]->status;
1899 *xBank << fdcpseudos[i]->xy.X();
1900 *yBank << fdcpseudos[i]->xy.Y();
1901 *dEBank << fdcpseudos[i]->dE;
1903 objIdMap[fdcpseudos[i]->id]=fdcpseudos[i]->GetNameTag();
1907 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (
"DFDCPseudo.assocObjects");
1908 *assocBank << assocObjs;
1911 vector<const JObject*> objs;
1912 fdcpseudos[i]->GetT(objs);
1913 for(
unsigned int j=0; j<objs.size(); j++) {
1915 *assocObjs << objs[j]->id;
1916 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
1920 if(assocCount==0)assocBank->cutAndDelete();
1930 string objName =
"DVertex";
1931 string objNameLC(objName);
1932 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
1936 evioDOMNodeP mainBank = createContainerNode(objName);
1941 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
1942 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
1943 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
1944 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".z");
1945 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".t");
1946 evioDOMNodeP var5Bank = createLeafNode<int> (objName+
".beamline_used");
1947 evioDOMNodeP var6Bank = createLeafNode<int> (objName+
".Ntracks");
1948 evioDOMNodeP var7Bank = createLeafNode<int> (objName+
".Nphotons");
1949 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank << var6Bank << var7Bank;
1953 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
1954 *mainBank << assocBank;
1959 set<string>::iterator iter;
1960 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
1964 vector<const DVertex*> dataObjects;
1965 eventLoop->Get(dataObjects,(*iter).c_str());
1966 if(dataObjects.size()<=0)
continue;
1970 for(
unsigned int i=0; i<dataObjects.size(); i++) {
1971 *objIdBank << dataObjects[i]->id;
1972 *var1Bank << dataObjects[i]->x.X();
1973 *var2Bank << dataObjects[i]->x.Y();
1974 *var3Bank << dataObjects[i]->x.Z();
1975 *var4Bank << dataObjects[i]->x.T();
1976 *var5Bank << dataObjects[i]->beamline_used;
1978 vector<const DTrackTimeBased*> trks;
1979 dataObjects[i]->Get(trks);
1980 *var6Bank << trks.size();
1982 vector<const DFCALShower*> showers;
1983 dataObjects[i]->Get(showers);
1984 *var7Bank << showers.size();
1987 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
1991 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
1992 *assocBank << assocObjs;
1995 vector<const JObject*> objs;
1996 dataObjects[i]->GetT(objs);
1997 for(
unsigned int j=0; j<objs.size(); j++) {
1999 *assocObjs << objs[j]->id;
2000 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2004 if(assocCount==0)assocBank->cutAndDelete();
2014 string objName =
"DTrackCandidate";
2015 string objNameLC(objName);
2016 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2020 evioDOMNodeP mainBank = createContainerNode(objName);
2025 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2026 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".chisq");
2027 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".Ndof");
2028 *mainBank << objIdBank << var1Bank << var2Bank;
2032 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2033 *mainBank << assocBank;
2038 set<string>::iterator iter;
2039 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2044 vector<const DTrackCandidate*> dataObjects;
2045 eventLoop->Get(dataObjects,(*iter).c_str());
2046 if(dataObjects.size()<=0)
continue;
2050 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2051 *objIdBank << dataObjects[i]->id;
2052 *var1Bank << dataObjects[i]->chisq;
2053 *var2Bank << dataObjects[i]->Ndof ;
2055 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2059 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2060 *assocBank << assocObjs;
2063 vector<const JObject*> objs;
2064 dataObjects[i]->GetT(objs);
2065 for(
unsigned int j=0; j<objs.size(); j++) {
2067 *assocObjs << objs[j]->id;
2068 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2072 if(assocCount==0)assocBank->cutAndDelete();
2082 string objName =
"DBCALPhoton";
2083 string objNameLC(objName);
2084 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2088 evioDOMNodeP mainBank = createContainerNode(objName);
2093 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2094 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
2095 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
2096 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".z");
2097 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".px");
2098 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".py");
2099 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".pz");
2100 evioDOMNodeP var7Bank = createLeafNode<float> (objName+
".E");
2101 evioDOMNodeP var8Bank = createLeafNode<float> (objName+
".t");
2102 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank
2103 << var6Bank << var7Bank << var8Bank;
2107 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2108 *mainBank << assocBank;
2113 set<string>::iterator iter;
2114 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2118 vector<const DBCALPhoton*> dataObjects;
2119 eventLoop->Get(dataObjects,(*iter).c_str());
2120 if(dataObjects.size()<=0)
continue;
2124 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2125 *objIdBank << dataObjects[i]->id;
2126 *var1Bank << dataObjects[i]->showerPosition().X();
2127 *var2Bank << dataObjects[i]->showerPosition().Y();
2128 *var3Bank << dataObjects[i]->showerPosition().Z();
2129 *var4Bank << dataObjects[i]->lorentzMomentum().Px();
2130 *var5Bank << dataObjects[i]->lorentzMomentum().Py();
2131 *var6Bank << dataObjects[i]->lorentzMomentum().Pz();
2132 *var7Bank << dataObjects[i]->lorentzMomentum().E();
2133 *var8Bank << dataObjects[i]->showerTime();
2135 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2139 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2140 *assocBank << assocObjs;
2143 vector<const JObject*> objs;
2144 dataObjects[i]->GetT(objs);
2145 for(
unsigned int j=0; j<objs.size(); j++) {
2147 *assocObjs << objs[j]->id;
2148 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2152 if(assocCount==0)assocBank->cutAndDelete();
2162 string objName =
"DFCALPhoton";
2163 string objNameLC(objName);
2164 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2168 evioDOMNodeP mainBank = createContainerNode(objName);
2173 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2174 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
2175 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
2176 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".z");
2177 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".px");
2178 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".py");
2179 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".pz");
2180 evioDOMNodeP var7Bank = createLeafNode<float> (objName+
".E");
2181 evioDOMNodeP var8Bank = createLeafNode<float> (objName+
".t");
2182 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank
2183 << var6Bank << var7Bank << var8Bank;
2187 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2188 *mainBank << assocBank;
2193 set<string>::iterator iter;
2194 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2198 vector<const DFCALPhoton*> dataObjects;
2199 eventLoop->Get(dataObjects,(*iter).c_str());
2200 if(dataObjects.size()<=0)
continue;
2204 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2205 *objIdBank << dataObjects[i]->id;
2206 *var1Bank << dataObjects[i]->lorentzMomentum().X();
2207 *var2Bank << dataObjects[i]->lorentzMomentum().Y();
2208 *var3Bank << dataObjects[i]->lorentzMomentum().Z();
2209 *var4Bank << dataObjects[i]->lorentzMomentum().Px();
2210 *var5Bank << dataObjects[i]->lorentzMomentum().Py();
2211 *var6Bank << dataObjects[i]->lorentzMomentum().Pz();
2212 *var7Bank << dataObjects[i]->lorentzMomentum().E();
2213 *var8Bank << dataObjects[i]->showerTime();
2215 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2219 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2220 *assocBank << assocObjs;
2223 vector<const JObject*> objs;
2224 dataObjects[i]->GetT(objs);
2225 for(
unsigned int j=0; j<objs.size(); j++) {
2227 *assocObjs << objs[j]->id;
2228 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2232 if(assocCount==0)assocBank->cutAndDelete();
2242 string objName =
"DChargedTruthMatch";
2243 string objNameLC(objName);
2244 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2248 evioDOMNodeP mainBank = createContainerNode(objName);
2253 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2254 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".Nhits_thrown");
2255 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".Nhits_thrown_selector");
2256 evioDOMNodeP var3Bank = createLeafNode<int> (objName+
".Nhits_recon");
2257 evioDOMNodeP var4Bank = createLeafNode<int> (objName+
".Nhits_both");
2258 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".fom");
2259 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank;
2263 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2264 *mainBank << assocBank;
2269 set<string>::iterator iter;
2270 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2274 vector<const DChargedTruthMatch*> dataObjects;
2275 eventLoop->Get(dataObjects,(*iter).c_str());
2276 if(dataObjects.size()<=0)
continue;
2280 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2281 *objIdBank << dataObjects[i]->id;
2282 *var1Bank << dataObjects[i]->Nhits_thrown;
2283 *var2Bank << dataObjects[i]->Nhits_thrown_selector;
2284 *var3Bank << dataObjects[i]->Nhits_recon;
2285 *var4Bank << dataObjects[i]->Nhits_both;
2286 *var5Bank << dataObjects[i]->fom;
2288 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2292 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2293 *assocBank << assocObjs;
2296 vector<const JObject*> objs;
2297 dataObjects[i]->GetT(objs);
2298 for(
unsigned int j=0; j<objs.size(); j++) {
2300 *assocObjs << objs[j]->id;
2301 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2305 if(assocCount==0)assocBank->cutAndDelete();
2316 string objName =
"DTOFRawHit";
2317 string objNameLC(objName);
2318 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2322 evioDOMNodeP mainBank = createContainerNode(objName);
2327 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2328 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".bar");
2329 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".plane");
2330 evioDOMNodeP var3Bank = createLeafNode<int> (objName+
".lr");
2331 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".dE");
2332 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".t");
2333 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank;
2337 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2338 *mainBank << assocBank;
2343 set<string>::iterator iter;
2344 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2348 vector<const DTOFRawHit*> dataObjects;
2349 eventLoop->Get(dataObjects,(*iter).c_str());
2350 if(dataObjects.size()<=0)
continue;
2354 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2355 *objIdBank << dataObjects[i]->id;
2356 *var1Bank << dataObjects[i]->bar;
2357 *var2Bank << dataObjects[i]->plane;
2358 *var3Bank << dataObjects[i]->lr;
2359 *var4Bank << dataObjects[i]->dE;
2360 *var5Bank << dataObjects[i]->t;
2362 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2366 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2367 *assocBank << assocObjs;
2370 vector<const JObject*> objs;
2371 dataObjects[i]->GetT(objs);
2372 for(
unsigned int j=0; j<objs.size(); j++) {
2374 *assocObjs << objs[j]->id;
2379 if(assocCount==0)assocBank->cutAndDelete();
2390 string objName =
"DTOFRawHitMC";
2391 string objNameLC(objName);
2392 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2396 evioDOMNodeP mainBank = createContainerNode(objName);
2401 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2402 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".bar");
2403 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".plane");
2404 evioDOMNodeP var3Bank = createLeafNode<int> (objName+
".lr");
2405 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".dist");
2406 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".x");
2407 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".y");
2408 evioDOMNodeP var7Bank = createLeafNode<float> (objName+
".z");
2409 evioDOMNodeP var8Bank = createLeafNode<float> (objName+
".px");
2410 evioDOMNodeP var9Bank = createLeafNode<float> (objName+
".py");
2411 evioDOMNodeP var10Bank = createLeafNode<float> (objName+
".pz");
2412 evioDOMNodeP var11Bank = createLeafNode<float> (objName+
".E");
2413 evioDOMNodeP var12Bank = createLeafNode<int> (objName+
".ptype");
2414 evioDOMNodeP var13Bank = createLeafNode<int> (objName+
".itrack");
2415 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank
2416 << var6Bank << var7Bank << var8Bank << var9Bank << var10Bank << var11Bank
2417 << var12Bank << var13Bank;
2421 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2422 *mainBank << assocBank;
2427 set<string>::iterator iter;
2428 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2432 vector<const DTOFRawHitMC*> dataObjects;
2433 eventLoop->Get(dataObjects,(*iter).c_str());
2434 if(dataObjects.size()<=0)
continue;
2438 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2439 *objIdBank << dataObjects[i]->id;
2440 *var1Bank << dataObjects[i]->bar;
2441 *var2Bank << dataObjects[i]->plane;
2442 *var3Bank << dataObjects[i]->lr;
2443 *var4Bank << dataObjects[i]->dist;
2444 *var5Bank << dataObjects[i]->x;
2445 *var6Bank << dataObjects[i]->y;
2446 *var7Bank << dataObjects[i]->z;
2447 *var8Bank << dataObjects[i]->px;
2448 *var9Bank << dataObjects[i]->py;
2449 *var10Bank << dataObjects[i]->pz;
2450 *var11Bank << dataObjects[i]->E;
2451 *var12Bank << dataObjects[i]->ptype;
2452 *var13Bank << dataObjects[i]->itrack;
2454 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2458 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2459 *assocBank << assocObjs;
2462 vector<const JObject*> objs;
2463 dataObjects[i]->GetT(objs);
2464 for(
unsigned int j=0; j<objs.size(); j++) {
2466 *assocObjs << objs[j]->id;
2471 if(assocCount==0)assocBank->cutAndDelete();
2481 string objName =
"DTOFHit";
2482 string objNameLC(objName);
2483 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2487 evioDOMNodeP mainBank = createContainerNode(objName);
2492 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2493 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".orientation");
2494 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".bar");
2495 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".t_north");
2496 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".E_north");
2497 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".t_south");
2498 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".E_south");
2499 evioDOMNodeP var7Bank = createLeafNode<float> (objName+
".meantime");
2500 evioDOMNodeP var8Bank = createLeafNode<float> (objName+
".timediff");
2501 evioDOMNodeP var9Bank = createLeafNode<float> (objName+
".pos");
2502 evioDOMNodeP var10Bank = createLeafNode<float> (objName+
".dpos");
2503 evioDOMNodeP var11Bank = createLeafNode<float> (objName+
".dE");
2504 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank
2505 << var6Bank << var7Bank << var8Bank << var9Bank << var10Bank << var11Bank;
2509 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2510 *mainBank << assocBank;
2515 set<string>::iterator iter;
2516 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2520 vector<const DTOFHit*> dataObjects;
2521 eventLoop->Get(dataObjects,(*iter).c_str());
2522 if(dataObjects.size()<=0)
continue;
2526 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2527 *objIdBank << dataObjects[i]->id;
2528 *var1Bank << dataObjects[i]->orientation;
2529 *var2Bank << dataObjects[i]->bar;
2530 *var3Bank << dataObjects[i]->t_north;
2531 *var4Bank << dataObjects[i]->E_north;
2532 *var5Bank << dataObjects[i]->t_south;
2533 *var6Bank << dataObjects[i]->E_south;
2534 *var7Bank << dataObjects[i]->meantime;
2535 *var8Bank << dataObjects[i]->timediff;
2536 *var9Bank << dataObjects[i]->pos;
2537 *var10Bank << dataObjects[i]->dpos;
2538 *var11Bank << dataObjects[i]->dE;
2540 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2544 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2545 *assocBank << assocObjs;
2548 vector<const JObject*> objs;
2549 dataObjects[i]->GetT(objs);
2550 for(
unsigned int j=0; j<objs.size(); j++) {
2552 *assocObjs << objs[j]->id;
2553 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2557 if(assocCount==0)assocBank->cutAndDelete();
2567 string objName =
"DTOFPoint";
2568 string objNameLC(objName);
2569 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2573 evioDOMNodeP mainBank = createContainerNode(objName);
2578 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2579 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
2580 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
2581 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".z");
2582 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".t");
2583 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".dedx");
2584 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".chisq");
2585 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank << var6Bank;
2589 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2590 *mainBank << assocBank;
2595 set<string>::iterator iter;
2596 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2600 vector<const DTOFPoint*> dataObjects;
2601 eventLoop->Get(dataObjects,(*iter).c_str());
2602 if(dataObjects.size()<=0)
continue;
2606 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2607 *objIdBank << dataObjects[i]->id;
2608 *var1Bank << dataObjects[i]->pos.x();
2609 *var2Bank << dataObjects[i]->pos.y();
2610 *var3Bank << dataObjects[i]->pos.z();
2611 *var4Bank << dataObjects[i]->t;
2612 *var5Bank << dataObjects[i]->dedx;
2613 *var6Bank << dataObjects[i]->chisq;
2615 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2619 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2620 *assocBank << assocObjs;
2623 vector<const JObject*> objs;
2624 dataObjects[i]->GetT(objs);
2625 for(
unsigned int j=0; j<objs.size(); j++) {
2627 *assocObjs << objs[j]->id;
2628 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2632 if(assocCount==0)assocBank->cutAndDelete();
2642 string objName =
"DBCALHit";
2643 string objNameLC(objName);
2644 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2648 evioDOMNodeP mainBank = createContainerNode(objName);
2653 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2654 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".module");
2655 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".layer");
2656 evioDOMNodeP var3Bank = createLeafNode<int> (objName+
".sector");
2657 evioDOMNodeP var4Bank = createLeafNode<string> (objName+
".end");
2658 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".E");
2659 evioDOMNodeP var6Bank = createLeafNode<float> (objName+
".t");
2660 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank << var6Bank;
2664 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2665 *mainBank << assocBank;
2670 set<string>::iterator iter;
2671 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2675 vector<const DBCALHit*> dataObjects;
2676 eventLoop->Get(dataObjects,(*iter).c_str());
2677 if(dataObjects.size()<=0)
continue;
2682 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2683 *objIdBank << dataObjects[i]->id;
2684 *var1Bank << dataObjects[i]->module;
2685 *var2Bank << dataObjects[i]->layer;
2686 *var3Bank << dataObjects[i]->sector;
2688 *var5Bank << dataObjects[i]->E;
2689 *var6Bank << dataObjects[i]->t;
2691 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2695 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2696 *assocBank << assocObjs;
2699 vector<const JObject*> objs;
2700 dataObjects[i]->GetT(objs);
2701 for(
unsigned int j=0; j<objs.size(); j++) {
2703 *assocObjs << objs[j]->id;
2704 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2708 if(assocCount==0)assocBank->cutAndDelete();
2718 string objName =
"DBCALShower";
2719 string objNameLC(objName);
2720 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2724 evioDOMNodeP mainBank = createContainerNode(objName);
2729 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2730 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
2731 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
2732 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".z");
2733 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".t");
2734 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".E");
2735 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank;
2739 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2740 *mainBank << assocBank;
2745 set<string>::iterator iter;
2746 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2750 vector<const DBCALShower*> dataObjects;
2751 eventLoop->Get(dataObjects,(*iter).c_str());
2752 if(dataObjects.size()<=0)
continue;
2756 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2757 *objIdBank << dataObjects[i]->id;
2758 *var1Bank << dataObjects[i]->x;
2759 *var2Bank << dataObjects[i]->y;
2760 *var3Bank << dataObjects[i]->z;
2761 *var4Bank << dataObjects[i]->t;
2762 *var5Bank << dataObjects[i]->E;
2764 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2768 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2769 *assocBank << assocObjs;
2772 vector<const JObject*> objs;
2773 dataObjects[i]->GetT(objs);
2774 for(
unsigned int j=0; j<objs.size(); j++) {
2776 *assocObjs << objs[j]->id;
2777 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2781 if(assocCount==0)assocBank->cutAndDelete();
2791 string objName =
"DFCALCluster";
2792 string objNameLC(objName);
2793 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2797 evioDOMNodeP mainBank = createContainerNode(objName);
2802 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2803 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".x");
2804 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".y");
2805 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".E");
2806 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".t");
2807 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank;
2811 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2812 *mainBank << assocBank;
2817 set<string>::iterator iter;
2818 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2822 vector<const DFCALCluster*> dataObjects;
2823 eventLoop->Get(dataObjects,(*iter).c_str());
2824 if(dataObjects.size()<=0)
continue;
2828 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2829 *objIdBank << dataObjects[i]->id;
2830 *var1Bank << dataObjects[i]->getCentroid().x();
2831 *var2Bank << dataObjects[i]->getCentroid().y();
2832 *var3Bank << dataObjects[i]->getEnergy();
2833 *var4Bank << dataObjects[i]->getTime();
2835 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2839 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2840 *assocBank << assocObjs;
2843 vector<const JObject*> objs;
2844 dataObjects[i]->GetT(objs);
2845 for(
unsigned int j=0; j<objs.size(); j++) {
2847 *assocObjs << objs[j]->id;
2848 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2852 if(assocCount==0)assocBank->cutAndDelete();
2862 string objName =
"DFDCCathodeCluster";
2863 string objNameLC(objName);
2864 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2868 evioDOMNodeP mainBank = createContainerNode(objName);
2873 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2874 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".Nmembers");
2875 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".plane");
2876 evioDOMNodeP var3Bank = createLeafNode<int> (objName+
".gLayer");
2877 evioDOMNodeP var4Bank = createLeafNode<int> (objName+
".gPlane");
2878 evioDOMNodeP var5Bank = createLeafNode<float> (objName+
".q_tot");
2879 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank;
2883 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2884 *mainBank << assocBank;
2889 set<string>::iterator iter;
2890 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2894 vector<const DFDCCathodeCluster*> dataObjects;
2895 eventLoop->Get(dataObjects,(*iter).c_str());
2896 if(dataObjects.size()<=0)
continue;
2900 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2901 *objIdBank << dataObjects[i]->id;
2902 *var1Bank << dataObjects[i]->members.size();
2903 *var2Bank << dataObjects[i]->plane;
2904 *var3Bank << dataObjects[i]->gLayer;
2905 *var4Bank << dataObjects[i]->gPlane;
2906 *var5Bank << dataObjects[i]->q_tot;
2908 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2912 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2913 *assocBank << assocObjs;
2916 vector<const JObject*> objs;
2917 dataObjects[i]->GetT(objs);
2918 for(
unsigned int j=0; j<objs.size(); j++) {
2920 *assocObjs << objs[j]->id;
2921 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2925 if(assocCount==0)assocBank->cutAndDelete();
2935 string objName =
"DFDCSegment";
2936 string objNameLC(objName);
2937 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
2941 evioDOMNodeP mainBank = createContainerNode(objName);
2946 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
2947 evioDOMNodeP var1Bank = createLeafNode<float> (objName+
".xc");
2948 evioDOMNodeP var2Bank = createLeafNode<float> (objName+
".yc");
2949 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".rc");
2950 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".Phi1");
2951 evioDOMNodeP var5Bank = createLeafNode<int> (objName+
".Nhits");
2952 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank << var5Bank;
2956 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
2957 *mainBank << assocBank;
2962 set<string>::iterator iter;
2963 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
2967 vector<const DFDCSegment*> dataObjects;
2968 eventLoop->Get(dataObjects,(*iter).c_str());
2969 if(dataObjects.size()<=0)
continue;
2973 for(
unsigned int i=0; i<dataObjects.size(); i++) {
2974 *objIdBank << dataObjects[i]->id;
2975 *var1Bank << dataObjects[i]->xc;
2976 *var2Bank << dataObjects[i]->yc;
2977 *var3Bank << dataObjects[i]->rc;
2978 *var4Bank << dataObjects[i]->Phi1;
2979 *var5Bank << dataObjects[i]->hits.size();
2981 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
2985 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
2986 *assocBank << assocObjs;
2989 vector<const JObject*> objs;
2990 dataObjects[i]->GetT(objs);
2991 for(
unsigned int j=0; j<objs.size(); j++) {
2993 *assocObjs << objs[j]->id;
2994 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
2998 if(assocCount==0)assocBank->cutAndDelete();
3008 string objName =
"DTAGMHit";
3009 string objNameLC(objName);
3010 std::transform(objNameLC.begin(), objNameLC.end(), objNameLC.begin(), (int(*)(int)) tolower);
3014 evioDOMNodeP mainBank = createContainerNode(objName);
3019 evioDOMNodeP objIdBank = createLeafNode<uint64_t> (objName+
".objId");
3020 evioDOMNodeP var1Bank = createLeafNode<int> (objName+
".row");
3021 evioDOMNodeP var2Bank = createLeafNode<int> (objName+
".column");
3022 evioDOMNodeP var3Bank = createLeafNode<float> (objName+
".E");
3023 evioDOMNodeP var4Bank = createLeafNode<float> (objName+
".t");
3024 *mainBank << objIdBank << var1Bank << var2Bank << var3Bank << var4Bank;
3028 evioDOMNodeP assocBank = createContainerNode(objName+
".assocObjectBanks");
3029 *mainBank << assocBank;
3034 set<string>::iterator iter;
3035 for(iter=evioMap[objNameLC].begin(); iter!=evioMap[objNameLC].end(); iter++) {
3039 vector<const DTAGMHit*> dataObjects;
3040 eventLoop->Get(dataObjects,(*iter).c_str());
3041 if(dataObjects.size()<=0)
continue;
3045 for(
unsigned int i=0; i<dataObjects.size(); i++) {
3046 *objIdBank << dataObjects[i]->id;
3047 *var1Bank << dataObjects[i]->row;
3048 *var2Bank << dataObjects[i]->column;
3049 *var3Bank << dataObjects[i]->E;
3050 *var3Bank << dataObjects[i]->t;
3053 objIdMap[dataObjects[i]->id]=dataObjects[i]->GetNameTag();
3057 evioDOMNodeP assocObjs = createLeafNode<uint64_t> (objName+
".assocObjects");
3058 *assocBank << assocObjs;
3061 vector<const JObject*> objs;
3062 dataObjects[i]->GetT(objs);
3063 for(
unsigned int j=0; j<objs.size(); j++) {
3065 *assocObjs << objs[j]->id;
3066 objIdMap[objs[j]->id]=objs[j]->GetNameTag();
3070 if(assocCount==0)assocBank->cutAndDelete();
void addDBCALPhoton(JEventLoop *eventLoop, evioDOMTree &tree)
void setEVIOMap(string danaevio)
void addDCDCHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDTOFRawHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFDCCathodeCluster(JEventLoop *eventLoop, evioDOMTree &tree)
void addDVertex(JEventLoop *eventLoop, evioDOMTree &tree)
void addDCDCTrackHit(JEventLoop *eventLoop, evioDOMTree &tree)
void get_tagNum_dictionary(void)
void addDChargedTruthMatch(JEventLoop *eventLoop, evioDOMTree &tree)
void addDMCThrown(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFCALTruthShower(JEventLoop *eventLoop, evioDOMTree &tree)
static const map< string, pair< uint16_t, uint8_t > > * getTagMapPointer()
void addDBCALHit(JEventLoop *eventLoop, evioDOMTree &tree)
void startElement(void *data, const char *el, const char **attr)
void addDTOFHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDBCALShower(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFDCPseudo(JEventLoop *eventLoop, evioDOMTree &tree)
void addDSCHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDTOFTruth(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFCALHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addObjIdBank(evioDOMTree &tree)
evioDOMNodeP createContainerNode(string nameId)
void addDMCTrackHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFCALCluster(JEventLoop *eventLoop, evioDOMTree &tree)
void addDBCALTruthShower(JEventLoop *eventLoop, evioDOMTree &tree)
void addDPhoton(JEventLoop *eventLoop, evioDOMTree &tree)
void addDChargedTrack(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFDCSegment(JEventLoop *eventLoop, evioDOMTree &tree)
void addDTOFRawHitMC(JEventLoop *eventLoop, evioDOMTree &tree)
static void startElement(void *userData, const char *xmlname, const char **atts)
void addDSCTruthHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFDCHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDTrackWireBased(JEventLoop *eventLoop, evioDOMTree &tree)
jerror_t evnt(JEventLoop *eventLoop, uint64_t eventnumber)
void addDBeamPhoton(JEventLoop *eventLoop, evioDOMTree &tree)
static pthread_mutex_t initMutex
void addDTrackCandidate(JEventLoop *eventLoop, evioDOMTree &tree)
static map< string, pair< uint16_t, uint8_t > > tagMap
void addDTOFPoint(JEventLoop *eventLoop, evioDOMTree &tree)
evioDOMNodeP createLeafNode(string nameId)
void addDTrackTimeBased(JEventLoop *eventLoop, evioDOMTree &tree)
void addDMCTrajectoryPoint(JEventLoop *eventLoop, evioDOMTree &tree)
void addDTAGMHit(JEventLoop *eventLoop, evioDOMTree &tree)
void addDFCALPhoton(JEventLoop *eventLoop, evioDOMTree &tree)