mEmcRecoModuleRealYear3.C

Go to the documentation of this file.
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; // 10 MeV  
00028 const float mEmcRecoModuleRealYear3::fgPbGlTowerThreshold = 0.014; // 14 MeV  
00029                                                               
00030 const float mEmcRecoModuleRealYear3::fgPbScMinClusterEnergy = 0.015; // 15 MeV
00031 const float mEmcRecoModuleRealYear3::fgPbGlMinClusterEnergy = 0.060; // 60 MeV
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  // Insure we use the same time stamp as the one blessed by the framework.
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   //---- Then make our tables/objects
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   // Create the data objects we'll need
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   // Create the module we'll need
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   // Setup clustering module.
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