mEmcGeaClusterEvalModule.C

Go to the documentation of this file.
00001 #include <iostream>
00002 #include "PHNode.h"
00003 #include "PHCompositeNode.h"
00004 #include "PHIODataNode.h"
00005 #include "PHNodeIterator.h"
00006 #include "PHTable.hh"
00007 #include "mEmcGeaClusterEvalModule.h"
00008 
00009 #include "dEmcEventWrapper.h"
00010 
00011 #include "dEmcGeaTrackWrapper.h"
00012 
00013 #include "dEmcGeaTowerTrackWrapper.h"
00014 
00015 #include "dEmcClusterLocalExtWrapper.h"
00016 
00017 #include "dEmcGeaTrackClusterWrapper.h"
00018 
00019 #include "dEmcGeaClusterTrackWrapper.h"
00020 typedef PHIODataNode<PHTable> TableNode_t;
00021 
00022 #include "phool.h"
00023 
00024 using namespace std;
00025 
00026 // Default constructor and destructor to pacify CINT
00027 mEmcGeaClusterEvalModule::mEmcGeaClusterEvalModule(){}
00028 
00029 mEmcGeaClusterEvalModule::~mEmcGeaClusterEvalModule(){}
00030 
00031 PHBoolean
00032 mEmcGeaClusterEvalModule::event(PHCompositeNode *root) {
00033  PHPointerList<PHNode> nodes;
00034  PHNodeIterator i(root), *j;
00035  PHNode *n;
00036  TableNode_t *d;
00037  PHTable *w;
00038  PHCompositeNode *emcNode, *dstNode, *evaNode, *outNode;
00039 
00040  emcNode = static_cast<PHCompositeNode*>(i.findFirst("PHCompositeNode", "EMC"));
00041  if (!emcNode) {
00042    cerr << PHWHERE << " Could not find EMC node" << endl;
00043    return False;
00044    //   emcNode = new PHCompositeNode("EMC");
00045    //root->addNode(emcNode);
00046  }
00047 
00048  dstNode = static_cast<PHCompositeNode*>(i.findFirst("PHCompositeNode", "DST"));
00049  if (!dstNode) {
00050    cerr << PHWHERE << " Could not find DST node " << endl;
00051    return False;
00052    //   dstNode = new PHCompositeNode("DST");
00053    //   root->addNode(dstNode);
00054  }
00055 
00056  evaNode = static_cast<PHCompositeNode*>(i.findFirst("PHCompositeNode", "EVA"));
00057  if (!evaNode) {
00058    cerr << PHWHERE << " Could not find EVA node " << endl;
00059    return False;
00060    //   evaNode = new PHCompositeNode("EVA");
00061    //   root->addNode(evaNode);
00062  }
00063 
00064 
00065 // Insert code here to navigate node hierarchy and find
00066 // or create specific nodes to pass to physics module...
00067 
00068   outNode = emcNode;
00069   n = i.findFirst("PHIODataNode", "dEmcEvent");
00070   if (!n) {
00071     cerr<< PHWHERE << "ERROR:  'in' parameter dEmcEvent not found" << endl;
00072 //     w = new dEmcEventWrapper("dEmcEvent", 1);
00073 //     if (!w) {
00074 //       return 1;
00075 //     }
00076 //     n = new TableNode_t(w,"dEmcEvent");
00077 //     outNode->addNode(n);
00078     return False;
00079   }
00080   nodes.append(n);
00081 
00082   outNode = evaNode;
00083   n = i.findFirst("PHIODataNode", "dEmcGeaTrack");
00084   if (!n) {
00085     cerr << PHWHERE << "ERROR:  'in' parameter dEmcGeaTrack not found" << endl;
00086 //      w = new dEmcGeaTrackWrapper("dEmcGeaTrack", 10);
00087 //      if (!w) {
00088 //        return 1;
00089 //      }
00090 //      n = new TableNode_t(w,"dEmcGeaTrack");
00091 //      outNode->addNode(n);
00092   }
00093   nodes.append(n);
00094 
00095   outNode = evaNode;
00096   n = i.findFirst("PHIODataNode", "dEmcGeaTowerTrack");
00097   if (!n) {
00098     cerr << PHWHERE << "ERROR:  'in' parameter dEmcGeaTowerTrack not found" << endl;
00099 //      w = new dEmcGeaTowerTrackWrapper("dEmcGeaTowerTrack", 15000);
00100 //      if (!w) {
00101 //        return 1;
00102 //      }
00103 //      n = new TableNode_t(w,"dEmcGeaTowerTrack");
00104 //      outNode->addNode(n);
00105     return False;
00106   }
00107   nodes.append(n);
00108 
00109   outNode = dstNode;
00110   n = i.findFirst("PHIODataNode", "dEmcClusterLocalExt");
00111   if (!n) {
00112     cerr << PHWHERE << "ERROR:  'in' parameter dEmcClusterLocalExt not found" << endl;
00113 //      w = new dEmcClusterLocalExtWrapper("dEmcClusterLocalExt", 6000);
00114 //      if (!w) {
00115 //        return 1;
00116 //      }
00117 //      n = new TableNode_t(w,"dEmcClusterLocalExt");
00118 //      outNode->addNode(n);
00119     return False;
00120   }
00121   nodes.append(n);
00122 
00123   outNode = evaNode;
00124   j = new PHNodeIterator(outNode);
00125   if (!(d = static_cast<TableNode_t*>(j->findFirst("PHIODataNode","dEmcGeaTrackCluster")))) {
00126     cerr << PHWHERE << " Could not find dEmcGeaTrackCluster node" << endl;
00127     return False;
00128  //     w = new dEmcGeaTrackClusterWrapper("dEmcGeaTrackCluster", 10);
00129 //      if (!w) {
00130 //        return 1;
00131 //      }
00132 //      d = new TableNode_t(w,"dEmcGeaTrackCluster");
00133 //      outNode->addNode(d);
00134   }
00135   delete j;
00136   nodes.append(d);
00137 
00138   outNode = evaNode;
00139   j = new PHNodeIterator(outNode);
00140   if (!(d = static_cast<TableNode_t*>(j->findFirst("PHIODataNode","dEmcGeaClusterTrack")))) {
00141     cerr << PHWHERE << " Could not find dEmcGeaClusterTrack" << endl;
00142     return False;
00143 
00144 //      w = new dEmcGeaClusterTrackWrapper("dEmcGeaClusterTrack", 10);
00145 //      if (!w) {
00146 //        return 1;
00147 //      }
00148 //      d = new TableNode_t(w,"dEmcGeaClusterTrack");
00149 //      outNode->addNode(d);
00150   }
00151   delete j;
00152   nodes.append(d);
00153 
00154   return callPAM(nodes);
00155 }