#include <KKMC.h>
Public Member Functions | |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
KKMC (const std::string &name, ISvcLocator *pSvcLocator) | |
KKMC (const std::string &name, ISvcLocator *pSvcLocator) | |
Private Attributes | |
double | m_cmsEnergy |
double | m_cmsEnergySpread |
double | m_DdbarCutPsi3770 |
bool | m_evtGenDecay |
bool | m_fsrtag |
bool | m_generateBottomQuark |
bool | m_generateCharmQuark |
bool | m_generateContinuum |
bool | m_generateDownQuark |
bool | m_generateJPsi |
bool | m_generateMuonPair |
bool | m_generateOmega |
bool | m_generatePhi |
bool | m_generatePsi3770 |
bool | m_generatePsi4030 |
bool | m_generatePsi4160 |
bool | m_generatePsi4260 |
bool | m_generatePsi4415 |
bool | m_generatePsiPrime |
bool | m_generateResonance |
bool | m_generateRho |
bool | m_generateStrangeQuark |
bool | m_generateTauPair |
bool | m_generateUpQuark |
bool | m_isrtag |
std::vector< int > | m_kkseed |
std::vector< int > | m_kkseed |
int | m_numberEvent |
int | m_numberEventPrint |
std::vector< double > | m_paramOm2 |
std::vector< double > | m_paramOm2 |
std::vector< double > | m_paramOm3 |
std::vector< double > | m_paramOm3 |
std::vector< double > | m_paramOme |
std::vector< double > | m_paramOme |
std::vector< double > | m_paramPh2 |
std::vector< double > | m_paramPh2 |
std::vector< double > | m_paramPhi |
std::vector< double > | m_paramPhi |
std::vector< double > | m_paramPs2 |
std::vector< double > | m_paramPs2 |
std::vector< double > | m_paramPs3 |
std::vector< double > | m_paramPs3 |
std::vector< double > | m_paramPs4 |
std::vector< double > | m_paramPs4 |
std::vector< double > | m_paramPs5 |
std::vector< double > | m_paramPs5 |
std::vector< double > | m_paramPs6 |
std::vector< double > | m_paramPs6 |
std::vector< double > | m_paramPs7 |
std::vector< double > | m_paramPs7 |
std::vector< double > | m_paramPs8 |
std::vector< double > | m_paramPs8 |
std::vector< double > | m_paramPsi |
std::vector< double > | m_paramPsi |
std::vector< double > | m_paramRh2 |
std::vector< double > | m_paramRh2 |
std::vector< double > | m_paramRh3 |
std::vector< double > | m_paramRh3 |
std::vector< double > | m_paramRho |
std::vector< double > | m_paramRho |
std::vector< double > | m_paramUp2 |
std::vector< double > | m_paramUp2 |
std::vector< double > | m_paramUp3 |
std::vector< double > | m_paramUp3 |
std::vector< double > | m_paramUp4 |
std::vector< double > | m_paramUp4 |
std::vector< double > | m_paramUp5 |
std::vector< double > | m_paramUp5 |
std::vector< double > | m_paramUp6 |
std::vector< double > | m_paramUp6 |
std::vector< double > | m_paramUps |
std::vector< double > | m_paramUps |
std::vector< double > | m_paramW |
std::vector< double > | m_paramW |
std::vector< double > | m_paramZeta |
std::vector< double > | m_paramZeta |
double | m_ps3D0toDp |
double | m_ps3toNonDDb |
double | m_ps4toD0D0b |
double | m_ps4toD0D0Star |
double | m_ps4toD0StarD0Star |
double | m_ps4toDpDm |
double | m_ps4toDpDmStar |
double | m_ps4toDpStarDmStar |
double | m_ps4toDsDs |
double | m_ps5toD0D0b |
double | m_ps5toD0D0Star |
double | m_ps5toD0StarD0Star |
double | m_ps5toDpDm |
double | m_ps5toDpDmStar |
double | m_ps5toDpStarDmStar |
double | m_ps5toDsDs |
double | m_ps5toDsDsStar |
bool | m_radiationCorrection |
IBesRndmGenSvc * | p_BesRndmGenSvc |
IBesRndmGenSvc * | p_BesRndmGenSvc |
|
00092 : Algorithm(name, pSvcLocator) 00093 { 00094 m_numberEvent = 0; 00095 00096 m_kkseed.clear(); 00097 m_kkseed.push_back(123456); 00098 m_kkseed.push_back(1); 00099 m_kkseed.push_back(0); 00100 00101 00102 declareProperty("NumberOfEventPrinted", m_numberEventPrint=100); 00103 declareProperty("InitializedSeed", m_kkseed); 00104 declareProperty("CMSEnergy", m_cmsEnergy = 3.773); 00105 declareProperty("BeamEnergySpread", m_cmsEnergySpread = 0.0013); //it should be beam energy spread,pingrg-2009-09-24 00106 declareProperty("GenerateResonance", m_generateResonance = true); 00107 declareProperty("GenerateContinuum", m_generateContinuum = true); 00108 declareProperty("GenerateDownQuark", m_generateDownQuark = true); 00109 declareProperty("GenerateUpQuark", m_generateUpQuark = true); 00110 declareProperty("GenerateStrangeQuark", m_generateStrangeQuark = true); 00111 declareProperty("GenerateCharmQuark", m_generateCharmQuark = true); 00112 declareProperty("GenerateBottomQuark", m_generateBottomQuark = false); 00113 declareProperty("GenerateMuonPair", m_generateMuonPair = true); 00114 declareProperty("GenerateTauPair", m_generateTauPair = true); 00115 declareProperty("GenerateRho", m_generateRho = true); 00116 declareProperty("GenerateOmega", m_generateOmega = true); 00117 declareProperty("GeneratePhi", m_generatePhi = true); 00118 declareProperty("GenerateJPsi", m_generateJPsi = true); 00119 declareProperty("GeneratePsiPrime", m_generatePsiPrime = true); 00120 declareProperty("GeneratePsi3770", m_generatePsi3770 = true); 00121 declareProperty("GeneratePsi4030", m_generatePsi4030 = true); 00122 declareProperty("GeneratePsi4160", m_generatePsi4160 = true); 00123 declareProperty("GeneratePsi4415", m_generatePsi4415 = true); 00124 declareProperty("GeneratePsi4260", m_generatePsi4260 = true); 00125 declareProperty("ThresholdCut", m_DdbarCutPsi3770 = -3.0); //generate DDbar decay, pingrg-2009-10-14 00126 declareProperty("TagISR", m_isrtag = false); //Tag ISR photon, false: ID=22, true: ID=-22, pingrg-2010-6-30 00127 declareProperty("TagFSR", m_fsrtag = false); //Tag FSR photon, false: ID=22, true: ID=-22, pingrg-2010-6-30 00128 00129 00130 m_paramRho.clear(); m_paramRho.push_back(0.77457e0); m_paramRho.push_back(147.65e-3); m_paramRho.push_back(6.89e-6); 00131 m_paramRh2.clear(); m_paramRh2.push_back(1.465e0); m_paramRh2.push_back(310e-3); m_paramRh2.push_back(0.0e-6); 00132 m_paramRh3.clear(); m_paramRh3.push_back(1.700e0); m_paramRh3.push_back(240e-3); m_paramRh3.push_back(0.0e-6); 00133 m_paramOme.clear(); m_paramOme.push_back(0.78194e0);m_paramOme.push_back(8.41e-3);m_paramOme.push_back(0.60e-6); 00134 m_paramOm2.clear(); m_paramOm2.push_back(1.419e0);m_paramOm2.push_back(174e-3);m_paramOm2.push_back(0.00e-6); 00135 m_paramOm3.clear(); m_paramOm3.push_back(1.649e0);m_paramOm3.push_back(220e-3);m_paramOm3.push_back(0.00e-6); 00136 m_paramPhi.clear(); m_paramPhi.push_back(1.01942e0);m_paramPhi.push_back(4.46e-3);m_paramPhi.push_back(1.33e-6); 00137 m_paramPh2.clear(); m_paramPh2.push_back(1.680e0);m_paramPh2.push_back(150e-3);m_paramPh2.push_back(0.00e-6); 00138 m_paramPsi.clear(); m_paramPsi.push_back(3.096916e0);m_paramPsi.push_back(0.091e-3);m_paramPsi.push_back(5.40e-6); 00139 m_paramPs2.clear(); m_paramPs2.push_back(3.686093e0);m_paramPs2.push_back(0.281e-3);m_paramPs2.push_back(2.12e-6); 00140 m_paramPs3.clear(); m_paramPs3.push_back(3.770e0);m_paramPs3.push_back(23.6e-3);m_paramPs3.push_back(0.26e-6); 00141 m_paramPs4.clear(); m_paramPs4.push_back(4.040e0);m_paramPs4.push_back(52e-3);m_paramPs4.push_back(0.75e-6); 00142 m_paramPs5.clear(); m_paramPs5.push_back(4.159e0);m_paramPs5.push_back(78e-3);m_paramPs5.push_back(0.77e-6); 00143 m_paramPs6.clear(); m_paramPs6.push_back(4.415e0);m_paramPs6.push_back(43e-3);m_paramPs6.push_back(0.47e-6); 00144 m_paramPs7.clear(); m_paramPs7.push_back(4.259e0);m_paramPs7.push_back(88e-3);m_paramPs7.push_back(0.00e-6); 00145 m_paramPs8.clear(); m_paramPs8.push_back(3.872e0);m_paramPs8.push_back(100e-3);m_paramPs8.push_back(0.00e-6); 00146 m_paramUps.clear(); m_paramUps.push_back(9.46030e0); m_paramUps.push_back(0.0525e-3); m_paramUps.push_back(1.32e-6); 00147 m_paramUp2.clear(); m_paramUp2.push_back(10.02326e0); m_paramUp2.push_back(0.044e-3); m_paramUp2.push_back(0.52e-6); 00148 m_paramUp3.clear(); m_paramUp3.push_back(10.3552e0); m_paramUp3.push_back(0.026e-3); m_paramUp3.push_back(0.00e-6); 00149 m_paramUp4.clear(); m_paramUp4.push_back(10.580e0); m_paramUp4.push_back(14e-3); m_paramUp4.push_back(0.248e-6); 00150 m_paramUp5.clear(); m_paramUp5.push_back(10.865e0); m_paramUp5.push_back(110e-3); m_paramUp5.push_back(0.31e-6); 00151 m_paramUp6.clear(); m_paramUp6.push_back(11.019); m_paramUp6.push_back(79e-3); m_paramUp6.push_back(0.13e-6); 00152 m_paramZeta.clear(); m_paramZeta.push_back(91.1876e0); m_paramZeta.push_back(2.4952e0); m_paramZeta.push_back(0.08391e0); 00153 m_paramW.clear(); m_paramW.push_back(80.43); m_paramW.push_back(2.11e0); 00154 00155 declareProperty("ResParameterRho", m_paramRho); 00156 declareProperty("ResParameterRh2", m_paramRh2); 00157 declareProperty("ResParameterRh3", m_paramRh3); 00158 declareProperty("ResParameterOme", m_paramOme); 00159 declareProperty("ResParameterOm2", m_paramOm2); 00160 declareProperty("ResParameterOm3", m_paramOm3); 00161 declareProperty("ResParameterPhi", m_paramPhi); 00162 declareProperty("ResParameterPh2", m_paramPh2); 00163 declareProperty("ResParameterPsi", m_paramPsi); 00164 declareProperty("ResParameterPs2", m_paramPs2); 00165 declareProperty("ResParameterPs3", m_paramPs3); 00166 declareProperty("ResParameterPs4", m_paramPs4); 00167 declareProperty("ResParameterPs5", m_paramPs5); 00168 declareProperty("ResParameterPs6", m_paramPs6); 00169 declareProperty("ResParameterPs7", m_paramPs7); 00170 declareProperty("ResParameterPs8", m_paramPs8); 00171 declareProperty("ResParameterUps", m_paramUps); 00172 declareProperty("ResParameterUp2", m_paramUp2); 00173 declareProperty("ResParameterUp3", m_paramUp3); 00174 declareProperty("ResParameterUp4", m_paramUp4); 00175 declareProperty("ResParameterUp5", m_paramUp5); 00176 declareProperty("ResParameterUp6", m_paramUp6); 00177 declareProperty("ResParameterZeta", m_paramZeta); 00178 declareProperty("ResParameterW", m_paramW); 00179 00180 // psi(3770) decay 00181 declareProperty("Psi3770toNonDDb", m_ps3toNonDDb = 0.0); 00182 declareProperty("Psi3770RatioOfD0toDp", m_ps3D0toDp = 0.563); 00183 // psi(4030) decay 00184 declareProperty("Psi4030toD0D0b", m_ps4toD0D0b = 0.0227); 00185 declareProperty("Psi4030toDpDm", m_ps4toDpDm = 0.0167); 00186 declareProperty("Psi4030toDsDs", m_ps4toDsDs = 0.0383); 00187 declareProperty("Psi4030toD0D0Star", m_ps4toD0D0Star = 0.2952); 00188 declareProperty("Psi4030toDpDmStar", m_ps4toDpDmStar = 0.2764); 00189 declareProperty("Psi4030toD0StarD0Star", m_ps4toD0StarD0Star=0.2476); 00190 declareProperty("Psi4030toDpStarDmStar", m_ps4toDpStarDmStar=0.1041); 00191 // psi(4160) decay 00192 declareProperty("Psi4160toD0D0b", m_ps5toD0D0b = 0.0190); 00193 declareProperty("Psi4160toDpDm", m_ps5toDpDm = 0.0180); 00194 declareProperty("Psi4160toDsDs", m_ps5toDsDs = 0.0488); 00195 declareProperty("Psi4160toD0D0Star", m_ps5toD0D0Star = 0.1248); 00196 declareProperty("Psi4160toDpDmStar", m_ps5toDpDmStar = 0.1240); 00197 declareProperty("Psi4160toDsDsStar", m_ps5toDsDsStar = 0.0820); 00198 declareProperty("Psi4160toD0StarD0Star", m_ps5toD0StarD0Star=0.3036); 00199 declareProperty("Psi4160toDpStarDmStar", m_ps5toDpStarDmStar=0.2838); 00200 // interface to EvtGen 00201 declareProperty("ParticleDecayThroughEvtGen", m_evtGenDecay = true); 00202 declareProperty("RadiationCorrection", m_radiationCorrection = true); 00203 00204 }
|
|
|
|
|
|
00402 { 00403 00404 MsgStream log(msgSvc(), name()); 00405 00406 log << MSG::INFO << "KKMC in execute()" << endreq; 00407 00408 00409 HepMC::IO_HEPEVT HepEvtIO; 00410 00411 00412 int KeySkip,iflag; 00413 do { 00414 HEPEVT_CLEAN(); 00415 KK2F_MAKE(); 00416 KK2F_GETKEYSKIP(KeySkip); 00417 PSIPP_DDBARCUT(iflag); 00418 } while (KeySkip != 0 || iflag ==0); 00419 00420 int KeyInter; 00421 KK2F_GETEVTGENINTERFACE(KeyInter); 00422 00423 // PSIPP_DDBARCUT(iflag); 00424 // if(iflag == 0) {return StatusCode::SUCCESS;} 00425 00426 if(KeyInter == 0) { // make photos correction 00427 int Pos1, Pos2, KFfin, Nhep; 00428 HEPEVT_NUMHEP(Nhep); 00429 HEPEVT_GETF(Pos1); 00430 HEPEVT_GETFBAR(Pos2); 00431 HEPEVT_GETKFFIN(KFfin); 00432 int Posn = Pos1; 00433 if(Pos2 > Posn) Posn = Pos2; 00434 Posn = Posn + 1; 00435 if(KFfin < 10) Posn = Posn + 1; 00436 for(int ip = Posn; ip <= Nhep; ip++) HEPEVT_SETPHOTOSFLAGTRUE(ip); 00437 for(int ip = Posn; ip <= Nhep; ip++) PHOTOS(ip); 00438 PYHEPC(2); 00439 } 00440 00441 //sleep(5); 00442 00443 m_numberEvent += 1; 00444 00445 if(m_numberEvent <= m_numberEventPrint) PYLIST(1); 00446 log << MSG::INFO <<" " <<m_numberEvent<<"th event was generated !!" <<endreq; 00447 00448 PYHEPC(1); 00449 00450 HepMC::GenEvent* evt = HepEvtIO.read_next_event(); 00451 evt->set_event_number(m_numberEvent); 00452 evt->set_signal_process_id(1); 00453 // evt->print(); 00454 00455 // Check if the McCollection already exists 00456 SmartDataPtr<McGenEventCol> anMcCol(eventSvc(), "/Event/Gen"); 00457 if (anMcCol!=0) { 00458 // Add event to existing collection 00459 MsgStream log(messageService(), name()); 00460 log << MSG::INFO << "Add McGenEvent to existing collection" << endreq; 00461 McGenEvent* mcEvent = new McGenEvent(evt); 00462 anMcCol->push_back(mcEvent); 00463 } else { 00464 // Create Collection and add to the transient store 00465 McGenEventCol *mcColl = new McGenEventCol; 00466 McGenEvent* mcEvent = new McGenEvent(evt); 00467 mcColl->push_back(mcEvent); 00468 StatusCode sc = eventSvc()->registerObject("/Event/Gen",mcColl); 00469 if (sc != StatusCode::SUCCESS) { 00470 log << MSG::ERROR << "Could not register McGenEvent" << endreq; 00471 delete mcColl; 00472 delete evt; 00473 delete mcEvent; 00474 return StatusCode::FAILURE; 00475 } else { 00476 // log << MSG::INFO << "McGenEventCol created and " << npart <<" particles stored in McGenEvent" << endreq; 00477 } 00478 } 00479 00480 00481 00482 00483 return StatusCode::SUCCESS; 00484 00485 }
|
|
|
|
00487 { 00488 00489 MsgStream log(msgSvc(), name()); 00490 00491 log << MSG::INFO << "KKMC in finalize()" << endreq; 00492 00493 KK2F_FINALIZE(); 00494 double xSecPb, xErrPb; 00495 KK2F_GETXSECMC(xSecPb, xErrPb); 00496 00497 log << MSG::INFO << "Total MC Xsec = " << xSecPb << " +/- " << xErrPb << endreq; 00498 return StatusCode::SUCCESS; 00499 }
|
|
|
|
00206 { 00207 00208 double xwpar[10000]; 00209 MsgStream log(msgSvc(), name()); 00210 00211 log << MSG::INFO << "KKMC in initialize()" << endreq; 00212 00213 //set Bes unified random engine 00214 static const bool CREATEIFNOTTHERE(true); 00215 StatusCode RndmStatus = service("BesRndmGenSvc", p_BesRndmGenSvc, CREATEIFNOTTHERE); 00216 if (!RndmStatus.isSuccess() || 0 == p_BesRndmGenSvc) 00217 { 00218 log << MSG::ERROR << " Could not initialize Random Number Service" << endreq; 00219 return RndmStatus; 00220 } 00221 HepRandomEngine* engine = p_BesRndmGenSvc->GetEngine("KKMC"); 00222 KKMCRandom::setRandomEngine(engine); 00223 00224 00225 WHYM_SETDEF(xwpar); 00226 xwpar[0] = m_cmsEnergy; // c.m.s energy 00227 xwpar[1] = m_cmsEnergySpread; // energy spread of c.m.s. 00228 xwpar[3] = 6.0; // fortran output unit 00229 00230 if(m_generateResonance) // flag indicate to generate Resonance data 00231 xwpar[12] = 1.0; 00232 else 00233 xwpar[12] = 0.0; 00234 00235 if(m_generateContinuum ) // generate continuum 00236 xwpar[3000] = 1.0; 00237 else 00238 xwpar[3000] = 0.0; 00239 00240 if(m_generateDownQuark) // d quark production 00241 xwpar[400] = 1.0; 00242 else 00243 xwpar[400] = 0.0; 00244 00245 if(m_generateUpQuark) // u quark production 00246 xwpar[401] = 1.0; 00247 else 00248 xwpar[401] = 0.0; 00249 00250 if(m_generateStrangeQuark) // s quark production 00251 xwpar[402] = 1.0; 00252 else 00253 xwpar[402] = 0.0; 00254 00255 if(m_generateCharmQuark) // c quark production 00256 xwpar[403] = 1.0; 00257 else 00258 xwpar[403] = 0.0; 00259 00260 if(m_generateBottomQuark) // b quark production 00261 xwpar[404] = 1.0; 00262 else 00263 xwpar[404] = 0.0; 00264 00265 00266 if(m_generateMuonPair) // e+ e- --> mu+ mu- 00267 xwpar[412] = 1.0; 00268 else 00269 xwpar[412] = 0.0; 00270 00271 if(m_generateTauPair) // e+ e- --> tau+ tau- 00272 xwpar[414] = 1.0; 00273 else 00274 xwpar[414] = 0.0; 00275 int keyuds = 0; 00276 if(m_generateRho) keyuds |= 1; 00277 if(m_generateOmega) keyuds |= 2; 00278 if(m_generatePhi) keyuds |= 4; 00279 00280 int keycharm = 0; 00281 if(m_generateJPsi) keycharm |= 1; 00282 if(m_generatePsiPrime) keycharm |= 2; 00283 if(m_generatePsi3770) keycharm |= 4; 00284 if(m_generatePsi4030) keycharm |= 8; 00285 if(m_generatePsi4160) keycharm |= 16; 00286 if(m_generatePsi4415) keycharm |= 32; 00287 if(m_generatePsi4260) keycharm |= 64; 00288 00289 // resonant parameters 00290 int offset = 3100; 00291 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRho[i]; 00292 offset = offset + 3; 00293 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRh2[i]; 00294 offset = offset + 3; 00295 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramRh3[i]; 00296 offset = offset + 3; 00297 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOme[i]; 00298 offset = offset + 3; 00299 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOm2[i]; 00300 offset = offset + 3; 00301 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramOm3[i]; 00302 offset = offset + 3; 00303 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPhi[i]; 00304 offset = offset + 3; 00305 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPh2[i]; 00306 offset = offset + 3; 00307 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPsi[i]; 00308 offset = offset + 3; 00309 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs2[i]; 00310 offset = offset + 3; 00311 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs3[i]; 00312 offset = offset + 3; 00313 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs4[i]; 00314 offset = offset + 3; 00315 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs5[i]; 00316 offset = offset + 3; 00317 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs6[i]; 00318 offset = offset + 3; 00319 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs7[i]; 00320 offset = offset + 3; 00321 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramPs8[i]; 00322 offset = offset + 3; 00323 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUps[i]; 00324 offset = offset + 3; 00325 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp2[i]; 00326 offset = offset + 3; 00327 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp3[i]; 00328 offset = offset + 3; 00329 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp4[i]; 00330 offset = offset + 3; 00331 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp5[i]; 00332 offset = offset + 3; 00333 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramUp6[i]; 00334 offset = offset + 3; 00335 for(int i = 0; i < 3; i++) xwpar[offset+i] = m_paramZeta[i]; 00336 offset = offset + 3; 00337 for(int i = 0; i < 2; i++) xwpar[offset+i] = m_paramW[i]; 00338 // offset = offset + 2; 00339 00340 xwpar[3001] = keyuds + 0.0; 00341 xwpar[3002] = keycharm + 0.0; 00342 00343 // psi(3770) decay 00344 offset = 3200; 00345 xwpar[offset + 0] = m_ps3toNonDDb; 00346 xwpar[offset + 1] = m_ps3D0toDp; 00347 DDBARMASS.ddbarmassCUT= m_DdbarCutPsi3770; 00348 //tag ISR or FSR photon 00349 if(m_isrtag){PHOTONTAG.isrtag=1;} else {PHOTONTAG.isrtag=0;} 00350 if(m_fsrtag){PHOTONTAG.fsrtag=1;} else {PHOTONTAG.fsrtag=0;} 00351 00352 // psi(4030) decay 00353 offset = 3210; 00354 xwpar[offset + 0] = m_ps4toD0D0b; 00355 xwpar[offset + 1] = m_ps4toDpDm; 00356 xwpar[offset + 2] = m_ps4toDsDs; 00357 xwpar[offset + 3] = m_ps4toD0D0Star; 00358 xwpar[offset + 4] = m_ps4toDpDmStar; 00359 xwpar[offset + 5] = m_ps4toD0StarD0Star; 00360 xwpar[offset + 6] = m_ps4toDpStarDmStar; 00361 // psi(4160) decay 00362 offset = 3220; 00363 xwpar[offset + 0] = m_ps5toD0D0b; 00364 xwpar[offset + 1] = m_ps5toDpDm; 00365 xwpar[offset + 2] = m_ps5toDsDs; 00366 xwpar[offset + 3] = m_ps5toD0D0Star; 00367 xwpar[offset + 4] = m_ps5toDpDmStar; 00368 xwpar[offset + 5] = m_ps5toDsDsStar; 00369 xwpar[offset + 6] = m_ps5toD0StarD0Star; 00370 xwpar[offset + 7] = m_ps5toDpStarDmStar; 00371 00372 if(!m_radiationCorrection) { 00373 xwpar[19] = 0; 00374 xwpar[20] = 0; 00375 xwpar[26] = 0; 00376 } 00377 00378 00379 KK2F_INITIALIZE(xwpar); 00380 MY_PYUPD(); 00381 00382 PYUPDA(1, 22); 00383 if(m_evtGenDecay) { 00384 KK2F_SETEVTGENINTERFACE(1); 00385 TURNOFFTAUDECAY(); 00386 } else { 00387 KK2F_SETEVTGENINTERFACE(0); 00388 PHOINI(); 00389 } 00390 00391 HepMC::HEPEVT_Wrapper::set_sizeof_real(8); 00392 HepMC::HEPEVT_Wrapper::set_sizeof_int(4); 00393 HepMC::HEPEVT_Wrapper::set_max_number_entries(4000); 00394 // std::cout << "max entries = " << HepMC::HEPEVT_Wrapper::max_number_entries() <<std::endl; 00395 // std::cout << "size of real = " << HepMC::HEPEVT_Wrapper::sizeof_real() <<std::endl; 00396 00397 00398 log <<MSG::INFO<< "Finish KKMC initialize()" <<endreq; 00399 return StatusCode::SUCCESS; 00400 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|