Upload
sharon-freeman
View
217
Download
0
Embed Size (px)
Citation preview
DANAEVIO UPDATEElliott Wolin
Hall D Offline Meeting6-Apr-2010
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
Status
DANA Objects Converted
dmctrackhit dbeamphoton dmcthrown dfcaltruthshower dbcaltruthshower dtoftruth dsctruthhit dmctrajectorypoint
dcdchit dfdchit dfcalhit dhddmbcalhit dhddmtofhit dschit
dcdctrackhit dfdcpseudo dtrackwirebased dtracktimebased dchargedtrack dphoton
<xmldumpDictEntry name="DCDCTrackHit" tag="11900" num="0"/> <xmldumpDictEntry name="DCDCTrackHit.objId" tag="11900" num="1"/> <xmldumpDictEntry name="DCDCTrackHit.ring" tag="11900" num="2"/> <xmldumpDictEntry name="DCDCTrackHit.straw" tag="11900" num="3"/> <xmldumpDictEntry name="DCDCTrackHit.x" tag="11900" num="4"/> <xmldumpDictEntry name="DCDCTrackHit.y" tag="11900" num="5"/> <xmldumpDictEntry name="DCDCTrackHit.stereo" tag="11900" num="6"/> <xmldumpDictEntry name="DCDCTrackHit.tdrift" tag="11900" num="7"/> <xmldumpDictEntry name="DCDCTrackHit.dist" tag="11900" num="8"/> <xmldumpDictEntry name="DCDCTrackHit.dE" tag="11900" num="9"/> <xmldumpDictEntry name="DCDCTrackHit.assocObjectBanks“ tag="11900“ num="254"/> <xmldumpDictEntry name="DCDCTrackHit.assocObjects" tag="11900" num="255"/>
XML Dictionary Fragment
Need to change XML
tag name
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 ???
Status, con’t
Object IDbank
Xbank
Ybank
Zbank
Bank of arrays of associated object
ID’s
ID 1 X 1 Y 1 Z 1 Array 1
ID 2 X 2 Y 2 Z 2 Array 2
ID 3 X 3 Y 3 Z 3 Array 3
… … … … …
Note: EVIO stores data ‘column-wise’ (HDDM stores data ‘row-wise’)
DANA Object Storage Format
for ‘DXYZ Object’
Object ID Lookup Table
Object ID Factory name/tag
ID1 DPhoton
ID2 DPhoton
ID3 DPhoton
ID4 DPhoton:zisis
ID5 DPhoton:zisis
ID6 DPhoton:matt
ID7 DPhoton:matt
ID8 DMCTrackHit
… …
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<uint64_t> ("DSCHit.objId"); evioDOMNodeP dEBank = createLeafNode<float> ("DSCHit.dE"); evioDOMNodeP tBank = createLeafNode<float> ("DSCHit.t"); evioDOMNodeP sectorBank = createLeafNode<int> ("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<string>::iterator iter; for(iter=evioMap["dschit"].begin(); iter!=evioMap["dschit"].end(); iter++) {
// is there any data vector<const DSCHit*> schits; eventLoop->Get(schits); if(schits.size()<=0)continue;
// add track data to banks for(unsigned int i=0; i<schits.size(); i++) { *objIdBank << schits[i]->id; *dEBank << schits[i]->dE; *tBank << schits[i]->t; *sectorBank << schits[i]->sector; objIdMap[schits[i]->id]="???";
// get associated object id bank and add to associated object bank evioDOMNodeP assocObjs = createLeafNode<uint64_t> ("DSCHit.assocObjects"); *assocBank << assocObjs; // get id's, add to id bank and to global object id map vector<const JObject*> objs; schits[i]->GetT(objs); for(unsigned int j=0; j<objs.size(); j++) { assocCount++; *assocObjs << objs[j]->id; objIdMap[objs[j]->id]="???"; } } } if(assocCount==0)assocBank->cutAndDelete();
}