CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

edm::BeamHaloProducer Class Reference

#include <BeamHaloProducer.h>

Inheritance diagram for edm::BeamHaloProducer:
edm::one::EDProducer< EndRunProducer > Type edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 BeamHaloProducer (const ParameterSet &)
 Constructor.
virtual ~BeamHaloProducer ()
 Destructor.

Private Member Functions

bool call_bh_set_parameters (int *ival, float *fval, const std::string cval_string)
bool call_ki_bhg_fill (int &iret, float &weight)
bool call_ki_bhg_init (long &seed)
bool call_ki_bhg_stat (int &iret)
void clear ()
virtual void endRunProduce (Run &r, const EventSetup &es)
virtual void produce (Event &e, const EventSetup &es)

Private Attributes

float EG_MAX_
float EG_MIN_
HepMC::GenEvent * evt
std::string G3FNAME_
int GENMOD_
int IW_HAD_
int IW_MUO_
int LHC_B1_
int LHC_B2_

Detailed Description

Definition at line 18 of file BeamHaloProducer.h.


Constructor & Destructor Documentation

BeamHaloProducer::BeamHaloProducer ( const ParameterSet pset)

Constructor.

Definition at line 60 of file BeamHaloProducer.cc.

References _BeamHalo_randomEngine, call_bh_set_parameters(), call_ki_bhg_init(), gather_cfg::cout, edm::ParameterSet::getUntrackedParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

                                                             :
        evt(0)
{

   int iparam[8];
   float fparam[4];
   std::string cparam;
 // -- from bhgctrl.inc
   iparam[0]  = pset.getUntrackedParameter<int>("GENMOD");
   iparam[1]  = pset.getUntrackedParameter<int>("LHC_B1");
   iparam[2]  = pset.getUntrackedParameter<int>("LHC_B2");
   iparam[3]  = pset.getUntrackedParameter<int>("IW_MUO");
   iparam[4]  = pset.getUntrackedParameter<int>("IW_HAD");
   iparam[5]  = 9999999;
   iparam[6]  = pset.getUntrackedParameter<int>("OFFSET",0);
   iparam[7]  = pset.getUntrackedParameter<int>("shift_bx");
   
   fparam[0]  = (float)pset.getUntrackedParameter<double>("EG_MIN");
   fparam[1]  = (float)pset.getUntrackedParameter<double>("EG_MAX");

   fparam[2] = (float)pset.getUntrackedParameter<double>("BXNS");
   fparam[3]  = (float)pset.getUntrackedParameter<double>("W0",1.0);

   cparam     = pset.getUntrackedParameter<std::string>("G3FNAME","input.txt");
   call_bh_set_parameters(iparam,fparam,cparam);


// -- Seed for randomnumbers
    Service<RandomNumberGenerator> rng;
    _BeamHalo_randomEngine = &(rng->getEngine());
    long seed = (long)(rng->mySeed());


// -- initialisation
   call_ki_bhg_init(seed);


  produces<HepMCProduct>();
  produces<GenEventInfoProduct>();
  produces<GenRunInfoProduct, InRun>();

  cout << "BeamHaloProducer: starting event generation ... " << endl;
}
BeamHaloProducer::~BeamHaloProducer ( ) [virtual]

Destructor.

Definition at line 54 of file BeamHaloProducer.cc.

                                    {
        int iret=0;
        call_ki_bhg_stat(iret);
}

Member Function Documentation

bool BeamHaloProducer::call_bh_set_parameters ( int *  ival,
float *  fval,
const std::string  cval_string 
) [private]

Definition at line 165 of file BeamHaloProducer.cc.

References BHSETPARAM.

Referenced by BeamHaloProducer().

                                                                                                 {
  BHSETPARAM(ival,fval,cval_string.c_str(),cval_string.length());
        return true;
}
bool BeamHaloProducer::call_ki_bhg_fill ( int &  iret,
float &  weight 
) [private]

Definition at line 175 of file BeamHaloProducer.cc.

References KI_BHG_FILL.

Referenced by produce().

                                                                {
        KI_BHG_FILL(iret,weight);
        return true;
}
bool BeamHaloProducer::call_ki_bhg_init ( long &  seed) [private]

