KKMC Class Reference

#include <KKMC.h>

List of all members.

Public Member Functions

 KKMC (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Private Attributes

IBesRndmGenSvcp_BesRndmGenSvc
IMeasuredEcmsSvcecmsSvc
int m_numberEvent
int m_numberEventPrint
int m_ihvp
std::vector< int > m_kkseed
double m_cmsEnergy
double m_cmsEnergySpread
bool m_generateResonance
bool m_generateContinuum
bool m_generateDownQuark
bool m_generateUpQuark
bool m_generateStrangeQuark
bool m_generateCharmQuark
bool m_generateBottomQuark
bool m_generateMuonPair
bool m_generateTauPair
bool m_generateRho
bool m_generateOmega
bool m_generatePhi
bool m_generateJPsi
bool m_generatePsiPrime
bool m_generatePsi3770
double m_DdbarCutPsi3770
bool m_generatePsi4030
bool m_generatePsi4160
bool m_generatePsi4415
bool m_generatePsi4260
bool m_isrtag
bool m_fsrtag
bool m_RdMeasuredEcms
int m_ich
std::vector< double > m_paramRho
std::vector< double > m_paramRh2
std::vector< double > m_paramRh3
std::vector< double > m_paramOme
std::vector< double > m_paramOm2
std::vector< double > m_paramOm3
std::vector< double > m_paramPhi
std::vector< double > m_paramPh2
std::vector< double > m_paramPsi
std::vector< double > m_paramPs2
std::vector< double > m_paramPs3
std::vector< double > m_paramPs4
std::vector< double > m_paramPs5
std::vector< double > m_paramPs6
std::vector< double > m_paramPs7
std::vector< double > m_paramPs8
std::vector< double > m_paramUps
std::vector< double > m_paramUp2
std::vector< double > m_paramUp3
std::vector< double > m_paramUp4
std::vector< double > m_paramUp5
std::vector< double > m_paramUp6
std::vector< double > m_paramZeta
std::vector< double > m_paramW
std::vector< std::stringm_pypars
double m_ps3toNonDDb
double m_ps3D0toDp
double m_ps4toD0D0b
double m_ps4toDpDm
double m_ps4toDsDs
double m_ps4toD0D0Star
double m_ps4toDpDmStar
double m_ps4toD0StarD0Star
double m_ps4toDpStarDmStar
double m_ps5toD0D0b
double m_ps5toDpDm
double m_ps5toDsDs
double m_ps5toD0D0Star
double m_ps5toDpDmStar
double m_ps5toDsDsStar
double m_ps5toD0StarD0Star
double m_ps5toDpStarDmStar
bool m_evtGenDecay
bool m_radiationCorrection
double xwpar [10000]

Static Private Attributes

static int m_runNo = 0


Detailed Description

Definition at line 19 of file KKMC.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

IMeasuredEcmsSvc* KKMC::ecmsSvc [private]

Definition at line 30 of file KKMC.h.

Referenced by execute(), and initialize().

double KKMC::m_cmsEnergy [private]

Definition at line 36 of file KKMC.h.

Referenced by execute(), initialize(), and KKMC().

double KKMC::m_cmsEnergySpread [private]

Definition at line 37 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_DdbarCutPsi3770 [private]

Definition at line 53 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_evtGenDecay [private]

Definition at line 110 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_fsrtag [private]

Definition at line 59 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateBottomQuark [private]

Definition at line 44 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateCharmQuark [private]

Definition at line 43 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateContinuum [private]

Definition at line 39 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateDownQuark [private]

Definition at line 40 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateJPsi [private]

Definition at line 50 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateMuonPair [private]

Definition at line 45 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateOmega [private]

Definition at line 48 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePhi [private]

Definition at line 49 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsi3770 [private]

Definition at line 52 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsi4030 [private]

Definition at line 54 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsi4160 [private]

Definition at line 55 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsi4260 [private]

Definition at line 57 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsi4415 [private]

Definition at line 56 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generatePsiPrime [private]

Definition at line 51 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateResonance [private]

Definition at line 38 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateRho [private]

Definition at line 47 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateStrangeQuark [private]

Definition at line 42 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateTauPair [private]

Definition at line 46 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_generateUpQuark [private]

Definition at line 41 of file KKMC.h.

Referenced by initialize(), and KKMC().

int KKMC::m_ich [private]

Definition at line 62 of file KKMC.h.

Referenced by initialize(), and KKMC().

int KKMC::m_ihvp [private]

Definition at line 33 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_isrtag [private]

Definition at line 58 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<int> KKMC::m_kkseed [private]

Definition at line 35 of file KKMC.h.

Referenced by KKMC().

int KKMC::m_numberEvent [private]

Definition at line 31 of file KKMC.h.

Referenced by execute(), and KKMC().

int KKMC::m_numberEventPrint [private]

Definition at line 32 of file KKMC.h.

Referenced by execute(), and KKMC().

std::vector<double> KKMC::m_paramOm2 [private]

Definition at line 68 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramOm3 [private]

Definition at line 69 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramOme [private]

Definition at line 67 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPh2 [private]

Definition at line 71 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPhi [private]

Definition at line 70 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs2 [private]

Definition at line 73 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs3 [private]

Definition at line 74 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs4 [private]

Definition at line 75 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs5 [private]

Definition at line 76 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs6 [private]

Definition at line 77 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs7 [private]

Definition at line 78 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPs8 [private]

Definition at line 79 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramPsi [private]

Definition at line 72 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramRh2 [private]

Definition at line 65 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramRh3 [private]

Definition at line 66 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramRho [private]

Definition at line 64 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUp2 [private]

Definition at line 81 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUp3 [private]

Definition at line 82 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUp4 [private]

Definition at line 83 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUp5 [private]

Definition at line 84 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUp6 [private]

Definition at line 85 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramUps [private]

Definition at line 80 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramW [private]

Definition at line 87 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<double> KKMC::m_paramZeta [private]

Definition at line 86 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps3D0toDp [private]

Definition at line 91 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps3toNonDDb [private]

Definition at line 90 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toD0D0b [private]

Definition at line 93 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toD0D0Star [private]

Definition at line 96 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toD0StarD0Star [private]

Definition at line 98 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toDpDm [private]

Definition at line 94 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toDpDmStar [private]

Definition at line 97 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toDpStarDmStar [private]

Definition at line 99 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps4toDsDs [private]

Definition at line 95 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toD0D0b [private]

Definition at line 101 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toD0D0Star [private]

Definition at line 104 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toD0StarD0Star [private]

Definition at line 107 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toDpDm [private]

Definition at line 102 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toDpDmStar [private]

Definition at line 105 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toDpStarDmStar [private]

Definition at line 108 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toDsDs [private]

Definition at line 103 of file KKMC.h.

Referenced by initialize(), and KKMC().

double KKMC::m_ps5toDsDsStar [private]

Definition at line 106 of file KKMC.h.

Referenced by initialize(), and KKMC().

std::vector<std::string> KKMC::m_pypars [private]

Definition at line 88 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_radiationCorrection [private]

Definition at line 111 of file KKMC.h.

Referenced by initialize(), and KKMC().

bool KKMC::m_RdMeasuredEcms [private]

Definition at line 61 of file KKMC.h.

Referenced by execute(), initialize(), and KKMC().

int KKMC::m_runNo = 0 [static, private]

Definition at line 113 of file KKMC.h.

Referenced by execute().

IBesRndmGenSvc* KKMC::p_BesRndmGenSvc [private]

Definition at line 29 of file KKMC.h.

Referenced by initialize().

double KKMC::xwpar[10000] [private]

Definition at line 114 of file KKMC.h.

Referenced by execute(), and initialize().


Generated on Tue Nov 29 23:19:57 2016 for BOSS_7.0.2 by  doxygen 1.4.7