00001 #include "mEmcRecoModuleRealYear3.h"
00002 #include "emcPatch.h"
00003 #include "emcTowerContainerv1.h"
00004 #include "emcNodeHelper.h"
00005 #include "PHFlag.h"
00006 #include "mEmcCalibratorModule.h"
00007 #include "emcCalibratorFactory.h"
00008 #include "emcCalibrator.h"
00009 #include "PHTimeStamp.h"
00010 #include "PHCompositeNode.h"
00011 #include "dEmcCalibTowerWrapper.h"
00012 #include "dEmcClusterLocalExtWrapper.h"
00013 #include "dEmcClusterLocalWrapper.h"
00014 #include "dEmcEventWrapper.h"
00015 #include "emcCalibratedDataObject.h"
00016 #include "mEmcGeometryModule.h"
00017 #include "mEmcClusterNewModule.h"
00018 #include "emcModuleHelper.h"
00019 #include "recoConsts.h"
00020 #include <cassert>
00021 #include <memory>
00022 #include <iostream>
00023
00024 using namespace std;
00025
00026
00027 const float mEmcRecoModuleRealYear3::fgPbScTowerThreshold = 0.010;
00028 const float mEmcRecoModuleRealYear3::fgPbGlTowerThreshold = 0.014;
00029
00030 const float mEmcRecoModuleRealYear3::fgPbScMinClusterEnergy = 0.015;
00031 const float mEmcRecoModuleRealYear3::fgPbGlMinClusterEnergy = 0.060;
00032
00033
00034
00035 mEmcRecoModuleRealYear3::mEmcRecoModuleRealYear3(const PHFlag& flags)
00036 {
00037 const recoConsts* rc = dynamic_cast<const recoConsts*>(&flags);
00038 assert(rc!=0);
00039
00040 assert(flags.get_IntFlag("SIMULATIONFLAG")==0);
00041
00042
00043
00044
00045
00046 fTimeStamp = new PHTimeStamp(rc->get_TimeStamp());
00047
00048 PHTimeStamp y1999(1999,1,1,0,0,0);
00049
00050 assert( *fTimeStamp > y1999 );
00051
00052 fModules = new emcModuleHelper;
00053 }
00054
00055
00056 mEmcRecoModuleRealYear3::~mEmcRecoModuleRealYear3()
00057 {
00058 delete fTimeStamp;
00059 delete fModules;
00060 }
00061
00062
00063 int
00064 mEmcRecoModuleRealYear3::ana(PHCompositeNode* topNode)
00065 {
00066 return fModules->event(topNode);
00067 }
00068
00069
00070 int
00071 mEmcRecoModuleRealYear3::end(PHCompositeNode*)
00072 {
00073 return 0;
00074 }
00075
00076
00077 int
00078 mEmcRecoModuleRealYear3::setup(PHCompositeNode* topNode)
00079 {
00080
00081
00082 PHCompositeNode* dstNode = emcNodeHelper::findCompositeNode(topNode,"DST");
00083
00084 if (!dstNode)
00085 {
00086 cerr << "<E>" << getName() << "::setup"
00087 << " no DST node found !"
00088 << endl;
00089 return -1;
00090 }
00091
00092 bool ok = emcNodeHelper::makeCompositeNode(topNode,"EMC","-p");
00093 assert(ok==true);
00094
00095 ok = emcNodeHelper::makeCompositeNode(topNode,"EMC2","-p");
00096 assert(ok==true);
00097
00098 ok = emcNodeHelper::makeCompositeNode(topNode,"PAR","-p");
00099 assert(ok==true);
00100
00101
00102
00103 PHCompositeNode* emc2Node = emcNodeHelper::findCompositeNode(topNode,"EMC2");
00104 PHCompositeNode* emcNode = emcNodeHelper::findCompositeNode(topNode,"EMC");
00105 PHCompositeNode* parNode = emcNodeHelper::findCompositeNode(topNode,"PAR");
00106
00107 emcNodeHelper::addObject<emcTowerContainerv1>(dstNode,"emcTowerContainer");
00108
00109 emcNodeHelper::addTable<dEmcCalibTowerWrapper>(dstNode,"dEmcCalibTower",
00110 25000);
00111 emcNodeHelper::addTable<dEmcClusterLocalExtWrapper>(dstNode,
00112 "dEmcClusterLocalExt",
00113 25000);
00114 emcNodeHelper::addTable<dEmcClusterLocalWrapper>(emcNode,
00115 "dEmcClusterLocal",
00116 25000);
00117 emcNodeHelper::addTable<dEmcEventWrapper>(emcNode,"dEmcEvent",1);
00118
00119 emcNodeHelper::addObject<emcCalibratedDataObject>(emc2Node,"EmcCdo");
00120
00121
00122
00123 mEmcCalibratorModule* calib =
00124 new mEmcCalibratorModule(*fTimeStamp,"emcRawDataCalibratorV2");
00125
00126 fModules->add(calib);
00127
00128 calib->UseTimeStamp(*fTimeStamp) ;
00129
00130 emcCalibrator* rdc = emcCalibratorFactory::GetCalibrator() ;
00131
00132 rdc->SetExtraRejectListFilename
00133 ("/afs/rhic/phenix/users/maximv/emc/emc_extra_reject_Run3dAu.list");
00134 rdc->Print();
00135
00136 mEmcGeometryModule* geometryModule =
00137 new mEmcGeometryModule(mEmcGeometryModule::kReal);
00138
00139 PHIODataNode<TObject>* geometryNode
00140 = new PHIODataNode<TObject>(geometryModule, "mEmcGeometry");
00141 parNode->addNode(geometryNode);
00142
00143 fModules->add(new emcPatch);
00144
00145 mEmcClusterNewModule* mc =
00146 new mEmcClusterNewModule(geometryModule);
00147
00148
00149 mc->SetTowerThresholdPbSc(fgPbScTowerThreshold);
00150 mc->SetTowerThresholdPbGl(fgPbGlTowerThreshold);
00151 mc->SetMinClusterEnergyPbSc(fgPbScMinClusterEnergy);
00152 mc->SetMinClusterEnergyPbGl(fgPbGlMinClusterEnergy);
00153
00154 fModules->add(mc);
00155
00156 cout << "mEmcRecoModuleRealYear3::setupAna : module list : "
00157 << endl;
00158
00159 fModules->print();
00160 topNode->print();
00161
00162 return 0;
00163 }
00164
00165