#include "muofuncs.h" #include "PHIODataNode.h" #include "dMuiRoadsOutv1.h" #include "dMuoTrkRoadOutv1.h" #include "dMuoTracksOutv2.h" #include "dMuiPseudoTriggerOutv1.h" #include "mMuoFillTrackOut.hh" #include "mMuoFillTrkRoadOut.hh" #include "mMuiFillRoadOut.hh" #include mMuoFillTrackOut* mMuoFillTrackOutM; mMuoFillTrkRoadOut* mMuoFillTrkRoadOutM; mMuiFillRoadOut* mMuiFillRoadOutM; int init_muo(PHCompositeNode *udstNode) { dMuiRoadsOutv1* dMuiRoadsO = new dMuiRoadsOutv1(); PHIODataNode* dMuiRoadsOutNode = new PHIODataNode(dMuiRoadsO,"dMuiRoadsOut","PHObject"); udstNode->addNode(dMuiRoadsOutNode); dMuoTrkRoadOutv1* dMuoTrkRoadO = new dMuoTrkRoadOutv1(); PHIODataNode* dMuoTrkRoadOutNode = new PHIODataNode(dMuoTrkRoadO,"dMuoTrkRoadOut","PHObject"); udstNode->addNode(dMuoTrkRoadOutNode); dMuoTracksOutv2* dMuoTracksO = new dMuoTracksOutv2(); PHIODataNode* dMuoTracksOutNode = new PHIODataNode(dMuoTracksO,"dMuoTracksOut","PHObject"); udstNode->addNode(dMuoTracksOutNode); mMuoFillTrackOutM = new mMuoFillTrackOut; mMuoFillTrkRoadOutM = new mMuoFillTrkRoadOut; mMuiFillRoadOutM = new mMuiFillRoadOut; //Copy the dMuiPseudoTrigger Table dMuiPseudoTriggerOutv1* muiTrigger = new dMuiPseudoTriggerOutv1; PHIODataNode* muiTriggerNode = new PHIODataNode(muiTrigger,"dMuiPseudoTriggerOut","PHObject"); udstNode->addNode(muiTriggerNode); return 1; } int process_muo(PHCompositeNode *topNode) { PHNodeIterator iter(topNode); PHCompositeNode* dstNode = static_cast(iter.findFirst("PHCompositeNode", "DST")); if(dstNode==0) { cout<(iter.findFirst("PHCompositeNode", "UDST")); if(udstNode==0) { cout<::iterator iDSTRoads(dstNode); if(iDSTRoads.find("dMuiRoadsOut")==0) { //No dMuiRoads so we'll assume we have a dMuiRoadsWrapper //cout<<"Filling dMuiRoadsOut from Wrapper\n"; mMuiFillRoadOutM->event(topNode); }else { PHIODataNode::iterator iUDSTRoads(udstNode); if(iUDSTRoads.find("dMuiRoadsOut")==0) { PHMESSAGE("dMuiRoadsOut not found on the UDST node."); }else { //cout<<"Filling dMuiRoadsOut from Out Class\n"; (*iUDSTRoads).Reset(); (*iUDSTRoads).FillFromClass((*iDSTRoads)); } } //Let's Find the dMuoTrkRoadOut if available we'll copy from here. PHIODataNode::iterator iDSTTrkRd(dstNode); if(iDSTTrkRd.find("dMuoTrkRoadOut")==0) { //No dMuoTrkRoadOut so we'll assume we have a dMuoTrackRoadRelWrapper //cout<<"Filling dMuoTrkRoadOut from Wrapper\n"; mMuoFillTrkRoadOutM->event(topNode); }else { PHIODataNode::iterator iUDSTTrkRd(udstNode); if(iUDSTTrkRd.find("dMuoTrkRoadOut")==0) { PHMESSAGE("dMuoTrkRoadOut not found on the UDST node."); }else { //cout<<"Filling dMuoTrkRoadOut from Out Class\n"; (*iUDSTTrkRd).Reset(); (*iUDSTTrkRd).FillFromClass((*iDSTTrkRd)); } } //Let's Find the dMuoTracksOut if available we'll copy from here. PHIODataNode::iterator iDSTTrack(dstNode); if(iDSTTrack.find("dMuoTracksOut")==0) { //No dMuoTracksOut so we'll assume we have a dMuoTracksWrapper //cout<<"Filling dMuoTracksOut from Wrapper\n"; mMuoFillTrackOutM->event(topNode); }else { PHIODataNode::iterator iUDSTTrack(udstNode); if(iUDSTTrack.find("dMuoTracksOut")==0) { PHMESSAGE("dMuoTracksOut not found on the UDST node."); }else { //cout<<"Filling dMuoTracksOut from Out Class\n"; (*iUDSTTrack).Reset(); (*iUDSTTrack).FillFromClass((*iDSTTrack)); } } //Let's find the dMuiPseudoTriggerOut //Let's find the DST { PHIODataNode::iterator dstTrig(dstNode); if(dstTrig.find("dMuiPseudoTriggerOut")==0) {cout<(iter.findFirst("PHCompositeNode", "UDST")); if(udstNode==0) { cout<::iterator udstTrig(udstNode); if(udstTrig.find("dMuiPseudoTriggerOut")==0) {cout<