CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::ExhumeProducer Class Reference

#include <ExhumeProducer.h>

Inheritance diagram for edm::ExhumeProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

void endRun (Run &r)
 
 ExhumeProducer (const ParameterSet &)
 Constructor. More...
 
virtual ~ExhumeProducer ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

void clear ()
 
virtual void produce (edm::Event &e, const EventSetup &es)
 Interface to the PYGIVE pythia routine, with add'l protections. More...
 

Private Attributes

double comEnergy_
 
unsigned int eventNumber_
 
HepMC::GenEvent * evt
 
Exhume::EventexhumeEvent_
 
Exhume::CrossSectionexhumeProcess_
 
double extCrossSect_
 
double extFilterEff_
 
CLHEP::HepRandomEngine * fRandomEngine
 
CLHEP::RandFlat * fRandomGenerator
 
unsigned int maxEventsToPrint_
 Events to print if verbosity. More...
 
bool pythiaHepMCVerbosity_
 HepMC verbosity flag. More...
 
unsigned int pythiaPylistVerbosity_
 Pythia PYLIST Verbosity flag. More...
 
int sigID_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 28 of file ExhumeProducer.h.

Constructor & Destructor Documentation

ExhumeProducer::ExhumeProducer ( const ParameterSet pset)

Constructor.

Definition at line 73 of file ExhumeProducer.cc.

References edm::errors::Configuration, edm::hlt::Exception, exhumeEvent_, exhumeProcess_, fRandomEngine, fRandomGenerator, edm::RandomNumberGenerator::getEngine(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), maxEventsToPrint_, pythiaHepMCVerbosity_, pythiaPylistVerbosity_, randomEngine, Exhume::Event::SetMassRange(), Exhume::Event::SetParameterSpace(), and sigID_.

73  :
74  EDProducer(),
75  evt(0),
76  pythiaPylistVerbosity_ (pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0)),
77  pythiaHepMCVerbosity_ (pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false)),
78  maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",1)),
79  comEnergy_(pset.getParameter<double>("comEnergy")),
80  extCrossSect_(pset.getUntrackedParameter<double>("crossSection", -1.)),
81  extFilterEff_(pset.getUntrackedParameter<double>("filterEfficiency", -1.)),
82  eventNumber_(0)
83 {
84  std::ostringstream header_str;
85 
86  header_str << "ExhumeProducer: initializing Exhume/Pythia.\n";
87 
88  // PYLIST Verbosity Level
89  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
90  pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0);
91  header_str << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_ << "\n";
92 
93  // HepMC event verbosity Level
94  pythiaHepMCVerbosity_ = pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false);
95  header_str << "Pythia HepMC verbosity = " << pythiaHepMCVerbosity_ << "\n";
96 
97  //Max number of events printed on verbosity level
98  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0);
99  header_str << "Number of events to be printed = " << maxEventsToPrint_ << "\n";
100 
101  //Exhume Initialization
102  ParameterSet process_pset = pset.getParameter<ParameterSet>("ExhumeProcess") ;
103  string processType = process_pset.getParameter<string>("ProcessType");
104  if(processType == "Higgs"){
105  exhumeProcess_ = new Exhume::Higgs(pset);
106  int higgsDecay = process_pset.getParameter<int>("HiggsDecay");
107  ((Exhume::Higgs*)exhumeProcess_)->SetHiggsDecay(higgsDecay);
108  sigID_ = 100 + higgsDecay;
109  } else if(processType == "QQ"){
110  exhumeProcess_ = new Exhume::QQ(pset);
111  int quarkType = process_pset.getParameter<int>("QuarkType");
112  double thetaMin = process_pset.getParameter<double>("ThetaMin");
113  ((Exhume::QQ*)exhumeProcess_)->SetQuarkType(quarkType);
114  ((Exhume::QQ*)exhumeProcess_)->SetThetaMin(thetaMin);
115  sigID_ = 200 + quarkType;
116  } else if(processType == "GG"){
117  exhumeProcess_ = new Exhume::GG(pset);
118  double thetaMin = process_pset.getParameter<double>("ThetaMin");
119  ((Exhume::GG*)exhumeProcess_)->SetThetaMin(thetaMin);
120  sigID_ = 300;
121  } else{
122  sigID_ = -1;
123  throw edm::Exception(edm::errors::Configuration,"ExhumeError") <<" No valid Exhume Process";
124  }
125 
127  //uint32_t seed = rng->mySeed();
128  fRandomEngine = &(rng->getEngine());
130  fRandomGenerator = new CLHEP::RandFlat(fRandomEngine) ;
131  //exhumeEvent_ = new Exhume::Event(*exhumeProcess_,seed);
133 
134  double massRangeLow = process_pset.getParameter<double>("MassRangeLow");
135  double massRangeHigh = process_pset.getParameter<double>("MassRangeHigh");
136  exhumeEvent_->SetMassRange(massRangeLow,massRangeHigh);
138 
139  header_str << "\n"; // Stetically add for the output
140  //********
141 
142  produces<HepMCProduct>();
143  produces<GenEventInfoProduct>();
144  produces<GenRunInfoProduct, edm::InRun>();
145 
146  header_str << "ExhumeProducer: starting event generation ...\n";
147 
148  edm::LogInfo("") << header_str.str();
149 }
HepMC::GenEvent * evt
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool pythiaHepMCVerbosity_
HepMC verbosity flag.
CLHEP::HepRandomEngine * randomEngine
Definition: PYR.cc:4
unsigned int pythiaPylistVerbosity_
Pythia PYLIST Verbosity flag.
Exhume::CrossSection * exhumeProcess_
CLHEP::HepRandomEngine * fRandomEngine
Definition: QQ.h:11
CLHEP::RandFlat * fRandomGenerator
Exhume::Event * exhumeEvent_
void SetMassRange(const double &Min_, const double &Max_)
Definition: Event.h:48
virtual CLHEP::HepRandomEngine & getEngine() const =0
Use this to get the random number engine, this is the only function most users should call...
void SetParameterSpace()
Definition: GG.h:11
unsigned int eventNumber_
unsigned int maxEventsToPrint_
Events to print if verbosity.
ExhumeProducer::~ExhumeProducer ( )
virtual

