CMS 3D CMS Logo

edm::ToprexSource Class Reference

#include <GeneratorInterface/TopRexInterface/interface/ToprexSource.h>

Inheritance diagram for edm::ToprexSource:

edm::GeneratedInputSource edm::ConfigurableInputSource edm::InputSource edm::ProductRegistryHelper

List of all members.

Public Member Functions

 ToprexSource (const ParameterSet &, const InputSourceDescription &)
 Constructor.
virtual ~ToprexSource ()
 Destructor.

Private Member Functions

bool call_pygive (const std::string &iParm)
 Interface to the PYGIVE/TXGIVE pythia routine, with add'l protections.
bool call_txgive (const std::string &iParm)
bool call_txgive_init ()
void clear ()
virtual bool produce (Event &e)

Private Attributes

HepMC::GenEvent * evt
CLHEP::HepRandomEngine * fRandomEngine
CLHEP::RandFlat * fRandomGenerator
unsigned int maxEventsToPrint_
 Events to print if verbosity.
bool pythiaHepMCVerbosity_
 HepMC verbosity flag.
unsigned int pythiaPylistVerbosity_
 Pythia PYLIST Verbosity flag.


Detailed Description

Definition at line 34 of file ToprexSource.h.


Constructor & Destructor Documentation

ToprexSource::ToprexSource ( const ParameterSet pset,
const InputSourceDescription desc 
)

Constructor.

Definition at line 49 of file ToprexSource.cc.

References call_pygive(), call_toprex(), call_txgive(), call_txgive_init(), edm::errors::Configuration, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), fRandomEngine, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, maxEventsToPrint_, pars, pythiaHepMCVerbosity_, pythiaPylistVerbosity_, and randomEngine.

