00001
00002
00003
00004 #include <iostream>
00005 #include <StMessMgr.h>
00006
00007 #include "StEEmcPrint.h"
00008 #include "StEventTypes.h"
00009
00010 ClassImp(StEEmcPrint);
00011 StEEmcPrint::StEEmcPrint() {
00012 mPrint = 15;
00013 }
00014 StEEmcPrint::~StEEmcPrint(){ }
00015
00016
00017
00018 void
00019 StEEmcPrint::print(StEmcCollection * emcCol) {
00020 LOG_DEBUG << "mPrint = " << mPrint << endm;
00021 int detBit[4] = {1, 2, 4, 8};
00022 char uv = 'U';
00023
00024 for(int iDet = kEndcapEmcTowerId; iDet<= kEndcapSmdVStripId; iDet++){
00025 if(!(mPrint & detBit[iDet - kEndcapEmcTowerId])) continue;
00026 if(iDet == kEndcapSmdVStripId) uv++;
00027 if(iDet == kEndcapEmcTowerId) {
00028 LOG_DEBUG << "EEmc Tower" << endm;
00029 }
00030 else if(iDet == kEndcapEmcPreShowerId) {
00031 LOG_DEBUG << "EEmc Pre/Post" << endm;
00032 }
00033 else {
00034 LOG_DEBUG << "EEmc SMD-" << uv << endm;
00035 }
00036
00037 StDetectorId detId = StDetectorId(iDet);
00038 StEmcDetector* StEEmcDet = emcCol->detector(detId);
00039
00040 if(StEEmcDet !=0) {
00041 for(unsigned int sec = 1; sec <= StEEmcDet->numberOfModules(); sec++){
00042 StEmcModule* StEEmcMod = StEEmcDet->module(sec);
00043 LOG_DEBUG << "Sector = " << sec << endm;
00044
00045 if(StEEmcMod != 0) {
00046 StSPtrVecEmcRawHit & EEmcRawHits = StEEmcMod->hits();
00047 LOG_DEBUG << "Number of Hits = " << EEmcRawHits.size() << endm;
00048
00049 for(unsigned int i=0; i<EEmcRawHits.size() ;i++){
00050 int sub = EEmcRawHits[i]->sub();
00051 int eta = EEmcRawHits[i]->eta();
00052 float e = EEmcRawHits[i]->energy();
00053 int adc = EEmcRawHits[i]->adc();
00054
00055 if(iDet == kEndcapEmcTowerId) {
00056 LOG_DEBUG <<Form("i=%d Tower %2.2dT%c%2.2d: energy=%f adc=%d",i,sec,sub+'A'-1,eta,e,adc )<< endm;
00057 }
00058 else if(iDet == kEndcapEmcPreShowerId) {
00059 int psub = (sub%5 == 0) ? 5:sub%5;
00060 int pre = (sub-1)/5 + 1;
00061 LOG_DEBUG <<Form("i=%d pre/post(%d) %2.2d%c%c%2.2d : energy=%f adc=%d",i,pre,sec,pre+'P'-1,psub+'A'-1,eta,e,adc)<< endm;
00062 }
00063 else {
00064 LOG_DEBUG <<Form("SMD-%c %2.2d%c%3.3d : energy=%f adc=%d",uv,sec,uv,eta,e,adc)<< endm;
00065 }
00066 }
00067 }
00068 }
00069 }
00070 }
00071
00072 }
00073
00074
00075
00076
00077 void
00078 StEEmcPrint::printChange(StEmcCollection * emcCol,StEmcCollection * emcColB,char *comm){
00079
00080
00081 LOG_DEBUG << comm<<" mPrint mode= " << mPrint << endm;
00082 int detBit[4] = {1, 2, 4, 8};
00083 char uv = 'U';
00084
00085 for(int iDet = kEndcapEmcTowerId; iDet<= kEndcapSmdVStripId; iDet++){
00086 if(!(mPrint & detBit[iDet - kEndcapEmcTowerId])) continue;
00087 if(iDet == kEndcapSmdVStripId) uv++;
00088 if(iDet == kEndcapEmcTowerId) {
00089 LOG_DEBUG << "EEmc Tower" << endm;
00090 }
00091 else if(iDet == kEndcapEmcPreShowerId) {
00092 LOG_DEBUG << "EEmc Pre/Post" << endm;
00093 }
00094 else {
00095 LOG_DEBUG << "EEmc SMD-" << uv << endm;
00096 }
00097
00098 StDetectorId detId = StDetectorId(iDet);
00099 StEmcDetector* StEEmcDet = emcCol->detector(detId);
00100 StEmcDetector* StEEmcDetB = emcColB->detector(detId);
00101
00102 if(StEEmcDet ==0) continue;
00103 if(StEEmcDetB==0) {
00104 LOG_DEBUG << " colB has no data for above sub-detector"<<endm;
00105 continue;
00106 }
00107
00108 for(unsigned int sec = 1; sec <= StEEmcDet->numberOfModules(); sec++){
00109 StEmcModule* StEEmcMod = StEEmcDet->module(sec);
00110 if(StEEmcMod == 0) continue;
00111
00112 StEmcModule* StEEmcModB = StEEmcDetB->module(sec);
00113 LOG_DEBUG << "Sector = " << sec <<endm ;
00114
00115 assert(StEEmcModB);
00116
00117 StSPtrVecEmcRawHit & EEmcRawHits = StEEmcMod->hits();
00118 StSPtrVecEmcRawHit & EEmcRawHitsB = StEEmcModB->hits();
00119 LOG_DEBUG << " Number of HitsA = " << EEmcRawHits.size() << ", HitsB="<<EEmcRawHitsB.size()<<endm;
00120
00121 for(unsigned int i=0; i<EEmcRawHits.size() ;i++){
00122 int sub = EEmcRawHits[i]->sub();
00123 uint eta = EEmcRawHits[i]->eta();
00124 float e = EEmcRawHits[i]->energy();
00125 int adc = EEmcRawHits[i]->adc();
00126
00127 int adcB=-99999;
00128 bool match=false;
00129 for(unsigned int j=0; j<EEmcRawHitsB.size() ;j++){
00130 if(sub != EEmcRawHitsB[j]->sub()) continue;
00131 if(eta != EEmcRawHitsB[j]->eta()) continue;
00132 adcB= EEmcRawHitsB[j]->adc();
00133 if(iDet == kEndcapEmcTowerId && adcB==0) continue;
00134 match=true;
00135 break;
00136 }
00137
00138 if(!match) continue;
00139
00140 if(iDet == kEndcapEmcTowerId) {
00141 LOG_DEBUG << Form("\ti=%d ecolA: Tower %2.2dT%c%2.2d: energy=%f adc=%d <--> %d=adc old in ecolB",i,sec,sub+'A'-1,eta,e,adc, adcB)<<endm;
00142 } else if(iDet == kEndcapEmcPreShowerId) {
00143 int psub = (sub%5 == 0) ? 5:sub%5;
00144 int pre = (sub-1)/5 + 1;
00145 LOG_DEBUG << Form("\ti=%d ecolA: pre/post(%d) %2.2d%c%c%2.2d : energy=%f adc=%d<--> %d=adc old in ecolB",i,pre,sec,pre+'P'-1,psub+'A'-1,eta,e,adc,adcB)<<endm;
00146 }
00147 else {
00148 LOG_DEBUG << Form("\tSMD-%c %2.2d%c%3.3d : energy=%f adc=%d <--> %d=adc old in ecolB",uv,sec,uv,eta,e,adc, adcB)<<endm;
00149 }
00150 }
00151 }
00152 }
00153 }
00154