00037 {
00038
00039 int barHitCount = 0;
00040 int endHitCount = 0;
00041
00042 NBTOF1 = false;
00043 NBTOF2 = false;
00044 NETOF1 = false;
00045 NETOF2 = false;
00046 NTOF1 = false;
00047
00048 TBB = false;
00049 ETBB = false;
00050
00051 bHitpos.clear();
00052 ecapHitpos.clear();
00053 wcapHitpos.clear();
00054
00055 if(!m_TofHitCount) std::cerr<<"can not get TofHitCount pointer"<<std::endl;
00056
00057 std::vector<int> barHitmap;
00058 std::vector<int> endHitmap;
00059 std::vector<int> barHitId1;
00060 std::vector<int> barHitId2;
00061 std::vector<int> ecapHitId;
00062 std::vector<int> wcapHitId;
00063 std::vector<int>::iterator iter;
00064
00065 barHitmap.clear();
00066 endHitmap.clear();
00067 barHitId1.clear();
00068 barHitId2.clear();
00069 ecapHitId.clear();
00070 wcapHitId.clear();
00071
00072 barHitId1 = m_TofHitCount->GetbarrelHit1();
00073 barHitId2 = m_TofHitCount->GetbarrelHit2();
00074 ecapHitId = m_TofHitCount->GetecapHit();
00075 wcapHitId = m_TofHitCount->GetwcapHit();
00076
00077 for(unsigned int btofId = 0; btofId < barHitId1.size(); btofId++) barHitmap.push_back(barHitId1[btofId]);
00078 for(unsigned int btofId = 0; btofId < barHitId2.size(); btofId++) barHitmap.push_back(88+barHitId2[btofId]);
00079 for(unsigned int etofId = 0; etofId < ecapHitId.size(); etofId++) endHitmap.push_back(ecapHitId[etofId]);
00080 for(unsigned int etofId = 0; etofId < wcapHitId.size(); etofId++) endHitmap.push_back(48+wcapHitId[etofId]);
00081
00082
00083
00084
00085
00086
00087
00088
00089 int scinNo;
00090 for(int btofId = 0; btofId < 88; btofId++) {
00091 if(m_pIBGT->getTofLayerControl() == 1) {
00092 if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) ) {
00093 bHitpos.push_back(btofId);
00094 }
00095 }
00096 if(m_pIBGT->getTofLayerControl() == 2) {
00097 if(btofId != 87) {
00098 if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) ||
00099 (find(barHitId2.begin(),barHitId2.end(),btofId)!=barHitId2.end()) ||
00100 (find(barHitId2.begin(),barHitId2.end(),btofId+1)!=barHitId2.end()) ) {
00101 bHitpos.push_back(btofId);
00102 }
00103 }
00104 if(btofId == 87) {
00105 if((find(barHitId1.begin(),barHitId1.end(),btofId)!=barHitId1.end()) ||
00106 (find(barHitId2.begin(),barHitId2.end(),btofId)!=barHitId2.end()) ||
00107 (find(barHitId2.begin(),barHitId2.end(),0)!=barHitId2.end()) ) {
00108 bHitpos.push_back(btofId);
00109 }
00110 }
00111 }
00112 }
00113
00114 for(iter=ecapHitId.begin();iter!=ecapHitId.end();iter++)
00115 {
00116 scinNo = (int) (*iter)/2;
00117 if(find(ecapHitpos.begin(),ecapHitpos.end(),scinNo)==ecapHitpos.end())
00118 {
00119 ecapHitpos.push_back(scinNo);
00120 }
00121 }
00122
00123 for(iter=wcapHitId.begin();iter!=wcapHitId.end();iter++)
00124 {
00125 scinNo = (int)*iter/2;
00126 if(find(wcapHitpos.begin(),wcapHitpos.end(),scinNo)==wcapHitpos.end())
00127 {
00128 wcapHitpos.push_back(scinNo);
00129 }
00130 }
00131
00132
00133
00134 for(int btofId = 0; btofId < 88; btofId++) {
00135 if(btofId == 0) {
00136 if((find(bHitpos.begin(),bHitpos.end(),btofId) != bHitpos.end()) &&
00137 (find(bHitpos.begin(),bHitpos.end(),87) == bHitpos.end())) {
00138 barHitCount++;
00139 }
00140 }
00141 else {
00142 if((find(bHitpos.begin(),bHitpos.end(),btofId) != bHitpos.end()) &&
00143 (find(bHitpos.begin(),bHitpos.end(),btofId-1) == bHitpos.end())) {
00144 barHitCount++;
00145 }
00146 }
00147 }
00148
00149 for(int etofId = 0; etofId < 48; etofId++) {
00150 if(etofId == 0) {
00151 if((find(wcapHitId.begin(),wcapHitId.end(),etofId) != wcapHitId.end()) &&
00152 (find(wcapHitId.begin(),wcapHitId.end(),47) == wcapHitId.end())) {
00153 endHitCount++;
00154 }
00155 if((find(ecapHitId.begin(),ecapHitId.end(),etofId) != ecapHitId.end()) &&
00156 (find(ecapHitId.begin(),ecapHitId.end(),47) == ecapHitId.end())) {
00157 endHitCount++;
00158 }
00159 }
00160 else {
00161 if((find(wcapHitId.begin(),wcapHitId.end(),etofId) != wcapHitId.end()) &&
00162 (find(wcapHitId.begin(),wcapHitId.end(),etofId-1) == wcapHitId.end())) {
00163 endHitCount++;
00164 }
00165 if((find(ecapHitId.begin(),ecapHitId.end(),etofId) != ecapHitId.end()) &&
00166 (find(ecapHitId.begin(),ecapHitId.end(),etofId-1) == ecapHitId.end())) {
00167 endHitCount++;
00168 }
00169 }
00170 }
00171
00172 if(barHitCount>=1) NBTOF1 = true;
00173 if(barHitCount>=2) NBTOF2 = true;
00174 if(endHitCount>=1) NETOF1 = true;
00175 if(endHitCount>=2) NETOF2 = true;
00176 if((NBTOF1 == true) || (NETOF1 == true)) NTOF1 = true;
00177
00178 for(iter=bHitpos.begin();iter!=bHitpos.end();iter++)
00179 {
00180 scinNo = *iter;
00181 for(int i=0;i<13;i++)
00182 {
00183 if(scinNo+38+i<88)
00184 {
00185 if(find(bHitpos.begin(),bHitpos.end(),scinNo+38+i)!=bHitpos.end()) TBB = true;
00186 }
00187 if(scinNo+38+i>=88)
00188 {
00189 if(find(bHitpos.begin(),bHitpos.end(),scinNo+38+i-88)!=bHitpos.end()) TBB = true;
00190 }
00191 }
00192 }
00193 for(iter=wcapHitId.begin();iter!=wcapHitId.end();iter++)
00194 {
00195 scinNo = *iter;
00196 for(int i=0;i<9;i++)
00197 {
00198 if(scinNo+20+i<48)
00199 {
00200 if(find(ecapHitId.begin(),ecapHitId.end(),scinNo+20+i)!=ecapHitId.end()) ETBB = true;
00201 }
00202 if(scinNo+20+i>=48)
00203 {
00204 if(find(ecapHitId.begin(),ecapHitId.end(),scinNo+20+i-48)!=ecapHitId.end()) ETBB = true;
00205 }
00206 }
00207 }
00208 map<int,vector<int>,greater<int> > mHitId;
00209 mHitId.clear();
00210 typedef pair<int, vector<int> > vpair;
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221 mHitId.insert(vpair(0,ecapHitpos));
00222 mHitId.insert(vpair(1,bHitpos));
00223 mHitId.insert(vpair(2,wcapHitpos));
00224
00225 m_pIBGT->setNBTof1(NBTOF1);
00226 m_pIBGT->setNBTof2(NBTOF2);
00227 m_pIBGT->setNETof1(NETOF1);
00228 m_pIBGT->setNETof2(NETOF2);
00229 m_pIBGT->setNTof1(NTOF1);
00230 m_pIBGT->setBTofBB(TBB);
00231 m_pIBGT->setETofBB(ETBB);
00232 m_pIBGT->setTofHitPos(mHitId);
00233 m_pIBGT->setBTofHitMap(barHitmap);
00234 m_pIBGT->setETofHitMap(endHitmap);
00235 }