#include <KKMC.h>
Definition at line 19 of file KKMC.h.
KKMC::KKMC | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 104 of file KKMC.cxx.
References m_cmsEnergy, m_cmsEnergySpread, m_DdbarCutPsi3770, m_evtGenDecay, m_fsrtag, m_generateBottomQuark, m_generateCharmQuark, m_generateContinuum, m_generateDownQuark, m_generateJPsi, m_generateMuonPair, m_generateOmega, m_generatePhi, m_generatePsi3770, m_generatePsi4030, m_generatePsi4160, m_generatePsi4260, m_generatePsi4415, m_generatePsiPrime, m_generateResonance, m_generateRho, m_generateStrangeQuark, m_generateTauPair, m_generateUpQuark, m_ich, m_ihvp, m_isrtag, m_kkseed, m_numberEvent, m_numberEventPrint, m_paramOm2, m_paramOm3, m_paramOme, m_paramPh2, m_paramPhi, m_paramPs2, m_paramPs3, m_paramPs4, m_paramPs5, m_paramPs6, m_paramPs7, m_paramPs8, m_paramPsi, m_paramRh2, m_paramRh3, m_paramRho, m_paramUp2, m_paramUp3, m_paramUp4, m_paramUp5, m_paramUp6, m_paramUps, m_paramW, m_paramZeta, m_ps3D0toDp, m_ps3toNonDDb, m_ps4toD0D0b, m_ps4toD0D0Star, m_ps4toD0StarD0Star, m_ps4toDpDm, m_ps4toDpDmStar, m_ps4toDpStarDmStar, m_ps4toDsDs, m_ps5toD0D0b, m_ps5toD0D0Star, m_ps5toD0StarD0Star, m_ps5toDpDm, m_ps5toDpDmStar, m_ps5toDpStarDmStar, m_ps5toDsDs, m_ps5toDsDsStar, m_pypars, m_radiationCorrection, and m_RdMeasuredEcms.
00104 : Algorithm(name, pSvcLocator) 00105 { 00106 m_numberEvent = 0; 00107 00108 m_kkseed.clear(); 00109 m_kkseed.push_back(123456); 00110 m_kkseed.push_back(1); 00111 m_kkseed.push_back(0); 00112 00113 00114 declareProperty("NumberOfEventPrinted", m_numberEventPrint=100); 00115 declareProperty("InitializedSeed", m_kkseed); 00116 declareProperty("CMSEnergy", m_cmsEnergy = 3.773); 00117 declareProperty("ReadMeasuredEcms", m_RdMeasuredEcms = false);// Read ecms from database (Wu Lianjin) 00118 declareProperty("BeamEnergySpread", m_cmsEnergySpread = 0.0013); //it should be beam energy spread,pingrg-2009-09-24 00119 declareProperty("GenerateResonance", m_generateResonance = true); 00120 declareProperty("GenerateContinuum", m_generateContinuum = true); 00121 declareProperty("GenerateDownQuark", m_generateDownQuark = true); 00122 declareProperty("GenerateUpQuark", m_generateUpQuark = true); 00123 declareProperty("GenerateStrangeQuark", m_generateStrangeQuark = true); 00124 declareProperty("GenerateCharmQuark", m_generateCharmQuark = true); 00125 declareProperty("GenerateBottomQuark", m_generateBottomQuark = false); 00126 declareProperty("GenerateMuonPair", m_generateMuonPair = true); 00127 declareProperty("GenerateTauPair", m_generateTauPair = true); 00128 declareProperty("GenerateRho", m_generateRho = true); 00129 declareProperty("GenerateOmega", m_generateOmega = true); 00130 declareProperty("GeneratePhi", m_generatePhi = true); 00131 declareProperty("GenerateJPsi", m_generateJPsi = true); 00132 declareProperty("GeneratePsiPrime", m_generatePsiPrime = true); 00133 declareProperty("GeneratePsi3770", m_generatePsi3770 = true); 00134 declareProperty("GeneratePsi4030", m_generatePsi4030 = true); 00135 declareProperty("GeneratePsi4160", m_generatePsi4160 = true); 00136 declareProperty("GeneratePsi4415", m_generatePsi4415 = true); 00137 declareProperty("GeneratePsi4260", m_generatePsi4260 = true); 00138 declareProperty("ThresholdCut", m_DdbarCutPsi3770 = -3.0); //generate DDbar decay, pingrg-2009-10-14 00139 declareProperty("TagISR", m_isrtag = false); //Tag ISR photon, false: ID=22, true: ID=-22, pingrg-2010-6-30 00140 declareProperty("TagFSR", m_fsrtag = false); //Tag FSR photon, false: ID=22, true: ID=-22, pingrg-2010-6-30 00141 declareProperty("ModeIndexExpXS", m_ich = -10); //mode index using the measured cross section 00142 //Added by Ke LI (like@ihep.ac.cn), 2015-02-16 00143 declareProperty("IHVP", m_ihvp= 1);// m_ihvp=0, switch off vacuum polarization; 00144 //1, 2, 3 for three different caculations (Jegerlehner/Eidelman, Jegerlehner(1988), Burkhardt etal.). 00145 //By default, is 1. 00146 00147 m_paramRho.clear(); m_paramRho.push_back(0.77457e0); m_paramRho.push_back(147.65e-3); m_paramRho.push_back(6.89e-6); 00148 m_paramRh2.clear(); m_paramRh2.push_back(1.465e0); m_paramRh2.push_back(310e-3); m_paramRh2.push_back(0.0e-6); 00149 m_paramRh3.clear(); m_paramRh3.push_back(1.700e0); m_paramRh3.push_back(240e-3); m_paramRh3.push_back(0.0e-6); 00150 m_paramOme.clear(); m_paramOme.push_back(0.78194e0);m_paramOme.push_back(8.41e-3);m_paramOme.push_back(0.60e-6); 00151 m_paramOm2.clear(); m_paramOm2.push_back(1.419e0);m_paramOm2.push_back(174e-3);m_paramOm2.push_back(0.00e-6); 00152 m_paramOm3.clear(); m_paramOm3.push_back(1.649e0);m_paramOm3.push_back(220e-3);m_paramOm3.push_back(0.00e-6); 00153 m_paramPhi.clear(); m_paramPhi.push_back(1.01942e0);m_paramPhi.push_back(4.46e-3);m_paramPhi.push_back(1.33e-6); 00154 m_paramPh2.clear(); m_paramPh2.push_back(1.680e0);m_paramPh2.push_back(150e-3);m_paramPh2.push_back(0.00e-6); 00155 m_paramPsi.clear(); m_paramPsi.push_back(3.096916e0);m_paramPsi.push_back(0.0929e-3);m_paramPsi.push_back(5.40e-6); 00156 m_paramPs2.clear(); m_paramPs2.push_back(3.686109e0);m_paramPs2.push_back(0.304e-3);m_paramPs2.push_back(2.12e-6); 00157 m_paramPs3.clear(); m_paramPs3.push_back(3.77315e0);m_paramPs3.push_back(27.2e-3);m_paramPs3.push_back(0.26e-6); 00158 m_paramPs4.clear(); m_paramPs4.push_back(4.039e0);m_paramPs4.push_back(80e-3);m_paramPs4.push_back(0.86e-6); 00159 m_paramPs5.clear(); m_paramPs5.push_back(4.153e0);m_paramPs5.push_back(103e-3);m_paramPs5.push_back(0.83e-6); 00160 m_paramPs6.clear(); m_paramPs6.push_back(4.421e0);m_paramPs6.push_back(62e-3);m_paramPs6.push_back(0.58e-6); 00161 m_paramPs7.clear(); m_paramPs7.push_back(4.263e0);m_paramPs7.push_back(95e-3);m_paramPs7.push_back(0.47e-6); 00162 m_paramPs8.clear(); m_paramPs8.push_back(3.872e0);m_paramPs8.push_back(100e-3);m_paramPs8.push_back(0.00e-6); 00163 m_paramUps.clear(); m_paramUps.push_back(9.46030e0); m_paramUps.push_back(0.0525e-3); m_paramUps.push_back(1.32e-6); 00164 m_paramUp2.clear(); m_paramUp2.push_back(10.02326e0); m_paramUp2.push_back(0.044e-3); m_paramUp2.push_back(0.52e-6); 00165 m_paramUp3.clear(); m_paramUp3.push_back(10.3552e0); m_paramUp3.push_back(0.026e-3); m_paramUp3.push_back(0.00e-6); 00166 m_paramUp4.clear(); m_paramUp4.push_back(10.580e0); m_paramUp4.push_back(14e-3); m_paramUp4.push_back(0.248e-6); 00167 m_paramUp5.clear(); m_paramUp5.push_back(10.865e0); m_paramUp5.push_back(110e-3); m_paramUp5.push_back(0.31e-6); 00168 m_paramUp6.clear(); m_paramUp6.push_back(11.019); m_paramUp6.push_back(79e-3); m_paramUp6.push_back(0.13e-6); 00169 m_paramZeta.clear(); m_paramZeta.push_back(91.1876e0); m_paramZeta.push_back(2.4952e0); m_paramZeta.push_back(0.08391e0); 00170 m_paramW.clear(); m_paramW.push_back(80.43); m_paramW.push_back(2.11e0); 00171 00172 declareProperty("ResParameterRho", m_paramRho); 00173 declareProperty("ResParameterRh2", m_paramRh2); 00174 declareProperty("ResParameterRh3", m_paramRh3); 00175 declareProperty("ResParameterOme", m_paramOme); 00176 declareProperty("ResParameterOm2", m_paramOm2); 00177 declareProperty("ResParameterOm3", m_paramOm3); 00178 declareProperty("ResParameterPhi", m_paramPhi); 00179 declareProperty("ResParameterPh2", m_paramPh2); 00180 declareProperty("ResParameterPsi", m_paramPsi); 00181 declareProperty("ResParameterPs2", m_paramPs2); 00182 declareProperty("ResParameterPs3", m_paramPs3); 00183 declareProperty("ResParameterPs4", m_paramPs4); 00184 declareProperty("ResParameterPs5", m_paramPs5); 00185 declareProperty("ResParameterPs6", m_paramPs6); 00186 declareProperty("ResParameterPs7", m_paramPs7); 00187 declareProperty("ResParameterPs8", m_paramPs8); 00188 declareProperty("ResParameterUps", m_paramUps); 00189 declareProperty("ResParameterUp2", m_paramUp2); 00190 declareProperty("ResParameterUp3", m_paramUp3); 00191 declareProperty("ResParameterUp4", m_paramUp4); 00192 declareProperty("ResParameterUp5", m_paramUp5); 00193 declareProperty("ResParameterUp6", m_paramUp6); 00194 declareProperty("ResParameterZeta", m_paramZeta); 00195 declareProperty("ResParameterW", m_paramW); 00196 00197 // psi(3770) decay 00198 declareProperty("Psi3770toNonDDb", m_ps3toNonDDb = 0.0); 00199 declareProperty("Psi3770RatioOfD0toDp", m_ps3D0toDp = 0.563); 00200 // psi(4030) decay 00201 declareProperty("Psi4030toD0D0b", m_ps4toD0D0b = 0.0227); 00202 declareProperty("Psi4030toDpDm", m_ps4toDpDm = 0.0167); 00203 declareProperty("Psi4030toDsDs", m_ps4toDsDs = 0.0383); 00204 declareProperty("Psi4030toD0D0Star", m_ps4toD0D0Star = 0.2952); 00205 declareProperty("Psi4030toDpDmStar", m_ps4toDpDmStar = 0.2764); 00206 declareProperty("Psi4030toD0StarD0Star", m_ps4toD0StarD0Star=0.2476); 00207 declareProperty("Psi4030toDpStarDmStar", m_ps4toDpStarDmStar=0.1041); 00208 // psi(4160) decay 00209 declareProperty("Psi4160toD0D0b", m_ps5toD0D0b = 0.0190); 00210 declareProperty("Psi4160toDpDm", m_ps5toDpDm = 0.0180); 00211 declareProperty("Psi4160toDsDs", m_ps5toDsDs = 0.0488); 00212 declareProperty("Psi4160toD0D0Star", m_ps5toD0D0Star = 0.1248); 00213 declareProperty("Psi4160toDpDmStar", m_ps5toDpDmStar = 0.1240); 00214 declareProperty("Psi4160toDsDsStar", m_ps5toDsDsStar = 0.0820); 00215 declareProperty("Psi4160toD0StarD0Star", m_ps5toD0StarD0Star=0.3036); 00216 declareProperty("Psi4160toDpStarDmStar", m_ps5toDpStarDmStar=0.2838); 00217 // interface to EvtGen 00218 declareProperty("ParticleDecayThroughEvtGen", m_evtGenDecay = true); 00219 declareProperty("RadiationCorrection", m_radiationCorrection = true); 00220 //interface set pythia pars 00221 m_pypars.clear(); 00222 declareProperty("setPythiaPars", m_pypars); 00223 }
StatusCode KKMC::execute | ( | ) |
Definition at line 446 of file KKMC.cxx.
References ecmsSvc, calibUtil::ERROR, IMeasuredEcmsSvc::getEcms(), HEPEVT_CLEAN, HEPEVT_GETF, HEPEVT_GETFBAR, HEPEVT_GETKFFIN, HEPEVT_NUMHEP, HEPEVT_SETPHOTOSFLAGTRUE, Bes_Common::INFO, IMeasuredEcmsSvc::isRunNoValid(), KK2F_GETEVTGENINTERFACE, KK2F_GETKEYSKIP, KK2F_INITIALIZE, KK2F_MAKE, m_cmsEnergy, m_numberEvent, m_numberEventPrint, m_RdMeasuredEcms, m_runNo, msgSvc(), PHOTOS, PSIPP_DDBARCUT, PYHEPC, PYLIST, runNo, and xwpar.
00446 { 00447 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00448 int runNo=eventHeader->runNumber(); 00449 int event=eventHeader->eventNumber(); 00450 bool newRunFlag=0; 00451 if(runNo != 0 && runNo != m_runNo){m_runNo=runNo;newRunFlag = true;}else{newRunFlag=false;} 00452 00453 //std::cout<<"runNo= "<<runNo<<" m_runNo "<<m_runNo<<" newRunFlag= "<<newRunFlag<<std::endl; 00454 00455 /****** Lianjin Wu add ******/ 00456 if(m_RdMeasuredEcms&& newRunFlag){// using cms energy of beam read from database 00457 if(!ecmsSvc->isRunNoValid(runNo)){ 00458 std::cout<<"ERROR: Can not read the MeasuredEcms, try to turn off the ReadEcmsDB"<<std::endl; 00459 return StatusCode::FAILURE; 00460 } 00461 double dbEcms=ecmsSvc->getEcms(runNo); 00462 std::cout<<"INFO: Read the MeasuredEcms"<<std::endl; 00463 m_cmsEnergy=dbEcms; 00464 xwpar[0] = m_cmsEnergy; 00465 KK2F_INITIALIZE(xwpar); 00466 } 00467 /****** ******/ 00468 // std::cout<<"The beam energy is "<<m_cmsEnergy<<", set for RunNo "<<runNo<<std::endl; 00469 00470 MsgStream log(msgSvc(), name()); 00471 00472 log << MSG::INFO << "KKMC in execute()" << endreq; 00473 00474 00475 HepMC::IO_HEPEVT HepEvtIO; 00476 00477 00478 int KeySkip,iflag; 00479 do { 00480 HEPEVT_CLEAN(); 00481 KK2F_MAKE(); 00482 KK2F_GETKEYSKIP(KeySkip); 00483 PSIPP_DDBARCUT(iflag); 00484 } while (KeySkip != 0 || iflag ==0); 00485 00486 int KeyInter; 00487 KK2F_GETEVTGENINTERFACE(KeyInter); 00488 00489 // PSIPP_DDBARCUT(iflag); 00490 // if(iflag == 0) {return StatusCode::SUCCESS;} 00491 00492 if(KeyInter == 0) { // make photos correction 00493 int Pos1, Pos2, KFfin, Nhep; 00494 HEPEVT_NUMHEP(Nhep); 00495 HEPEVT_GETF(Pos1); 00496 HEPEVT_GETFBAR(Pos2); 00497 HEPEVT_GETKFFIN(KFfin); 00498 int Posn = Pos1; 00499 if(Pos2 > Posn) Posn = Pos2; 00500 Posn = Posn + 1; 00501 if(KFfin < 10) Posn = Posn + 1; 00502 for(int ip = Posn; ip <= Nhep; ip++) HEPEVT_SETPHOTOSFLAGTRUE(ip); 00503 for(int ip = Posn; ip <= Nhep; ip++) PHOTOS(ip); 00504 PYHEPC(2); 00505 } 00506 00507 //sleep(5); 00508 00509 m_numberEvent += 1; 00510 00511 if(m_numberEvent <= m_numberEventPrint) PYLIST(1); 00512 log << MSG::INFO <<" " <<m_numberEvent<<"th event was generated !!" <<endreq; 00513 00514 PYHEPC(1); 00515 00516 HepMC::GenEvent* evt = HepEvtIO.read_next_event(); 00517 evt->set_event_number(m_numberEvent); 00518 evt->set_signal_process_id(1); 00519 // evt->print(); 00520 00521 // Check if the McCollection already exists 00522 SmartDataPtr<McGenEventCol> anMcCol(eventSvc(), "/Event/Gen"); 00523 if (anMcCol!=0) { 00524 // Add event to existing collection 00525 MsgStream log(messageService(), name()); 00526 log << MSG::INFO << "Add McGenEvent to existing collection" << endreq; 00527 McGenEvent* mcEvent = new McGenEvent(evt); 00528 anMcCol->push_back(mcEvent); 00529 } else { 00530 // Create Collection and add to the transient store 00531 McGenEventCol *mcColl = new McGenEventCol; 00532 McGenEvent* mcEvent = new McGenEvent(evt); 00533 mcColl->push_back(mcEvent); 00534 StatusCode sc = eventSvc()->registerObject("/Event/Gen",mcColl); 00535 if (sc != StatusCode::SUCCESS) { 00536 log << MSG::ERROR << "Could not register McGenEvent" << endreq; 00537 delete mcColl; 00538 delete evt; 00539 delete mcEvent; 00540 return StatusCode::FAILURE; 00541 } else { 00542 // log << MSG::INFO << "McGenEventCol created and " << npart <<" particles stored in McGenEvent" << endreq; 00543 } 00544 } 00545 00546 00547 00548 00549 return StatusCode::SUCCESS; 00550 00551 }
StatusCode KKMC::finalize | ( | ) |
Definition at line 553 of file KKMC.cxx.
References Bes_Common::INFO, KK2F_FINALIZE, KK2F_GETXSECMC, and msgSvc().
00553 { 00554 00555 MsgStream log(msgSvc(), name()); 00556 00557 log << MSG::INFO << "KKMC in finalize()" << endreq; 00558 00559 KK2F_FINALIZE(); 00560 double xSecPb, xErrPb; 00561 KK2F_GETXSECMC(xSecPb, xErrPb); 00562 00563 log << MSG::INFO << "Total MC Xsec = " << xSecPb << " +/- " << xErrPb << endreq; 00564 return StatusCode::SUCCESS; 00565 }
StatusCode KKMC::initialize | ( | ) |
Definition at line 225 of file KKMC.cxx.
References EvtCyclic3::c_str(), DDBARMASS, ecmsSvc, calibUtil::ERROR, IBesRndmGenSvc::GetEngine(), genRecEmupikp::i, Bes_Common::INFO, KK2F_INITIALIZE, KK2F_SETEVTGENINTERFACE, m_cmsEnergy, m_cmsEnergySpread, m_DdbarCutPsi3770, m_evtGenDecay, m_fsrtag, m_generateBottomQuark, m_generateCharmQuark, m_generateContinuum, m_generateDownQuark, m_generateJPsi, m_generateMuonPair, m_generateOmega, m_generatePhi, m_generatePsi3770, m_generatePsi4030, m_generatePsi4160, m_generatePsi4260, m_generatePsi4415, m_generatePsiPrime, m_generateResonance, m_generateRho, m_generateStrangeQuark, m_generateTauPair, m_generateUpQuark, m_ich, m_ihvp, m_isrtag, m_paramOm2, m_paramOm3, m_paramOme, m_paramPh2, m_paramPhi, m_paramPs2, m_paramPs3, m_paramPs4, m_paramPs5, m_paramPs6, m_paramPs7, m_paramPs8, m_paramPsi, m_paramRh2, m_paramRh3, m_paramRho, m_paramUp2, m_paramUp3, m_paramUp4, m_paramUp5, m_paramUp6, m_paramUps, m_paramW, m_paramZeta, m_ps3D0toDp, m_ps3toNonDDb, m_ps4toD0D0b, m_ps4toD0D0Star, m_ps4toD0StarD0Star, m_ps4toDpDm, m_ps4toDpDmStar, m_ps4toDpStarDmStar, m_ps4toDsDs, m_ps5toD0D0b, m_ps5toD0D0Star, m_ps5toD0StarD0Star, m_ps5toDpDm, m_ps5toDpDmStar, m_ps5toDpStarDmStar, m_ps5toDsDs, m_ps5toDsDsStar, m_pypars, m_radiationCorrection, m_RdMeasuredEcms, MODEXS, msgSvc(), MY_PYUPD, p_BesRndmGenSvc, PHOINI, PHOTONTAG, pygive_(), PYUPDA, KKMCRandom::setRandomEngine(), TURNOFFTAUDECAY, WHYM_SETDEF, and xwpar.
00225 { 00226 00227 MsgStream log(msgSvc(), name()); 00228 00229 log << MSG::INFO << "KKMC in initialize()" << endreq; 00230 00231 //set Bes unified random engine 00232 static const bool CREATEIFNOTTHERE(true); 00233 StatusCode RndmStatus = service("BesRndmGenSvc", p_BesRndmGenSvc, CREATEIFNOTTHERE); 00234 if (!RndmStatus.isSuccess() || 0 == p_BesRndmGenSvc) 00235 { 00236 log << MSG::ERROR << " Could not initialize Random Number Service" << endreq; 00237 return RndmStatus; 00238 } 00239 CLHEP::HepRandomEngine* engine = p_BesRndmGenSvc->GetEngine("KKMC"); 00240 KKMCRandom::setRandomEngine(engine); 00241 //--- 00242 if(m_ich == -2 || m_ich>=50 ) {// ISR exclusive default set particle as Psi(4260) 00243 m_generatePsi4260 = true; 00244 m_generateJPsi = 0; 00245 m_generatePsiPrime = 0; 00246 m_generatePsi3770 = 0; 00247 m_generatePsi4030 = 0; 00248 m_generatePsi4160 = 0; 00249 m_generatePsi4415 = 0; 00250 } 00251 00252 WHYM_SETDEF(xwpar); 00253 xwpar[0] = m_cmsEnergy; // c.m.s energy 00254 xwpar[1] = m_cmsEnergySpread; // energy spread of c.m.s. 00255 xwpar[3] = 6.0; // fortran output unit 00256 00257 // by Ke LI (like@ihep.ac.cn) 2015-02-16 00258 xwpar[900]=m_ihvp; // (1,2,3)flag of hadronic vacuum polarization, 0: no vacuum polarization(leptonic and hadronic) 00259 00260 if(m_generateResonance) // flag indicate to generate Resonance data 00261 xwpar[12] = 1.0; 00262 else 00263 xwpar[12] = 0.0; 00264 00265 if(m_generateContinuum ) // generate continuum 00266 xwpar[3000] = 1.0; 00267 else 00268 xwpar[3000] = 0.0; 00269 00270 if(m_generateDownQuark) // d quark production 00271 xwpar[400] = 1.0; 00272 else 00273 xwpar[400] = 0.0; 00274 00275 if(m_generateUpQuark) // u quark production 00276 xwpar[401] = 1.0; 00277 else 00278 xwpar[401] = 0.0; 00279 00280 if(m_generateStrangeQuark) // s quark production 00281 xwpar[402] = 1.0; 00282 else 00283 xwpar[402] = 0.0; 00284 00285 if(m_generateCharmQuark) // c quark production 00286 xwpar[403] = 1.0; 00287 else 00288 xwpar[403] = 0.0; 00289 00290 if(m_generateBottomQuark) // b quark production 00291 xwpar[404] = 1.0; 00292 else 00293 xwpar[404] = 0.0; 00294 00295 00296 if(m_generateMuonPair) // e+ e- --> mu+ mu- 00297 xwpar[412] = 1.0; 00298 else 00299 xwpar[412] = 0.0; 00300 00301 if(m_generateTauPair) // e+ e- --> tau+ tau- 00302 xwpar[414] = 1.0; 00303 else 00304 xwpar[414] = 0.0; 00305 int keyuds = 0; 00306 if(m_generateRho) keyuds |= 1; 00307 if(m_generateOmega) keyuds |= 2; 00308 if(m_generatePhi) keyuds |= 4; 00309 00310 int keycharm = 0; 00311 if(m_generateJPsi) keycharm |= 1; 00312 if(m_generatePsiPrime) keycharm |= 2; 00313 if(m_generatePsi3770) keycharm |= 4; 00314 if(m_generatePsi4030) keycharm |= 8; 00315 if(m_generatePsi4160) keycharm |= 16; 00316 if(m_generatePsi4415) keycharm |= 32; 00317 if(m_generatePsi4260) keycharm |= 64; 00318 00319 // resonant parameters 00320 int offset = 3100; 00321 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRho[i]; 00322 offset = offset + 3; 00323 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRh2[i]; 00324 offset = offset + 3; 00325 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRh3[i]; 00326 offset = offset + 3; 00327 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOme[i]; 00328 offset = offset + 3; 00329 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOm2[i]; 00330 offset = offset + 3; 00331 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOm3[i]; 00332 offset = offset + 3; 00333 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPhi[i]; 00334 offset = offset + 3; 00335 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPh2[i]; 00336 offset = offset + 3; 00337 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPsi[i]; 00338 offset = offset + 3; 00339 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs2[i]; 00340 offset = offset + 3; 00341 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs3[i]; 00342 offset = offset + 3; 00343 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs4[i]; 00344 offset = offset + 3; 00345 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs5[i]; 00346 offset = offset + 3; 00347 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs6[i]; 00348 offset = offset + 3; 00349 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs7[i]; 00350 offset = offset + 3; 00351 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs8[i]; 00352 offset = offset + 3; 00353 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUps[i]; 00354 offset = offset + 3; 00355 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp2[i]; 00356 offset = offset + 3; 00357 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp3[i]; 00358 offset = offset + 3; 00359 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp4[i]; 00360 offset = offset + 3; 00361 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp5[i]; 00362 offset = offset + 3; 00363 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp6[i]; 00364 offset = offset + 3; 00365 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramZeta[i]; 00366 offset = offset + 3; 00367 for(int i = 0; i < 2; i++) xwpar[offset+i] = m_paramW[i]; 00368 // offset = offset + 2; 00369 00370 xwpar[3001] = keyuds + 0.0; 00371 xwpar[3002] = keycharm + 0.0; 00372 00373 // psi(3770) decay 00374 offset = 3200; 00375 xwpar[offset + 0] = m_ps3toNonDDb; 00376 xwpar[offset + 1] = m_ps3D0toDp; 00377 DDBARMASS.ddbarmassCUT= m_DdbarCutPsi3770; 00378 MODEXS.ich = m_ich; 00379 //tag ISR or FSR photon 00380 if(m_isrtag){PHOTONTAG.isrtag=1;} else {PHOTONTAG.isrtag=0;} 00381 if(m_fsrtag){PHOTONTAG.fsrtag=1;} else {PHOTONTAG.fsrtag=0;} 00382 00383 // psi(4030) decay 00384 offset = 3210; 00385 xwpar[offset + 0] = m_ps4toD0D0b; 00386 xwpar[offset + 1] = m_ps4toDpDm; 00387 xwpar[offset + 2] = m_ps4toDsDs; 00388 xwpar[offset + 3] = m_ps4toD0D0Star; 00389 xwpar[offset + 4] = m_ps4toDpDmStar; 00390 xwpar[offset + 5] = m_ps4toD0StarD0Star; 00391 xwpar[offset + 6] = m_ps4toDpStarDmStar; 00392 // psi(4160) decay 00393 offset = 3220; 00394 xwpar[offset + 0] = m_ps5toD0D0b; 00395 xwpar[offset + 1] = m_ps5toDpDm; 00396 xwpar[offset + 2] = m_ps5toDsDs; 00397 xwpar[offset + 3] = m_ps5toD0D0Star; 00398 xwpar[offset + 4] = m_ps5toDpDmStar; 00399 xwpar[offset + 5] = m_ps5toDsDsStar; 00400 xwpar[offset + 6] = m_ps5toD0StarD0Star; 00401 xwpar[offset + 7] = m_ps5toDpStarDmStar; 00402 00403 if(!m_radiationCorrection) { 00404 xwpar[19] = 0; 00405 xwpar[20] = 0; 00406 xwpar[26] = 0; 00407 } 00408 00409 00410 KK2F_INITIALIZE(xwpar); 00411 MY_PYUPD(); 00412 PYUPDA(1, 22); 00413 //for pythia parameter tunning,pingrg-2013-6-9 00414 for(int i=0;i<m_pypars.size();i++){ 00415 pygive_(m_pypars[i].c_str(),strlen(m_pypars[i].c_str())); 00416 } 00417 00418 if(m_evtGenDecay) { 00419 KK2F_SETEVTGENINTERFACE(1); 00420 TURNOFFTAUDECAY(); 00421 } else { 00422 KK2F_SETEVTGENINTERFACE(0); 00423 PHOINI(); 00424 } 00425 00426 HepMC::HEPEVT_Wrapper::set_sizeof_real(8); 00427 HepMC::HEPEVT_Wrapper::set_sizeof_int(4); 00428 HepMC::HEPEVT_Wrapper::set_max_number_entries(4000); 00429 // std::cout << "max entries = " << HepMC::HEPEVT_Wrapper::max_number_entries() <<std::endl; 00430 // std::cout << "size of real = " << HepMC::HEPEVT_Wrapper::sizeof_real() <<std::endl; 00431 00432 /*** Read Database --Wu Lianjin ***/ 00433 if(m_RdMeasuredEcms){ 00434 StatusCode status=serviceLocator()->service("MeasuredEcmsSvc", ecmsSvc, true); 00435 if(!status.isSuccess()){ 00436 std::cout<<"ERROR: Can not initial the IMeasuredEcmsSvc right"<<std::endl; 00437 return status; 00438 } 00439 } 00440 /*** ***/ 00441 00442 log <<MSG::INFO<< "Finish KKMC initialize()" <<endreq; 00443 return StatusCode::SUCCESS; 00444 }
IMeasuredEcmsSvc* KKMC::ecmsSvc [private] |
double KKMC::m_cmsEnergy [private] |
double KKMC::m_cmsEnergySpread [private] |
double KKMC::m_DdbarCutPsi3770 [private] |
bool KKMC::m_evtGenDecay [private] |
bool KKMC::m_fsrtag [private] |
bool KKMC::m_generateBottomQuark [private] |
bool KKMC::m_generateCharmQuark [private] |
bool KKMC::m_generateContinuum [private] |
bool KKMC::m_generateDownQuark [private] |
bool KKMC::m_generateJPsi [private] |
bool KKMC::m_generateMuonPair [private] |
bool KKMC::m_generateOmega [private] |
bool KKMC::m_generatePhi [private] |
bool KKMC::m_generatePsi3770 [private] |
bool KKMC::m_generatePsi4030 [private] |
bool KKMC::m_generatePsi4160 [private] |
bool KKMC::m_generatePsi4260 [private] |
bool KKMC::m_generatePsi4415 [private] |
bool KKMC::m_generatePsiPrime [private] |
bool KKMC::m_generateResonance [private] |
bool KKMC::m_generateRho [private] |
bool KKMC::m_generateStrangeQuark [private] |
bool KKMC::m_generateTauPair [private] |
bool KKMC::m_generateUpQuark [private] |
int KKMC::m_ich [private] |
int KKMC::m_ihvp [private] |
bool KKMC::m_isrtag [private] |
std::vector<int> KKMC::m_kkseed [private] |
int KKMC::m_numberEvent [private] |
int KKMC::m_numberEventPrint [private] |
std::vector<double> KKMC::m_paramOm2 [private] |
std::vector<double> KKMC::m_paramOm3 [private] |
std::vector<double> KKMC::m_paramOme [private] |
std::vector<double> KKMC::m_paramPh2 [private] |
std::vector<double> KKMC::m_paramPhi [private] |
std::vector<double> KKMC::m_paramPs2 [private] |
std::vector<double> KKMC::m_paramPs3 [private] |
std::vector<double> KKMC::m_paramPs4 [private] |
std::vector<double> KKMC::m_paramPs5 [private] |
std::vector<double> KKMC::m_paramPs6 [private] |
std::vector<double> KKMC::m_paramPs7 [private] |
std::vector<double> KKMC::m_paramPs8 [private] |
std::vector<double> KKMC::m_paramPsi [private] |
std::vector<double> KKMC::m_paramRh2 [private] |
std::vector<double> KKMC::m_paramRh3 [private] |
std::vector<double> KKMC::m_paramRho [private] |
std::vector<double> KKMC::m_paramUp2 [private] |
std::vector<double> KKMC::m_paramUp3 [private] |
std::vector<double> KKMC::m_paramUp4 [private] |
std::vector<double> KKMC::m_paramUp5 [private] |
std::vector<double> KKMC::m_paramUp6 [private] |
std::vector<double> KKMC::m_paramUps [private] |
std::vector<double> KKMC::m_paramW [private] |
std::vector<double> KKMC::m_paramZeta [private] |
double KKMC::m_ps3D0toDp [private] |
double KKMC::m_ps3toNonDDb [private] |
double KKMC::m_ps4toD0D0b [private] |
double KKMC::m_ps4toD0D0Star [private] |
double KKMC::m_ps4toD0StarD0Star [private] |
double KKMC::m_ps4toDpDm [private] |
double KKMC::m_ps4toDpDmStar [private] |
double KKMC::m_ps4toDpStarDmStar [private] |
double KKMC::m_ps4toDsDs [private] |
double KKMC::m_ps5toD0D0b [private] |
double KKMC::m_ps5toD0D0Star [private] |
double KKMC::m_ps5toD0StarD0Star [private] |
double KKMC::m_ps5toDpDm [private] |
double KKMC::m_ps5toDpDmStar [private] |
double KKMC::m_ps5toDpStarDmStar [private] |
double KKMC::m_ps5toDsDs [private] |
double KKMC::m_ps5toDsDsStar [private] |
std::vector<std::string> KKMC::m_pypars [private] |
bool KKMC::m_radiationCorrection [private] |
bool KKMC::m_RdMeasuredEcms [private] |
int KKMC::m_runNo = 0 [static, private] |
IBesRndmGenSvc* KKMC::p_BesRndmGenSvc [private] |
double KKMC::xwpar[10000] [private] |