Download presentation
Presentation is loading. Please wait.
Published bySharon Freeman Modified over 9 years ago
1
Elliott Wolin Hall D Offline Meeting 6-Apr-2010
2
DANA -> EVIO conversion 95% complete Handles 20 DANA objects plus ID bank Includes object ID’s for all objects uint64_t big enough to hold object pointer Includes tagged factories Includes associated objects Includes object ID ↔ name/tag lookup table Easy to add more DANA objects User-supplied XML EVIO tag/num dictionary Everything checked into /sim-recon/src/programs/Utilities/plugins/danaevio
3
dmctrackhit dbeamphoton dmcthrown dfcaltruthshower dbcaltruthshower dtoftruth dsctruthhit dmctrajectorypoint dcdchit dfdchit dfcalhit dhddmbcalhit dhddmtofhit dschit dcdctrackhit dfdcpseudo dtrackwirebased dtracktimebased dchargedtrack dphoton
4
Need to change XML tag name
5
Associated Object ID bank NOT included if empty only 5 objects have associated object banks Still missing factory name/tag string array not supported by EVIO yet Fine for event display development Dave Heddle’s student will work on this Next step is EVIO -> DANA conversion Dave L (with my help) EVIO format changes unlikely, but possible Additional uses Transport events over network ???
6
Object ID bank X bank Y bank Z bank Bank of arrays of associated object ID’s ID 1X 1Y 1Z 1Array 1 ID 2X 2Y 2Z 2Array 2 ID 3X 3Y 3Z 3Array 3 …………… Note: EVIO stores data ‘column-wise’ (HDDM stores data ‘row-wise’)
7
Object IDFactory name/tag ID1DPhoton ID2DPhoton ID3DPhoton ID4DPhoton:zisis ID5DPhoton:zisis ID6DPhoton:matt ID7DPhoton:matt ID8DMCTrackHit ……
8
void DDANAEVIO_factory::addDSCHit(JEventLoop *eventLoop, evioDOMTree &tree) { // create bank and add to event tree evioDOMNodeP schit = createContainerNode("DSCHit"); tree << schit; // create data banks and add to bank evioDOMNodeP objIdBank = createLeafNode ("DSCHit.objId"); evioDOMNodeP dEBank = createLeafNode ("DSCHit.dE"); evioDOMNodeP tBank = createLeafNode ("DSCHit.t"); evioDOMNodeP sectorBank = createLeafNode ("DSCHit.sector"); *schit << objIdBank << dEBank << tBank << sectorBank; // create associated object bank and add to main bank evioDOMNodeP assocBank = createContainerNode("DSCHit.assocObjectBanks"); *schit << assocBank; // loop over each requested factory int assocCount = 0; set ::iterator iter; for(iter=evioMap["dschit"].begin(); iter!=evioMap["dschit"].end(); iter++) { // is there any data vector schits; eventLoop->Get(schits); if(schits.size()<=0)continue;
9
// add track data to banks for(unsigned int i=0; i<schits.size(); i++) { *objIdBank id; *dEBank dE; *tBank t; *sectorBank sector; objIdMap[schits[i]->id]="???"; // get associated object id bank and add to associated object bank evioDOMNodeP assocObjs = createLeafNode ("DSCHit.assocObjects"); *assocBank << assocObjs; // get id's, add to id bank and to global object id map vector objs; schits[i]->GetT(objs); for(unsigned int j=0; j<objs.size(); j++) { assocCount++; *assocObjs id; objIdMap[objs[j]->id]="???"; } if(assocCount==0)assocBank->cutAndDelete(); }
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.