00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "StFpdMaker.h"
00030 #include <stdlib.h>
00031 #include "StEventTypes.h"
00032
00033 #include "StDaqLib/FPD/FPD_Reader.hh"
00034 #include "StDAQMaker/StDAQReader.h"
00035 #include "TFile.h"
00036 #include "TH1.h"
00037
00038 ClassImp(StFpdMaker)
00039
00040
00041
00042 StFpdMaker::StFpdMaker(const char *name):StMaker(name) {}
00043
00044
00045
00046 StFpdMaker::~StFpdMaker(){}
00047
00048
00049
00050 Int_t StFpdMaker::Init(){
00051 return StMaker::Init();
00052 }
00053
00054
00055
00056 Int_t StFpdMaker::Make(){
00057
00058 #ifdef FPDP_DEBUG
00059 cout << "===========FPDP_DEBUG=========================================" << endl;
00060 #endif
00061
00062
00063 StFpdCollection* fpdCollection;
00064
00065 mEvent = (StEvent *) GetInputDS("StEvent");
00066 if(!mEvent){
00067
00068 cout << "StFpdMaker found no StEvent... Create local StEvent" << endl;
00069 mEvent = new StEvent;
00070 AddData(mEvent);
00071 }
00072
00073
00074
00075 fpdCollection = mEvent->fpdCollection();
00076 if(fpdCollection != 0) {
00077
00078 } else {
00079 cout << "StFpdMaker fpdCollection does not exist" << endl;
00080 cout << "StFpdMaker creating fpdCollection in StEvent ... ";
00081 fpdCollection = new StFpdCollection();
00082 mEvent->setFpdCollection(fpdCollection);
00083 fpdCollection = mEvent->fpdCollection();
00084 if (fpdCollection) cout << "OK"<< endl;
00085 else{
00086 cout << "FAILED" << endl;
00087 return kStWarn;
00088 }
00089 }
00090
00091
00092
00093
00094 StTriggerDetectorCollection* trg = mEvent->triggerDetectorCollection();
00095 if(trg == 0){
00096 cout << "StFpdMaker found no StTriggerDetectorCollection... Create and add" << endl;
00097 trg = new StTriggerDetectorCollection;
00098 mEvent->setTriggerDetectorCollection(trg);
00099 }
00100 StBbcTriggerDetector& bbcTriggerDetector = trg->bbc();
00101
00102
00103 cout << "StFapdMaker getting data from FPDDAQ Reader ... " << endl;
00104 St_DataSet* daqReaderDS = GetDataSet("StDAQReader");
00105 if (!daqReaderDS) {
00106 cout << "StFpdMaker No StDAQReader dataset. Event skipped" << endl;
00107 return kStWarn;
00108 }
00109 StDAQReader* daqReader = (StDAQReader*)(daqReaderDS->GetObject());
00110 if (!daqReader) {
00111 cout << "StFpdMaker No StDAQReader object. Event skipped" << endl;
00112 return kStWarn;
00113 }
00114 if (!(daqReader->FPDPresent())) {
00115 cout << "StFpdMaker FPD is not in datastream. Event skipped" << endl;
00116 return kStWarn;
00117 }
00118 StFpdReaderInterface* fpdReader = daqReader->getFPDReader();
00119 if (!fpdReader){
00120 cout << "StFpdMaker Failed to getFpdReader()...." << endl;
00121 }
00122
00123
00124
00125
00126 fpdCollection->setToken(fpdReader->GetEventNumber());
00127 for (unsigned int i=0;i<fpdCollection->numberOfADC();i++){
00128 fpdCollection->setAdc(i,fpdReader->GetAdc(i));
00129 }
00130 for (unsigned int i=0;i<fpdCollection->numberOfTDC();i++){
00131 fpdCollection->setTdc(i,fpdReader->GetTdc(i));
00132 }
00133 for (unsigned int i=0;i<fpdCollection->numberOfRegisters();i++){
00134 fpdCollection->setRegister(i,fpdReader->GetReg(i));
00135 }
00136 for (unsigned int i=0;i<fpdCollection->numberOfPedestal();i++){
00137 fpdCollection->setPedestal(i,fpdReader->GetPed(i));
00138 }
00139 for (unsigned int i=0;i<fpdCollection->numberOfScalers();i++){
00140 fpdCollection->setScaler(i,fpdReader->GetScl(i));
00141 }
00142
00143 for (unsigned int i=0;i<32;i++){
00144 bbcTriggerDetector.setAdc(i,fpdReader->GetBbcAdc(i));
00145 bbcTriggerDetector.setTdc(i,fpdReader->GetBbcAdc(i+32));
00146 }
00147 for (unsigned int i=0;i<bbcTriggerDetector.numberOfRegisters();i++){
00148 bbcTriggerDetector.setRegister(i,fpdReader->GetBbcAdc(i+64));
00149 }
00150 for (unsigned int i=0;i<bbcTriggerDetector.numberOfPedestalData();i++){
00151 bbcTriggerDetector.setPedestal(i,fpdReader->GetBbcPed(i));
00152 }
00153 for (unsigned int i=0;i<bbcTriggerDetector.numberOfScalars();i++){
00154 bbcTriggerDetector.setScalar(i,fpdReader->GetBbcScl(i));
00155 }
00156
00157
00158
00159 return kStOK;
00160 }
00161
00162
00163 Int_t StFpdMaker::Finish(){
00164
00165
00166
00167
00168 return StMaker::Finish();
00169 }