00050                                                                  :
00051   GeneratedInputSource(pset, desc), evt(0), 
00052   pythiaPylistVerbosity_ (pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0)),
00053   pythiaHepMCVerbosity_ (pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false)),
00054   maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",1))
00055   
00056 {
00057   
00058   cout << "ToprexSource: initializing TopReX " << endl;
00059   
00060  
00061   
00062   // PYLIST Verbosity Level
00063   // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
00064   pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0);
00065   cout << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_ << endl;
00066   
00067   // HepMC event verbosity Level
00068   pythiaHepMCVerbosity_ = pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false);
00069   cout << "Pythia HepMC verbosity = " << pythiaHepMCVerbosity_ << endl; 
00070 
00071   //Max number of events printed on verbosity level 
00072   maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0);
00073   cout << "Number of events to be printed = " << maxEventsToPrint_ << endl;
00074 
00076   // Set PYTHIA parameters in a single ParameterSet
00077   {
00078   ParameterSet pythia_params = 
00079     pset.getParameter<ParameterSet>("PythiaParameters") ;
00080   
00081   // The parameter sets to be read (default, min bias, user ...) in the
00082   // proper order.
00083   vector<string> setNames = 
00084     pythia_params.getParameter<vector<string> >("parameterSets");
00085   
00086   // Loop over the sets
00087   for ( unsigned i=0; i<setNames.size(); ++i ) {
00088     
00089     string mySet = setNames[i];
00090     
00091     // Read the PYTHIA parameters for each set of parameters
00092     vector<string> pars = 
00093       pythia_params.getParameter<vector<string> >(mySet);
00094     
00095     if (mySet != "CSAParameters"){
00096     cout << "----------------------------------------------" << endl;
00097     cout << "Read PYTHIA parameter set " << mySet << endl;
00098     cout << "----------------------------------------------" << endl;
00099     
00100     // Loop over all parameters and stop in case of mistake
00101     for( vector<string>::const_iterator  
00102            itPar = pars.begin(); itPar != pars.end(); ++itPar ) {
00103       static string sRandomValueSetting("MRPY(1)");
00104       if( 0 == itPar->compare(0,sRandomValueSetting.size(),sRandomValueSetting) ) {
00105         throw edm::Exception(edm::errors::Configuration,"PythiaError")
00106           <<" attempted to set random number using pythia command 'MRPY(1)' this is not allowed.\n  Please use the RandomNumberGeneratorService to set the random number seed.";
00107       }
00108       if( ! call_pygive(*itPar) ) {
00109         throw edm::Exception(edm::errors::Configuration,"PythiaError") 
00110           <<" pythia did not accept the following \""<<*itPar<<"\"";
00111       }
00112     }
00113     }else if(mySet == "CSAParameters"){   
00114 
00115    // Read CSA parameter
00116   
00117    pars = pythia_params.getParameter<vector<string> >("CSAParameters");
00118 
00119    cout << "----------------------------------------------" << endl; 
00120    cout << "Reading CSA parameter settings. " << endl;
00121    cout << "----------------------------------------------" << endl;                                                                           
00122 
00123     call_txgive_init();
00124   
00125   
00126    // Loop over all parameters and stop in case of a mistake
00127     for (vector<string>::const_iterator 
00128             itPar = pars.begin(); itPar != pars.end(); ++itPar) {
00129       call_txgive(*itPar); 
00130      
00131          } 
00132   
00133   }
00134   }
00135 
00136 }
00137 
00138 
00139 // Read the TopReX parameters
00140 
00141 
00142   //In the future, we will get the random number seed on each event and tell 
00143   // pythia to use that new seed
00144     cout << "----------------------------------------------" << endl;
00145     cout << "Setting Pythia random number seed " << endl;
00146     cout << "----------------------------------------------" << endl;
00147   edm::Service<RandomNumberGenerator> rng;
00148   randomEngine = fRandomEngine = &(rng->getEngine());
00149   uint32_t seed = rng->mySeed();
00150   ostringstream sRandomSet;
00151   sRandomSet <<"MRPY(1)="<<seed;
00152   call_pygive(sRandomSet.str());
00153 
00154  // srs insertion
00155   //  cout << "TopReX start called OK" << endl;
00156   call_toprex( "USER", "p", "p", 14000. );
00157   // cout << "TopReX was called OK" << endl;
00158   call_pyinit( "USER", "p", "p", 14000. );
00159   //
00160   //     call_pretauola(-1);     // TAUOLA initialization
00161   cout << endl; // Stetically add for the output
00162 
00163   produces<HepMCProduct>();
00164   cout << "ToprexSource: starting event generation ... " << endl;
00165 }

ToprexSource::~ToprexSource (  )  [virtual]

Destructor.

Definition at line 168 of file ToprexSource.cc.

References clear(), GenMuonPlsPt100GeV_cfg::cout, and lat::endl().

00168                            {
00169   cout << "ToprexSource: event generation done. " << endl;
00170   call_pystat(1);
00171   //    call_pretauola(1);  // output from TAUOLA 
00172   clear(); 
00173 }


Member Function Documentation

bool ToprexSource::call_pygive ( const std::string &  iParm  )  [private]

Interface to the PYGIVE/TXGIVE pythia routine, with add'l protections.

Definition at line 230 of file ToprexSource.cc.

References pydat1, and PYGIVE.

Referenced by ToprexSource().

00231 {
00232    int numWarn = pydat1.mstu[26]; //# warnings
00233    int numErr = pydat1.mstu[22];// # errors
00234 //call the fortran routine pygive with a fortran string
00235   PYGIVE( iParm.c_str(), iParm.length() );  
00236 //if an error or warning happens it is problem
00237    return pydat1.mstu[26] == numWarn && pydat1.mstu[22] == numErr;   
00238 }

bool ToprexSource::call_txgive ( const std::string &  iParm  )  [private]

Definition at line 242 of file ToprexSource.cc.

References TXGIVE.

Referenced by ToprexSource().

00243    {
00244    TXGIVE( iParm.c_str(), iParm.length() );  
00245         return 1;  
00246    }

