00001 #include "mEmcRecoModuleRealYear2.h" 00002 #include "emcNodeHelper.h" 00003 #include "PHFlag.h" 00004 #include "mEmcCalibratorModule.h" 00005 #include "emcCalibratorFactory.h" 00006 #include "emcCalibrator.h" 00007 #include "PHTimeStamp.h" 00008 #include "PHCompositeNode.h" 00009 #include "dEmcCalibTowerWrapper.h" 00010 #include "emcCalibratedDataObject.h" 00011 00012 #include <cassert> 00013 #include <iostream> 00014 00015 using namespace std; 00016 00017 const float mEmcRecoModuleRealYear2::fgPbScTowerThreshold = 0.010; // 10 MeV 00018 const float mEmcRecoModuleRealYear2::fgPbGlTowerThreshold = 0.014; // 14 MeV 00019 00020 const float mEmcRecoModuleRealYear2::fgPbScMinClusterEnergy = 0.015; // 15 MeV; 00021 const float mEmcRecoModuleRealYear2::fgPbGlMinClusterEnergy = 0.060; // 60 MeV 00022 00023 //_____________________________________________________________________________ 00024 00025 mEmcRecoModuleRealYear2::mEmcRecoModuleRealYear2(const PHFlag& flags) 00026 { 00027 assert(flags.get_IntFlag("SIMULATIONFLAG")==0); 00028 00029 00030 if ( flags.get_IntFlag("PPFLAG") ) 00031 { 00032 fPP = true; 00033 } 00034 else 00035 { 00036 fPP = false; 00037 } 00038 00039 fTimeStamp = new PHTimeStamp(0); 00040 } 00041 00042 //_____________________________________________________________________________ 00043 int 00044 mEmcRecoModuleRealYear2::ana(PHCompositeNode* topNode) 00045 { 00046 return fModules.event(topNode); 00047 } 00048 00049 //_____________________________________________________________________________ 00050 int 00051 mEmcRecoModuleRealYear2::end(PHCompositeNode*) 00052 { 00053 return 0; 00054 } 00055 00056 //_____________________________________________________________________________ 00057 int 00058 mEmcRecoModuleRealYear2::setup(PHCompositeNode* topNode) 00059 { 00060 //---- Then make our tables/objects 00061 00062 bool ok = emcNodeHelper::makeCompositeNode(topNode,"EMC2","-p"); 00063 if ( !ok ) 00064 { 00065 std::cerr << "mEmcRecoModuleRealYear2::setup : " 00066 << "Cannot create EMC2 node ?!" << std::endl; 00067 topNode->print(); 00068 return 1; 00069 } 00070 00071 PHCompositeNode* emc2Node = emcNodeHelper::findCompositeNode(topNode,"EMC2"); 00072 PHCompositeNode* dstNode = emcNodeHelper::findCompositeNode(topNode,"DST"); 00073 00074 assert(emc2Node!=0); 00075 assert(dstNode!=0); 00076 00077 emcNodeHelper::addTable<dEmcCalibTowerWrapper>(dstNode,"dEmcCalibTower", 00078 25000); 00079 00080 // emcNodeHelper::addObject<EmcCalibTowerv1>(emcNode,"EmcCalibTower"); 00081 00082 // emcCalibratedDataObject * EmcCdo = new emcCalibratedDataObject() ; 00083 // PHIODataNode<TObject>* EmcCdoNode 00084 // = new PHIODataNode<TObject>(EmcCdo, "EmcCdo"); 00085 00086 // emc2Node->addNode(EmcCdoNode) ; 00087 00088 emcNodeHelper::addObject<emcCalibratedDataObject>(emc2Node,"EmcCdo"); 00089 00090 // Then go to setup the modules needed 00091 setupAna(topNode); 00092 00093 topNode->print(); 00094 00095 return 0; 00096 } 00097 00098 //_____________________________________________________________________________ 00099 void 00100 mEmcRecoModuleRealYear2::setupAna(PHCompositeNode* topNode) 00101 { 00102 mEmcCalibratorModule* calib = 00103 new mEmcCalibratorModule(*fTimeStamp,"emcRawDataCalibratorV1"); 00104 00105 fModules.add(calib); 00106 00107 calib->UseTimeStamp(*fTimeStamp) ; 00108 00109 emcCalibrator* rdc = emcCalibratorFactory::GetCalibrator() ; 00110 00111 if ( fPP ) 00112 { 00113 rdc->SetExtraRejectListFilename 00114 ("/afs/rhic/phenix/phnxemc/DATA/emc_extra_reject_Run2pp.list"); 00115 } 00116 else 00117 { 00118 rdc->SetExtraRejectListFilename 00119 ("/afs/rhic/phenix/phnxemc/DATA/emc_extra_reject_Run2pp.list"); 00120 } 00121 00122 rdc->Print(); 00123 00124 // fModules.add(setupClustering(topNode)); 00125 00126 cout << "mEmcRecoModuleRealYear2::setupAna : module list : " 00127 << endl; 00128 00129 fModules.print(); 00130 } 00131 00132 //_____________________________________________________________________________ 00133 EMCModule* 00134 mEmcRecoModuleRealYear2::setupClustering(PHCompositeNode* topNode) 00135 { 00136 // mEmcClusterNewModule* mc = 00137 // new mEmcClusterNewModule(mEmcGeometry); 00138 00139 // // Setup clustering module. 00140 // mc->SetTowerThresholdPbSc(fgPbScTowerThreshold); 00141 // mc->SetTowerThresholdPbGl(fgPbGlTowerThreshold); 00142 // mc->SetMinClusterEnergyPbSc(fgPbScMinClusterEnergy); 00143 // mc->SetMinClusterEnergyPbGl(fgPbGlMinClusterEnergy); 00144 00145 // return mc; 00146 return 0; 00147 }