Destructor.

Definition at line 152 of file ExhumeProducer.cc.

References clear().

152  {
153  std::ostringstream footer_str;
154  footer_str << "ExhumeProducer: event generation done.\n";
155 
156  edm::LogInfo("") << footer_str.str();
157 
158  clear();
159 }

Member Function Documentation

void ExhumeProducer::clear ( void  )
private

Definition at line 161 of file ExhumeProducer.cc.

References exhumeEvent_, and exhumeProcess_.

Referenced by ~ExhumeProducer().

161  {
162  delete exhumeEvent_;
163  delete exhumeProcess_;
164 }
Exhume::CrossSection * exhumeProcess_
Exhume::Event * exhumeEvent_
void ExhumeProducer::endRun ( Run r)

Definition at line 166 of file ExhumeProducer.cc.

References Exhume::Event::CrossSectionCalculation(), fwrapper::cs, interpolateCardsSimple::eff, exhumeEvent_, exhumeProcess_, extCrossSect_, extFilterEff_, Exhume::Event::GetEfficiency(), Exhume::CrossSection::GetName(), mergeVDriftHistosByStation::name, and edm::Run::put().

166  {
167  std::ostringstream footer_str;
168 
170  double eff = exhumeEvent_->GetEfficiency();
171  string name = exhumeProcess_->GetName();
172 
173  footer_str << "\n" <<" You have just been ExHuMEd." << "\n" << "\n";
174  footer_str << " The cross section for process " << name
175  << " is " << cs << " fb" << "\n" << "\n";
176  footer_str << " The efficiency of event generation was " << eff << "%" << "\n" << "\n";
177 
178  edm::LogInfo("") << footer_str.str();
179 
180  auto_ptr<GenRunInfoProduct> genRunInfoProd (new GenRunInfoProduct());
181  genRunInfoProd->setInternalXSec(cs);
182  genRunInfoProd->setFilterEfficiency(extFilterEff_);
183  genRunInfoProd->setExternalXSecLO(extCrossSect_);
184  genRunInfoProd->setExternalXSecNLO(-1.);
185 
186  run.put(genRunInfoProd);
187 }
auto_ptr< ClusterSequence > cs
double CrossSectionCalculation()
std::string GetName()
Definition: CrossSection.h:144
double GetEfficiency()
Definition: Event.h:66
Exhume::CrossSection * exhumeProcess_
Exhume::Event * exhumeEvent_
void ExhumeProducer::produce ( edm::Event e,
const EventSetup es 
)
privatevirtual

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

Implements edm::EDProducer.

Definition at line 189 of file ExhumeProducer.cc.