bool ToprexSource::call_txgive_init (  )  [private]

Definition at line 249 of file ToprexSource.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), and TXGIVE_INIT.

Referenced by ToprexSource().

00250 {
00251    TXGIVE_INIT();
00252    cout << "  Setting CSA defaults.   "   << endl;
00253    return 1;
00254 }

void ToprexSource::clear ( void   )  [private]

Definition at line 175 of file ToprexSource.cc.

Referenced by ~ToprexSource().

00175 { }

bool ToprexSource::produce ( Event e  )  [private, virtual]

Implements edm::ConfigurableInputSource.

Definition at line 178 of file ToprexSource.cc.

References call_findjets(), call_pylist(), conv, GenMuonPlsPt100GeV_cfg::cout, lat::endl(), edm::ConfigurableInputSource::event(), evt, maxEventsToPrint_, edm::ConfigurableInputSource::numberEventsInRun(), edm::Event::put(), pypars, pythiaHepMCVerbosity_, pythiaPylistVerbosity_, and edm::InputSource::remainingEvents().

00178                                     {
00179 
00180     auto_ptr<HepMCProduct> bare_product(new HepMCProduct());  
00181      //
00182 
00183     call_pyevnt();      // generate one event with Pythia
00184 
00185     //        call_pretauola(0);       // tau-lepton decays with TAUOLA 
00186 
00187     call_findjets();      // find jets 
00188     call_pyhepc( 1 );
00189     
00190     HepMC::GenEvent* evt = conv.read_next_event();
00191     evt->set_signal_process_id(pypars.msti[0]);
00192     evt->set_event_scale(pypars.pari[16]);
00193     evt->set_event_number(numberEventsInRun() - remainingEvents() - 1);
00194 
00195     //    Nest (*evt);
00196 
00197 
00198 
00199 
00200     //******** Verbosity ********
00201     
00202     if(event() <= maxEventsToPrint_ &&
00203        (pythiaPylistVerbosity_ || pythiaHepMCVerbosity_)) {
00204 
00205       // Prints PYLIST info
00206       if(pythiaPylistVerbosity_) {
00207         call_pylist(pythiaPylistVerbosity_);
00208       }
00209       
00210       // Prints HepMC event
00211       if(pythiaHepMCVerbosity_) {
00212         cout << "Event process = " << pypars.msti[0] << endl 
00213         << "----------------------" << endl;
00214         //      evt->print();
00215       }
00216     }
00217     
00218     
00219     //evt = reader_->fillCurrentEventData(); 
00220     //********                                      
00221 
00222     if(evt)  bare_product->addHepMCData(evt );
00223 
00224     e.put(bare_product);
00225 
00226     return true;
00227 }


Member Data Documentation

HepMC::GenEvent* edm::ToprexSource::evt [private]

Definition at line 56 of file ToprexSource.h.

Referenced by produce().

CLHEP::HepRandomEngine* edm::ToprexSource::fRandomEngine [private]

Definition at line 75 of file ToprexSource.h.

Referenced by ToprexSource().

CLHEP::RandFlat* edm::ToprexSource::fRandomGenerator [private]

Definition at line 76 of file ToprexSource.h.

unsigned int edm::ToprexSource::maxEventsToPrint_ [private]

Events to print if verbosity.

Definition at line 65 of file ToprexSource.h.

Referenced by produce(), and ToprexSource().

bool edm::ToprexSource::pythiaHepMCVerbosity_ [private]

HepMC verbosity flag.

Definition at line 63 of file ToprexSource.h.

Referenced by produce(), and ToprexSource().

unsigned int edm::ToprexSource::pythiaPylistVerbosity_ [private]

Pythia PYLIST Verbosity flag.

Definition at line 61 of file ToprexSource.h.

Referenced by produce(), and ToprexSource().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:44:25 2009 for CMSSW by  doxygen 1.5.4