#include <DQA_MDC.h>
Public Member Functions | |
DQA_MDC (const std::string &name, ISvcLocator *pSvcLocator) | |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
Private Attributes | |
ITHistSvc * | m_thsvc |
long | m_run |
long | m_event |
TH1F * | m_hresAllIncBb |
TH1F * | m_hresAllExcBb |
TH1F * | m_hresAllEvaBb |
TH1F * | m_ppLabBb |
TH1F * | m_pmLabBb |
TH1F * | m_ppCmsBb |
TH1F * | m_pmCmsBb |
TH1F * | m_pTotLabBb |
TH1F * | m_pTotCmsBb |
TH1F * | m_hresAllIncDimu |
TH1F * | m_hresAllExcDimu |
TH1F * | m_hresAllEvaDimu |
TH1F * | m_ppLabDimu |
TH1F * | m_pmLabDimu |
TH1F * | m_ppCmsDimu |
TH1F * | m_pmCmsDimu |
TH1F * | m_pTotLabDimu |
TH1F * | m_pTotCmsDimu |
Definition at line 14 of file DQA_MDC.h.
DQA_MDC::DQA_MDC | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 36 of file DQA_MDC.cxx.
00036 : 00037 Algorithm(name, pSvcLocator) { 00038 00039 //Declare the properties 00040 }
StatusCode DQA_MDC::execute | ( | ) |
Definition at line 128 of file DQA_MDC.cxx.
References cos(), Bes_Common::DEBUG, DstMdcKalTrack::electron, calibUtil::ERROR, Bes_Common::FATAL, Alignment::getDoca(), Bes_Common::INFO, m_event, m_run, m_thsvc, mass, msgSvc(), DstMdcKalTrack::muon, p_cms(), phi0, DstMdcKalTrack::setPidType(), and sin().
00128 { 00129 00130 MsgStream log(msgSvc(), name()); 00131 log << MSG::INFO << "in execute()" << endreq; 00132 00133 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00134 m_run = eventHeader->runNumber(); 00135 m_event = eventHeader->eventNumber(); 00136 log << MSG::DEBUG <<"Run " << m_run << "\tEvent " << m_event <<endreq; 00137 00138 SmartDataPtr<DQAEvent::DQAEvent> dqaevt(eventSvc(), "/Event/DQATag"); 00139 if ( dqaevt ) { 00140 log << MSG::INFO << "success get DQAEvent" << endreq; 00141 } else { 00142 log << MSG::ERROR << "Error accessing DQAEvent" << endreq; 00143 return StatusCode::FAILURE; 00144 } 00145 log << MSG::DEBUG << "DQA event tag = " << dqaevt->EventTag() << endreq; 00146 00147 double p; 00148 double p_cms; 00149 bool isDimu = false; 00150 if ( dqaevt->Dimu() ) isDimu = true; 00151 log << MSG::INFO << "DQADimuTag:\t" << dqaevt->Dimu() << endreq; 00152 //cout << "DQADimuTag:\t" << dqaevt->Dimu() << endl; 00153 00154 bool isBb = false; 00155 if ( dqaevt->Bhabha() ) isBb= true; 00156 log << MSG::INFO << "DQABbTag:\t" << dqaevt->Bhabha() << endreq; 00157 //cout << "DQABbTag:\t" << dqaevt->Bhabha() << endl; 00158 00159 SmartDataPtr<RecMdcKalTrackCol> kaltrkCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol"); 00160 if (!kaltrkCol) { 00161 log << MSG::FATAL << "Could not find RecMdcKalTrackCol" << endreq; 00162 return StatusCode::FAILURE; 00163 } 00164 RecMdcKalTrackCol::iterator iter_trk = kaltrkCol->begin(); 00165 for(; iter_trk != kaltrkCol->end(); iter_trk++) { 00166 if (isBb) RecMdcKalTrack::setPidType(RecMdcKalTrack::electron); 00167 else if (isDimu) RecMdcKalTrack::setPidType(RecMdcKalTrack::muon); 00168 //else return StatusCode::SUCCESS; 00169 00170 double dr = (*iter_trk)->dr(); 00171 double phi0 = (*iter_trk)->fi0(); 00172 double kappa = (*iter_trk)->kappa(); 00173 double dz = (*iter_trk)->dz(); 00174 double tanl = (*iter_trk)->tanl(); 00175 double pt = 1.0 / kappa; 00176 HepLorentzVector p4; 00177 p4.setPx(- sin(phi0) / fabs(kappa)); 00178 p4.setPy(cos(phi0) / fabs(kappa)); 00179 p4.setPz(tanl / fabs(kappa)); 00180 00181 double p3 = p4.mag(); 00182 double mass; 00183 if(isBb) mass = 0.000511; 00184 else if(isDimu) mass = 0.105658; 00185 00186 p4.setE(sqrt(p3 * p3 + mass * mass)); 00187 p = p4.rho(); 00188 00189 double ecm = 3.68632; 00190 HepLorentzVector psip(0.011 * ecm, 0, 0.0075, ecm); 00191 Hep3Vector boostv = psip.boostVector(); 00192 p4.boost(- boostv); 00193 p_cms = p4.rho(); 00194 TH1 *hmom(0); 00195 if (isBb){ 00196 if (m_thsvc->getHist("/DQAHist/MDC/hpTotLabBb", hmom).isSuccess()) { 00197 hmom->Fill(p); 00198 } else { 00199 log << MSG::ERROR << "Couldn't retrieve hpTotLabBb" << endreq; 00200 } 00201 if (m_thsvc->getHist("/DQAHist/MDC/hpTotCmsBb", hmom).isSuccess()) { 00202 hmom->Fill(p_cms); 00203 } else { 00204 log << MSG::ERROR << "Couldn't retrieve hpTotCmsBb" << endreq; 00205 } 00206 if (pt > 0) { 00207 if (m_thsvc->getHist("/DQAHist/MDC/hppLabBb", hmom).isSuccess()) { 00208 hmom->Fill(p); 00209 } else { 00210 log << MSG::ERROR << "Couldn't retrieve hppLabBb" << endreq; 00211 } 00212 if (m_thsvc->getHist("/DQAHist/MDC/hppCmsBb", hmom).isSuccess()) { 00213 hmom->Fill(p); 00214 } else { 00215 log << MSG::ERROR << "Couldn't retrieve hppCmsBb" << endreq; 00216 } 00217 } else if (pt < 0) { 00218 if (m_thsvc->getHist("/DQAHist/MDC/hpmLabBb", hmom).isSuccess()) { 00219 hmom->Fill(p); 00220 } else { 00221 log << MSG::ERROR << "Couldn't retrieve hpmLabBb" << endreq; 00222 } 00223 if (m_thsvc->getHist("/DQAHist/MDC/hpmCmsBb", hmom).isSuccess()) { 00224 hmom->Fill(p); 00225 } else { 00226 log << MSG::ERROR << "Couldn't retrieve hpmCmsBb" << endreq; 00227 } 00228 } 00229 } else if (isDimu){ 00230 if (m_thsvc->getHist("/DQAHist/MDC/hpTotLabDimu", hmom).isSuccess()) { 00231 hmom->Fill(p); 00232 } else { 00233 log << MSG::ERROR << "Couldn't retrieve hpTotLabDimu" << endreq; 00234 } 00235 if (m_thsvc->getHist("/DQAHist/MDC/hpTotCmsDimu", hmom).isSuccess()) { 00236 hmom->Fill(p_cms); 00237 } else { 00238 log << MSG::ERROR << "Couldn't retrieve hpTotCmsDimu" << endreq; 00239 } 00240 if (pt > 0) { 00241 if (m_thsvc->getHist("/DQAHist/MDC/hppLabDimu", hmom).isSuccess()) { 00242 hmom->Fill(p); 00243 } else { 00244 log << MSG::ERROR << "Couldn't retrieve hppLabDimu" << endreq; 00245 } 00246 if (m_thsvc->getHist("/DQAHist/MDC/hppCmsDimu", hmom).isSuccess()) { 00247 hmom->Fill(p); 00248 } else { 00249 log << MSG::ERROR << "Couldn't retrieve hppCmsDimu" << endreq; 00250 } 00251 } else if (pt < 0) { 00252 if (m_thsvc->getHist("/DQAHist/MDC/hpmLabDimu", hmom).isSuccess()) { 00253 hmom->Fill(p); 00254 } else { 00255 log << MSG::ERROR << "Couldn't retrieve hpmLabDimu" << endreq; 00256 } 00257 if (m_thsvc->getHist("/DQAHist/MDC/hpmCmsDimu", hmom).isSuccess()) { 00258 hmom->Fill(p); 00259 } else { 00260 log << MSG::ERROR << "Couldn't retrieve hpmCmsDimu" << endreq; 00261 } 00262 } 00263 } 00264 00265 } 00266 00267 SmartDataPtr<RecMdcTrackCol> newtrkCol(eventSvc(), "/Event/Recon/RecMdcTrackCol"); 00268 if(!newtrkCol){ 00269 log << MSG::ERROR << "Could not find RecMdcTrackCol" << endreq; 00270 return ( StatusCode::FAILURE ); 00271 } 00272 00273 RecMdcTrackCol::iterator it_trk = newtrkCol->begin(); 00274 for(; it_trk != newtrkCol->end(); it_trk++){ 00275 HitRefVec gothits = (*it_trk) -> getVecHits(); 00276 HitRefVec::iterator it_hit = gothits.begin(); 00277 for(; it_hit != gothits.end(); it_hit++){ 00278 00279 //cout << __LINE__ << endl; 00280 //cout << __LINE__ << endl; 00281 double lr = (*it_hit) -> getFlagLR(); 00282 if(-1 == lr) lr = 0; // definition not same as MdcRecHit 00283 double resilrInc; 00284 double resilrExc; 00285 //for boss before 650 00286 double docaInc = (*it_hit) -> getDoca(); 00287 double docaExc = docaInc; 00288 //boss650 00289 //double docaInc = (*it_hit) -> getDocaIncl(); 00290 //double docaExc = (*it_hit) -> getDocaExcl(); 00291 double dmeas; 00292 if(0 == lr){ 00293 dmeas = (*it_hit) -> getDriftDistLeft(); 00294 }else { 00295 dmeas = (*it_hit) -> getDriftDistRight(); 00296 } 00297 // the following is for cm to mm 00298 double df = 10.0; 00299 docaInc *= df; 00300 docaExc *= df; 00301 dmeas *= df; 00302 double resiInc = fabs(dmeas) - fabs(docaInc); 00303 if( 0 == lr ) resilrInc = -1.0 * resiInc; 00304 else resilrInc = resiInc; 00305 00306 double resiExc = fabs(dmeas) - fabs(docaExc); 00307 if( 0 == lr ) resilrExc = -1.0 * resiExc; 00308 else resilrExc = resiExc; 00309 00310 double resilrEva = 0.5 * (resilrInc + resilrExc); 00311 //cout << "resilrInc = " << resilrInc << ", resilrExc = " << resilrExc << ", resilrEva = " << resilrEva << endl; 00312 TH1 *htmp(0); 00313 if (isBb){ 00314 if (m_thsvc->getHist("/DQAHist/MDC/hresAllIncBb", htmp).isSuccess()) { 00315 htmp->Fill(resilrInc); 00316 } else { 00317 log << MSG::ERROR << "Couldn't retrieve hresAllIncBb" << endreq; 00318 } 00319 if (m_thsvc->getHist("/DQAHist/MDC/hresAllExcBb", htmp).isSuccess()) { 00320 htmp->Fill(resilrExc); 00321 } else { 00322 log << MSG::ERROR << "Couldn't retrieve hresAllExcBb" << endreq; 00323 } 00324 if (m_thsvc->getHist("/DQAHist/MDC/hresAllEvaBb", htmp).isSuccess()) { 00325 htmp->Fill(resilrEva); 00326 } else { 00327 log << MSG::ERROR << "Couldn't retrieve hresAllEvaBb" << endreq; 00328 } 00329 00330 } else if (isDimu){ 00331 if (m_thsvc->getHist("/DQAHist/MDC/hresAllIncDimu", htmp).isSuccess()) { 00332 htmp->Fill(resilrInc); 00333 } else { 00334 log << MSG::ERROR << "Couldn't retrieve hresAllIncDimu" << endreq; 00335 } 00336 if (m_thsvc->getHist("/DQAHist/MDC/hresAllExcDimu", htmp).isSuccess()) { 00337 htmp->Fill(resilrExc); 00338 } else { 00339 log << MSG::ERROR << "Couldn't retrieve hresAllExcDimu" << endreq; 00340 } 00341 if (m_thsvc->getHist("/DQAHist/MDC/hresAllEvaDimu", htmp).isSuccess()) { 00342 htmp->Fill(resilrEva); 00343 } else { 00344 log << MSG::ERROR << "Couldn't retrieve hresAllEvaDimu" << endreq; 00345 } 00346 } 00347 } 00348 } 00349 00350 return StatusCode::SUCCESS; 00351 }
StatusCode DQA_MDC::finalize | ( | ) |
Definition at line 354 of file DQA_MDC.cxx.
References Bes_Common::INFO, and msgSvc().
00354 { 00355 00356 MsgStream log(msgSvc(), name()); 00357 log << MSG::INFO << "in finalize()" << endmsg; 00358 log << MSG::INFO << "Finalize successfully! " << endmsg; 00359 00360 return StatusCode::SUCCESS; 00361 }
StatusCode DQA_MDC::initialize | ( | ) |
Definition at line 43 of file DQA_MDC.cxx.
References calibUtil::ERROR, Bes_Common::INFO, m_hresAllEvaBb, m_hresAllEvaDimu, m_hresAllExcBb, m_hresAllExcDimu, m_hresAllIncBb, m_hresAllIncDimu, m_pmCmsBb, m_pmCmsDimu, m_pmLabBb, m_pmLabDimu, m_ppCmsBb, m_ppCmsDimu, m_ppLabBb, m_ppLabDimu, m_pTotCmsBb, m_pTotCmsDimu, m_pTotLabBb, m_pTotLabDimu, m_thsvc, and msgSvc().
00043 { 00044 MsgStream log(msgSvc(), name()); 00045 00046 log << MSG::INFO << "in initialize()" << endmsg; 00047 StatusCode status; 00048 00049 // Call Histogram service 00050 if(service("THistSvc", m_thsvc).isFailure()) { 00051 log << MSG::ERROR << "Couldn't get THistSvc" << endreq; 00052 return StatusCode::FAILURE; 00053 } 00054 00055 // Resolution histograms 00056 m_hresAllIncBb = new TH1F("HResAllIncBb", "", 200, -1.0, 1.0); 00057 if(m_thsvc->regHist("/DQAHist/MDC/hresAllIncBb", m_hresAllIncBb).isFailure()) 00058 { log << MSG::ERROR << "Couldn't register HResAllIncBb" << endreq; } 00059 00060 m_hresAllExcBb = new TH1F("HResAllExcBb", "", 200, -1.0, 1.0); 00061 if(m_thsvc->regHist("/DQAHist/MDC/hresAllExcBb", m_hresAllExcBb).isFailure()) 00062 { log << MSG::ERROR << "Couldn't register HResAllExcBb" << endreq; } 00063 00064 m_hresAllEvaBb = new TH1F("HResAllEvaBb", "", 200, -1.0, 1.0); 00065 if(m_thsvc->regHist("/DQAHist/MDC/hresAllEvaBb", m_hresAllEvaBb).isFailure()) 00066 { log << MSG::ERROR << "Couldn't register HResAllEvaBb" << endreq; } 00067 00068 m_ppLabBb = new TH1F("PpLabBb", "", 800, 0, 3); 00069 if(m_thsvc->regHist("/DQAHist/MDC/hppLabBb", m_ppLabBb).isFailure()) 00070 { log << MSG::ERROR << "Couldn't register PpLabBb" << endreq; } 00071 m_pmLabBb = new TH1F("PmLabBb", "", 800, 0, 3); 00072 if(m_thsvc->regHist("/DQAHist/MDC/hpmLabBb", m_pmLabBb).isFailure()) 00073 { log << MSG::ERROR << "Couldn't register PmLabBb" << endreq; } 00074 00075 m_ppCmsBb = new TH1F("PpCmsBb", "", 800, 0, 3); 00076 if(m_thsvc->regHist("/DQAHist/MDC/hppCmsBb", m_ppCmsBb).isFailure()) 00077 { log << MSG::ERROR << "Couldn't register PpCmsBb" << endreq; } 00078 m_pmCmsBb = new TH1F("PmCmsBb", "", 800, 0, 3); 00079 if(m_thsvc->regHist("/DQAHist/MDC/hpmCmsBb", m_pmCmsBb).isFailure()) 00080 { log << MSG::ERROR << "Couldn't register PmCmsBb" << endreq; } 00081 00082 m_pTotLabBb = new TH1F("PTotLabBb", "", 800, 0, 3); 00083 if(m_thsvc->regHist("/DQAHist/MDC/hpTotLabBb", m_pTotLabBb).isFailure()) 00084 { log << MSG::ERROR << "Couldn't register PTotLabBb" << endreq; } 00085 m_pTotCmsBb = new TH1F("PTotCmsBb", "", 800, 0, 3); 00086 if(m_thsvc->regHist("/DQAHist/MDC/hpTotCmsBb", m_pTotCmsBb).isFailure()) 00087 { log << MSG::ERROR << "Couldn't register PTotCmsBb" << endreq; } 00088 00089 m_hresAllIncDimu = new TH1F("HResAllIncDimu", "", 200, -1.0, 1.0); 00090 if(m_thsvc->regHist("/DQAHist/MDC/hresAllIncDimu", m_hresAllIncDimu).isFailure()) 00091 { log << MSG::ERROR << "Couldn't register HResAllIncDimu" << endreq; } 00092 00093 m_hresAllExcDimu = new TH1F("HResAllExcDimu", "", 200, -1.0, 1.0); 00094 if(m_thsvc->regHist("/DQAHist/MDC/hresAllExcDimu", m_hresAllExcDimu).isFailure()) 00095 { log << MSG::ERROR << "Couldn't register HResAllExcDimu" << endreq; } 00096 00097 m_hresAllEvaDimu = new TH1F("HResAllEvaDimu", "", 200, -1.0, 1.0); 00098 if(m_thsvc->regHist("/DQAHist/MDC/hresAllEvaDimu", m_hresAllEvaDimu).isFailure()) 00099 { log << MSG::ERROR << "Couldn't register HResAllEvaDimu" << endreq; } 00100 00101 m_ppLabDimu = new TH1F("PpLabDimu", "", 800, 0, 3); 00102 if(m_thsvc->regHist("/DQAHist/MDC/hppLabDimu", m_ppLabDimu).isFailure()) 00103 { log << MSG::ERROR << "Couldn't register PpLabDimu" << endreq; } 00104 m_pmLabDimu = new TH1F("PmLabDimu", "", 800, 0, 3); 00105 if(m_thsvc->regHist("/DQAHist/MDC/hpmLabDimu", m_pmLabDimu).isFailure()) 00106 { log << MSG::ERROR << "Couldn't register PmLabDimu" << endreq; } 00107 00108 m_ppCmsDimu = new TH1F("PpCmsDimu", "", 800, 0, 3); 00109 if(m_thsvc->regHist("/DQAHist/MDC/hppCmsDimu", m_ppCmsDimu).isFailure()) 00110 { log << MSG::ERROR << "Couldn't register PpCmsDimu" << endreq; } 00111 m_pmCmsDimu = new TH1F("PmCmsDimu", "", 800, 0, 3); 00112 if(m_thsvc->regHist("/DQAHist/MDC/hpmCmsDimu", m_pmCmsDimu).isFailure()) 00113 { log << MSG::ERROR << "Couldn't register PmCmsDimu" << endreq; } 00114 00115 m_pTotLabDimu = new TH1F("PTotLabDimu", "", 800, 0, 3); 00116 if(m_thsvc->regHist("/DQAHist/MDC/hpTotLabDimu", m_pTotLabDimu).isFailure()) 00117 { log << MSG::ERROR << "Couldn't register PTotLabDimu" << endreq; } 00118 m_pTotCmsDimu = new TH1F("PTotCmsDimu", "", 800, 0, 3); 00119 if(m_thsvc->regHist("/DQAHist/MDC/hpTotCmsDimu", m_pTotCmsDimu).isFailure()) 00120 { log << MSG::ERROR << "Couldn't register PTotCmsDimu" << endreq; } 00121 00122 00123 log << MSG::INFO << "Initialize done!" <<endmsg; 00124 return StatusCode::SUCCESS; 00125 }
long DQA_MDC::m_event [private] |
TH1F* DQA_MDC::m_hresAllEvaBb [private] |
TH1F* DQA_MDC::m_hresAllEvaDimu [private] |
TH1F* DQA_MDC::m_hresAllExcBb [private] |
TH1F* DQA_MDC::m_hresAllExcDimu [private] |
TH1F* DQA_MDC::m_hresAllIncBb [private] |
TH1F* DQA_MDC::m_hresAllIncDimu [private] |
TH1F* DQA_MDC::m_pmCmsBb [private] |
TH1F* DQA_MDC::m_pmCmsDimu [private] |
TH1F* DQA_MDC::m_pmLabBb [private] |
TH1F* DQA_MDC::m_pmLabDimu [private] |
TH1F* DQA_MDC::m_ppCmsBb [private] |
TH1F* DQA_MDC::m_ppCmsDimu [private] |
TH1F* DQA_MDC::m_ppLabBb [private] |
TH1F* DQA_MDC::m_ppLabDimu [private] |
TH1F* DQA_MDC::m_pTotCmsBb [private] |
TH1F* DQA_MDC::m_pTotCmsDimu [private] |
TH1F* DQA_MDC::m_pTotLabBb [private] |
TH1F* DQA_MDC::m_pTotLabDimu [private] |
long DQA_MDC::m_run [private] |
ITHistSvc* DQA_MDC::m_thsvc [private] |