9
DANAEVIO UPDATE Elliott Wolin Hall D Offline Meeting 6-Apr-2010

Elliott Wolin Hall D Offline Meeting 6-Apr-2010. DANA -> EVIO conversion 95% complete Handles 20 DANA objects plus ID bank Includes object ID’s

Embed Size (px)

Citation preview

Page 1: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

DANAEVIO UPDATEElliott Wolin

Hall D Offline Meeting6-Apr-2010

Page 2: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

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

Page 3: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

DANA Objects Converted

dmctrackhit dbeamphoton dmcthrown dfcaltruthshower dbcaltruthshower dtoftruth dsctruthhit dmctrajectorypoint

dcdchit dfdchit dfcalhit dhddmbcalhit dhddmtofhit dschit

dcdctrackhit dfdcpseudo dtrackwirebased dtracktimebased dchargedtrack dphoton

Page 4: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

<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

Page 5: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

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

Page 6: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

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’

Page 7: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

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

… …

Page 8: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

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;

Page 9: Elliott Wolin Hall D Offline Meeting 6-Apr-2010.  DANA -> EVIO conversion 95% complete  Handles 20 DANA objects plus ID bank  Includes object ID’s

// 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();

}