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
00030 #include <StMessMgr.h>
00031
00032 #include "StEEmcTrigSimuMaker.h"
00033 #include "St_DataSetIter.h"
00034
00035 #include <Stiostream.h>
00036 #include <math.h>
00037 #include "TFile.h"
00038 #include "TArrayF.h"
00039
00040 #include "StMcEventMaker/StMcEventMaker.h"
00041 #include "StMcEventTypes.hh"
00042 #include "StEventTypes.h"
00043 #include "StMcEvent.hh"
00044 #include "StEvent.h"
00045
00046
00047 ClassImp(StEEmcTrigSimuMaker)
00048 StEEmcTrigSimuMaker::StEEmcTrigSimuMaker(const char *name):StMaker(name){
00049
00050 }
00051
00052
00053 StEEmcTrigSimuMaker::~StEEmcTrigSimuMaker(){
00054
00055 }
00056
00057
00058
00059
00060 Int_t StEEmcTrigSimuMaker::Init(){
00061
00062
00063 return StMaker::Init();
00064 }
00065
00066
00067
00068
00069 Int_t StEEmcTrigSimuMaker::Make(){
00070
00071 StEvent* mEvent = (StEvent*)GetInputDS("StEvent");
00072 assert(mEvent);
00073 StEmcCollection* emcCollection = mEvent->emcCollection();
00074 StEmcDetector* twB = emcCollection->detector(kBarrelEmcTowerId);
00075
00076
00077 StEmcDetector* twE = emcCollection->detector(kEndcapEmcTowerId);
00078 if(twE==0) {
00079 LOG_WARN <<Form("%s found no E-EMC tower data in StEvent, skip event\n",GetName())<< endm;
00080 return kStOK;
00081 }
00082
00083
00084 int i;
00085
00086 if(twB) {
00087 LOG_DEBUG<< Form(":: B_EMC Tower HITS ...\n");
00088 for ( i = 1; i <= (int)twB->numberOfModules(); i++) {
00089 StSPtrVecEmcRawHit& emcTowerHits = twB->module(i)->hits();
00090 uint j;
00091 for ( j = 0; j < emcTowerHits.size(); j++) {
00092 int adc= emcTowerHits[j]->adc();
00093 int mod= emcTowerHits[j]->module();
00094 int sub= emcTowerHits[j]->sub();
00095 int eta= emcTowerHits[j]->eta();
00096 float energy= emcTowerHits[j]->energy();
00097 LOG_DEBUG<< Form("j=%d, mod=%d, sub=%d, eta=%d adc=%d ener=%f\n",j,mod,sub,eta,adc,energy);
00098 }
00099 }
00100 LOG_DEBUG<<endm;
00101 }
00102
00103 if(twE) {
00104 LOG_DEBUG<< Form(":: E_EMC Tower HITS ... %d\n",twE->numberOfModules());
00105 for ( i = 0; i < (int)twE->numberOfModules(); i++) {
00106
00107 StEmcModule* stmod = twE->module(i);
00108 if(stmod==0) continue;
00109 StSPtrVecEmcRawHit& emcTowerHits = stmod->hits();
00110 uint j;
00111 for ( j = 0; j < emcTowerHits.size(); j++) {
00112
00113 int adc= emcTowerHits[j]->adc();
00114 int sec= emcTowerHits[j]->module()+1;
00115 int sub= emcTowerHits[j]->sub()+'A';
00116 int eta= emcTowerHits[j]->eta()+1;
00117 float energy= emcTowerHits[j]->energy();
00118 LOG_DEBUG<< Form("j=%d, sec=%d, sub=%c, eta=%d adc=%d ener=%f\n",j,sec,sub,eta,adc,energy);
00119 }
00120 }
00121 LOG_DEBUG<<endm;
00122 }
00123
00124 printE();
00125
00126 return kStOK;
00127 }
00128
00129
00130
00131
00132
00133
00134 void StEEmcTrigSimuMaker::printE(){
00135
00136 StEvent* mEvent = (StEvent*)GetInputDS("StEvent");
00137 assert(mEvent);
00138 StEmcCollection* emcC= mEvent->emcCollection();
00139
00140 assert(emcC);
00141 LOG_DEBUG<< Form("::printE() found EmcCollection\n")<<endm;
00142 TString str1;
00143
00144
00145
00146 for(int det = kEndcapEmcTowerId; det<= kEndcapSmdVStripId; det++){
00147
00148 StDetectorId id = StDetectorId(det);
00149 StEmcDetector* d = emcC->detector(id);
00150 if(d==0) {
00151 LOG_DEBUG<< Form("%s::printE() Found no sub-detector collection, skipping det=%d\n",GetName(),det)<<endm;
00152 continue;
00153 }
00154
00155 str1=" i sec sub ieta energy ADC";
00156 int nTot=0;
00157 switch (det){
00158 case kEndcapEmcTowerId:
00159 LOG_DEBUG<< Form("Endcap Tower hits \n")<<endm; break;
00160 case kEndcapEmcPreShowerId:
00161 LOG_DEBUG<< Form("Endcap Preshower 1+2+post hits \n")<<endm; break;
00162 case kEndcapSmdUStripId:
00163 LOG_DEBUG<< Form("Endcap SMD-U hits \n")<<endm;
00164 str1=" i sec strip energy ADC";
00165 break;
00166 case kEndcapSmdVStripId:
00167 LOG_DEBUG<< Form("Endcap SMD-V hits \n")<<endm;
00168 str1=" i sec strip energy ADC";
00169 break;
00170 default:
00171 assert(1==2);
00172 }
00173
00174 if(d->numberOfModules() < 1) continue;
00175
00176 LOG_DEBUG<< Form("%s\n",str1.Data())<<endm;
00177
00178 for(unsigned int isec=0; isec<d->numberOfModules(); isec++){
00179 int secID=isec+1;
00180 StEmcModule* stmod = d->module(isec);
00181 if(stmod==0) continue;
00182
00183 StSPtrVecEmcRawHit & h = stmod->hits();
00184 for(unsigned int j=0; j<h.size() ;j++){
00185 nTot++;
00186
00187 switch (det){
00188 case kEndcapEmcTowerId:
00189 case kEndcapEmcPreShowerId:
00190 {
00191
00192 int sub='A'+h[j]->sub();
00193 int keta=h[j]->eta()+1;
00194 LOG_DEBUG<< Form("%3d %2.2d %c %2d %f %4d\n",nTot,secID,sub,keta,h[j]->energy(),h[j]->adc());
00195 } break;
00196 case kEndcapSmdUStripId:
00197 case kEndcapSmdVStripId:
00198 {
00199 int strip=h[j]->eta()+1;
00200 LOG_DEBUG<< Form("%3d %2.2d %3d %f %4d\n",nTot,secID,strip,h[j]->energy(),h[j]->adc());
00201 } break;
00202 default:
00203 assert(1==2);
00204 }
00205 }
00206 LOG_DEBUG<<endm;
00207 }
00208 }
00209 }
00210
00211
00212
00213
00214
00215