00001 #ifndef NEW_DAQ_READER
00002 # include "evpReader.hh"
00003 # include "emcReader.h"
00004 # include "trgReader.h"
00005 #else
00006 # include "DAQ_READER/daqReader.h"
00007 # include "DAQ_READER/daq_dta.h"
00008 # include "DAQ_EMC/daq_emc.h"
00009 # include "DAQ_ETOW/daq_etow.h"
00010 # include "DAQ_ESMD/daq_esmd.h"
00011 # include "DAQ_TRG/daq_trg.h"
00012 # include "DAQ_READER/evpReaderClass.h"
00013 # include "DAQ_EMC/emcReader.h"
00014 # include <RTS/include/daqFormats.h>
00015 #endif
00016
00017 #include <TObjArray.h>
00018
00019 #include "StEEmcUtil/database/StEEmcDb.h"
00020
00021 #include "EEMCPlots.h"
00022 #include "EEqaSorter.h"
00023 #include "Tonko2Ezt.h"
00024
00025 EEMCPlots *EEMCPlotsInstance = 0;
00026
00027
00028 void EEMCPlots::initHisto(TObjArray *list, const char *eemcDbDump, const char *eemcPathIn, const char *eemcPathOut) {
00029 if (EEMCPlotsInstance) delete EEMCPlotsInstance; EEMCPlotsInstance = 0;
00030 EEMCPlotsInstance = new EEMCPlots(list, eemcDbDump, eemcPathIn, eemcPathOut);
00031 if (EEMCPlotsInstance) {
00032 EEMCPlotsInstance->resetHistograms();
00033 }
00034 }
00035
00036 void EEMCPlots::resetHisto() {
00037 if (EEMCPlotsInstance) {
00038 EEMCPlotsInstance->resetHistograms();
00039 }
00040 }
00041
00042 void EEMCPlots::saveHisto(TFile *hfile) {
00043 if (EEMCPlotsInstance) {
00044 EEMCPlotsInstance->saveHistograms(hfile);
00045 }
00046 }
00047
00048 void EEMCPlots::fillHisto( char *rdr
00049 , const unsigned char * dsm0inp
00050 , const unsigned short int * dsm1inp
00051 , const unsigned short int * dsm2inp
00052 , const unsigned short int * dsm3inp
00053 ) {
00054 if (EEMCPlotsInstance) {
00055 EEMCPlotsInstance->processEvent(rdr, dsm0inp, dsm1inp, dsm2inp, dsm3inp);
00056 }
00057 }
00058
00059 EEMCPlots::EEMCPlots(TObjArray *list, const char *eemcDbDump, const char *eemcPathIn, const char *eemcPathOut)
00060 : eeqa(0), eeDb(0)
00061 {
00062 eeDb = new StEEmcDb();
00063 eeDb->setSectors(1, 12);
00064 eeDb->setAsciiDatabase(eemcDbDump);
00065
00066 eeqa = new EEqaSorter(eeDb);
00067 eeqa->setPath(eemcPathIn, eemcPathOut);
00068 eeqa->initHisto(list, 200,1000);
00069
00070
00071
00072 }
00073
00074 EEMCPlots::~EEMCPlots() {
00075 if (eeqa) delete eeqa;
00076 if (eeDb) delete eeDb;
00077 }
00078
00079
00080
00081 void EEMCPlots::resetHistograms() {
00082 if (eeqa) eeqa->resetHisto();
00083 }
00084
00085 void EEMCPlots::saveHistograms(TFile *hfile) {
00086 if (eeqa) eeqa->saveHisto(hfile);
00087 }
00088
00089 void EEMCPlots::processEvent( char *datap
00090 , const unsigned char * dsm0inp
00091 , const unsigned short int * dsm1inp
00092 , const unsigned short int * dsm2inp
00093 , const unsigned short int * dsm3inp
00094 ) {
00095 if (eeqa) {
00096 #ifdef NEW_DAQ_READER
00097 daqReader *rdr = (daqReader*)(datap);
00098 #else
00099 int ret = emcReader(datap);
00100 #endif
00101
00102 #ifdef NEW_DAQ_READER
00103 unsigned int runId = rdr->run;
00104 unsigned int token = rdr->token;
00105
00106
00107 #else
00108 evpReader *evp = (evpReader*)(datap);
00109 unsigned int runId = evp->run;
00110 unsigned int token = evp->token;
00111
00112
00113 #endif
00114
00115 Tonko2Ezt ezt(datap);
00116 eeqa->clear();
00117 eeqa->sort(ezt.eETowPresent ? &ezt.eETow : 0, ezt.eESmdPresent ? &ezt.eESmd : 0, runId, token, TRG_VERSION, dsm0inp, dsm1inp, dsm2inp, dsm3inp);
00118
00119 }
00120 }
00121