References call_pylist(), conv, edm::EventID::event(), eventNumber_, exhumeEvent_, exhumeProcess_, Exhume::Event::Generate(), TtGenEvtProducer_cfi::genEvt, Exhume::CrossSection::GetName(), Exhume::CrossSection::Hadronise(), edm::EventBase::id(), maxEventsToPrint_, pypars, pythiaHepMCVerbosity_, pythiaPylistVerbosity_, and sigID_.

189  {
190 
191  auto_ptr<HepMCProduct> bare_product(new HepMCProduct());
192  edm::LogInfo("") << "ExhumeProducer: Generating event ...\n";
193 
196 
197  HepMC::GenEvent* genEvt = conv.read_next_event();
198  genEvt->set_signal_process_id(sigID_);
199  genEvt->set_event_scale(pypars.pari[16]);
200 // JMM change
201 // genEvt->set_event_number(numberEventsInRun() - remainingEvents() - 1);
202  ++eventNumber_;
203  genEvt->set_event_number(eventNumber_);
204 
205  //******** Verbosity ********
206 
207 // if(event() <= maxEventsToPrint_ &&
208  if(event.id().event() <= maxEventsToPrint_ &&
210 
211  // Prints PYLIST info
214  }
215 
216  // Prints HepMC event
218  edm::LogInfo("") << "Event process = " << exhumeProcess_->GetName() << "\n"
219  << "----------------------" << "\n";
220  genEvt->print();
221  }
222  }
223 
224  if(genEvt) bare_product->addHepMCData(genEvt);
225  event.put(bare_product);
226 
227  std::auto_ptr<GenEventInfoProduct> genEventInfo(new GenEventInfoProduct(genEvt));
228  event.put(genEventInfo);
229 }
void call_pylist(int mode)
bool pythiaHepMCVerbosity_
HepMC verbosity flag.
static HepMC::IO_HEPEVT conv
std::string GetName()
Definition: CrossSection.h:144
unsigned int pythiaPylistVerbosity_
Pythia PYLIST Verbosity flag.
Exhume::CrossSection * exhumeProcess_
#define pypars
Exhume::Event * exhumeEvent_
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
unsigned int eventNumber_
unsigned int maxEventsToPrint_
Events to print if verbosity.

Member Data Documentation

double edm::ExhumeProducer::comEnergy_
private

Definition at line 60 of file ExhumeProducer.h.

unsigned int edm::ExhumeProducer::eventNumber_
private

Definition at line 75 of file ExhumeProducer.h.

Referenced by produce().

HepMC::GenEvent* edm::ExhumeProducer::evt
private

Definition at line 51 of file ExhumeProducer.h.

Exhume::Event* edm::ExhumeProducer::exhumeEvent_
private

Definition at line 69 of file ExhumeProducer.h.

Referenced by clear(), endRun(), ExhumeProducer(), and produce().

Exhume::CrossSection* edm::ExhumeProducer::exhumeProcess_
private

Definition at line 70 of file ExhumeProducer.h.

Referenced by clear(), endRun(), ExhumeProducer(), and produce().

double edm::ExhumeProducer::extCrossSect_
private

Definition at line 63 of file ExhumeProducer.h.

Referenced by endRun().

double edm::ExhumeProducer::extFilterEff_
private

Definition at line 64 of file ExhumeProducer.h.

Referenced by endRun().

CLHEP::HepRandomEngine* edm::ExhumeProducer::fRandomEngine
private

Definition at line 66 of file ExhumeProducer.h.

Referenced by ExhumeProducer().

CLHEP::RandFlat* edm::ExhumeProducer::fRandomGenerator
private

Definition at line 67 of file ExhumeProducer.h.

Referenced by ExhumeProducer().

unsigned int edm::ExhumeProducer::maxEventsToPrint_
private

Events to print if verbosity.

Definition at line 58 of file ExhumeProducer.h.

Referenced by ExhumeProducer(), and produce().

bool edm::ExhumeProducer::pythiaHepMCVerbosity_
private

HepMC verbosity flag.

Definition at line 56 of file ExhumeProducer.h.

Referenced by ExhumeProducer(), and produce().

unsigned int edm::ExhumeProducer::pythiaPylistVerbosity_
private

Pythia PYLIST Verbosity flag.

Definition at line 54 of file ExhumeProducer.h.

Referenced by ExhumeProducer(), and produce().

int edm::ExhumeProducer::sigID_
private

Definition at line 72 of file ExhumeProducer.h.

Referenced by ExhumeProducer(), and produce().