Definition at line 170 of file BeamHaloProducer.cc.

References KI_BHG_INIT.

Referenced by BeamHaloProducer().

                                                  {
        KI_BHG_INIT(seed);
        return true;
}
bool BeamHaloProducer::call_ki_bhg_stat ( int &  iret) [private]

Definition at line 180 of file BeamHaloProducer.cc.

References KI_BHG_STAT.

                                                 {
        KI_BHG_STAT(iret);
        return true;
}
void BeamHaloProducer::clear ( void  ) [private]

Definition at line 105 of file BeamHaloProducer.cc.

{
}
void BeamHaloProducer::endRunProduce ( Run r,
const EventSetup es 
) [private, virtual]

Definition at line 156 of file BeamHaloProducer.cc.

References edm::Run::put().

{
   // just create an empty product
   // to keep the EventContent definitions happy
   // later on we might put the info into the run info that this is a PGun
   auto_ptr<GenRunInfoProduct> genRunInfo( new GenRunInfoProduct() );
   run.put( genRunInfo );
}
void BeamHaloProducer::produce ( Event e,
const EventSetup es 
) [private, virtual]

Implements edm::one::EDProducerBase.

Definition at line 109 of file BeamHaloProducer.cc.

References call_ki_bhg_fill(), edm::EventID::event(), edm::errors::EventCorruption, evt, Exception, configurableAnalysis::GenParticle, edm::EventBase::id(), AlCaHLTBitMon_ParallelJobs::p, edm::Event::put(), histoStyle::weight, create_public_pileup_plots::weights, and wrapper.

                                                               {
        // cout << "in produce " << endl;

  //            auto_ptr<HepMCProduct> bare_product(new HepMCProduct());

        // cout << "apres autoptr " << endl;

        int iret=0;
        float weight = 0;
        call_ki_bhg_fill(iret, weight);

// Throw an exception if call_ki_bhg_fill(...) fails.  Use the EventCorruption
// exception since it maps onto SkipEvent which is what we want to do here.

        if( iret < 0 )
          throw edm::Exception(edm::errors::EventCorruption)
            << "BeamHaloProducer: function call_ki_bhg_fill returned " << iret << endl;

        // cout << "apres fortran " << endl;


        // HepMC::GenEvent* evt = conv.getGenEventfromHEPEVT();
        //      HepMC::GenEvent* evt = conv.read_next_event();  seems to be broken (?)
  evt = new HepMC::GenEvent();

  for (int theindex = 1; theindex<=wrapper.number_entries(); theindex++) {
  HepMC::GenVertex* Vtx = new  HepMC::GenVertex(HepMC::FourVector(wrapper.x(theindex),wrapper.y(theindex),wrapper.z(theindex),wrapper.t(theindex)));
  HepMC::FourVector p(wrapper.px(theindex),wrapper.py(theindex),wrapper.pz(theindex),wrapper.e(theindex));
  HepMC::GenParticle* Part = 
    new HepMC::GenParticle(p,wrapper.id(theindex),wrapper.status(theindex));
  Vtx->add_particle_out(Part); 
  evt->add_vertex(Vtx);
  }

  evt->set_event_number(e.id().event());

        HepMC::WeightContainer& weights = evt -> weights();
        weights.push_back(weight);
        //      evt->print();
  std::auto_ptr<HepMCProduct> CMProduct(new HepMCProduct());
  if (evt) CMProduct->addHepMCData(evt);
  e.put(CMProduct);

  auto_ptr<GenEventInfoProduct> genEventInfo(new GenEventInfoProduct(evt));
  e.put(genEventInfo);
}

Member Data Documentation

Definition at line 47 of file BeamHaloProducer.h.

Definition at line 46 of file BeamHaloProducer.h.

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

Definition at line 39 of file BeamHaloProducer.h.

Referenced by produce().

std::string edm::BeamHaloProducer::G3FNAME_ [private]

Definition at line 48 of file BeamHaloProducer.h.

Definition at line 41 of file BeamHaloProducer.h.

Definition at line 45 of file BeamHaloProducer.h.

Definition at line 44 of file BeamHaloProducer.h.

Definition at line 42 of file BeamHaloProducer.h.

Definition at line 43 of file BeamHaloProducer.h.