CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
l1t::GenToInputProducer Class Reference
Inheritance diagram for l1t::GenToInputProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 GenToInputProducer (const ParameterSet &)
 
 ~GenToInputProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual void beginJob ()
 
virtual void beginRun (Run const &iR, EventSetup const &iE)
 
int convertEtaToHW (double ieta, double minEta, double maxEta, int steps)
 
int convertPhiToHW (double iphi, int steps)
 
int convertPtToHW (double ipt, int maxPt, double step)
 
virtual void endJob ()
 
virtual void endRun (Run const &iR, EventSetup const &iE)
 
virtual void produce (Event &, EventSetup const &)
 

Private Attributes

int bxFirst_
 
int bxLast_
 
int counter_
 
std::vector< l1t::EGammaegammaVec_bx0
 
std::vector< l1t::EGammaegammaVec_bxm1
 
std::vector< l1t::EGammaegammaVec_bxm2
 
std::vector< l1t::EGammaegammaVec_bxp1
 
double egEtThreshold_
 
int emptyBxEvt_
 
int emptyBxTrailer_
 
std::vector< l1t::EtSumetsumVec_bx0
 
std::vector< l1t::EtSumetsumVec_bxm1
 
std::vector< l1t::EtSumetsumVec_bxm2
 
std::vector< l1t::EtSumetsumVec_bxp1
 
int eventCnt_
 
GlobalExtBlk extCond_bx0
 
GlobalExtBlk extCond_bxm1
 
GlobalExtBlk extCond_bxm2
 
GlobalExtBlk extCond_bxp1
 
edm::EDGetTokenT
< reco::GenJetCollection
genJetsToken
 
edm::EDGetTokenT
< reco::GenMETCollection
genMetToken
 
edm::EDGetTokenT
< reco::GenParticleCollection
genParticlesToken
 
TRandom3 * gRandom
 
double jetEtThreshold_
 
std::vector< l1t::JetjetVec_bx0
 
std::vector< l1t::JetjetVec_bxm1
 
std::vector< l1t::JetjetVec_bxm2
 
std::vector< l1t::JetjetVec_bxp1
 
unsigned long long m_paramsCacheId
 
int maxNumEGCands_
 
int maxNumJetCands_
 
int maxNumMuCands_
 
int maxNumTauCands_
 
double muEtThreshold_
 
std::vector< l1t::MuonmuonVec_bx0
 
std::vector< l1t::MuonmuonVec_bxm1
 
std::vector< l1t::MuonmuonVec_bxm2
 
std::vector< l1t::MuonmuonVec_bxp1
 
double tauEtThreshold_
 
std::vector< l1t::TautauVec_bx0
 
std::vector< l1t::TautauVec_bxm1
 
std::vector< l1t::TautauVec_bxm2
 
std::vector< l1t::TautauVec_bxp1
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: Create Input Collections for the GT from MC gen particles. Allows testing of emulation.

Author
: D. Puigh OSU

Modeled after FakeInputProducer.cc

Definition at line 60 of file GenToInputProducer.cc.

Constructor & Destructor Documentation

l1t::GenToInputProducer::GenToInputProducer ( const ParameterSet iConfig)
explicit

Definition at line 147 of file GenToInputProducer.cc.

References edm::ParameterSet::getParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

148  {
149  // register what you produce
150  produces<BXVector<l1t::EGamma>>();
151  produces<BXVector<l1t::Muon>>();
152  produces<BXVector<l1t::Tau>>();
153  produces<BXVector<l1t::Jet>>();
154  produces<BXVector<l1t::EtSum>>();
155  produces<GlobalExtBlkBxCollection>();
156 
157  // Setup parameters
158  bxFirst_ = iConfig.getParameter<int>("bxFirst");
159  bxLast_ = iConfig.getParameter<int>("bxLast");
160 
161  maxNumMuCands_ = iConfig.getParameter<int>("maxMuCand");
162  maxNumJetCands_ = iConfig.getParameter<int>("maxJetCand");
163  maxNumEGCands_ = iConfig.getParameter<int>("maxEGCand");
164  maxNumTauCands_ = iConfig.getParameter<int>("maxTauCand");
165 
166  jetEtThreshold_ = iConfig.getParameter<double>("jetEtThreshold");
167  tauEtThreshold_ = iConfig.getParameter<double>("tauEtThreshold");
168  egEtThreshold_ = iConfig.getParameter<double>("egEtThreshold");
169  muEtThreshold_ = iConfig.getParameter<double>("muEtThreshold");
170 
171 
172  emptyBxTrailer_ = iConfig.getParameter<int>("emptyBxTrailer");
173  emptyBxEvt_ = iConfig.getParameter<int>("emptyBxEvt");
174 
175 
176  genParticlesToken = consumes <reco::GenParticleCollection> (std::string("genParticles"));
177  genJetsToken = consumes <reco::GenJetCollection> (std::string("ak4GenJets"));
178  genMetToken = consumes <reco::GenMETCollection> (std::string("genMetCalo"));
179 
180 
181  // set cache id to zero, will be set at first beginRun:
182  m_paramsCacheId = 0;
183  eventCnt_ = 0;
184  }
T getParameter(std::string const &) const
unsigned long long m_paramsCacheId
edm::EDGetTokenT< reco::GenJetCollection > genJetsToken
edm::EDGetTokenT< reco::GenMETCollection > genMetToken
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken
l1t::GenToInputProducer::~GenToInputProducer ( )

Definition at line 187 of file GenToInputProducer.cc.

188  {
189  }

Member Function Documentation

void l1t::GenToInputProducer::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 694 of file GenToInputProducer.cc.

695 {
696 }
void l1t::GenToInputProducer::beginRun ( Run const &  iR,
EventSetup const &  iE 
)
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 705 of file GenToInputProducer.cc.

References LogDebug.

705  {
706 
707  LogDebug("GtGenToInputProducer") << "GenToInputProducer::beginRun function called...\n";
708 
709  counter_ = 0;
710  srand( 0 );
711 
712  gRandom = new TRandom3();
713 }
#define LogDebug(id)
int l1t::GenToInputProducer::convertEtaToHW ( double  ieta,
double  minEta,
double  maxEta,
int  steps 
)
private

Definition at line 732 of file GenToInputProducer.cc.

References HLT_FULL_cff::minEta.

732  {
733 
734  double binWidth = (maxEta - minEta)/steps;
735 
736  //if we are outside the limits, set error
737  if(ieta < minEta) return 99999;//ieta = minEta+binWidth/2.;
738  if(ieta > maxEta) return 99999;//ieta = maxEta-binWidth/2.;
739 
740  int binNum = (int)(ieta/binWidth);
741  if(ieta<0.) binNum--;
742 
743 // unsigned int hwEta = binNum & bitMask;
744 // Remove masking for BXVectors...only assume in raw data
745 
746  return binNum;
747 }
double maxEta
int l1t::GenToInputProducer::convertPhiToHW ( double  iphi,
int  steps 
)
private

Definition at line 722 of file GenToInputProducer.cc.

References M_PI.

722  {
723 
724  double phiMax = 2 * M_PI;
725  if( iphi < 0 ) iphi += 2*M_PI;
726  if( iphi > phiMax) iphi -= phiMax;
727 
728  int hwPhi = int( (iphi/phiMax)*steps + 0.00001 );
729  return hwPhi;
730 }
#define M_PI
int l1t::GenToInputProducer::convertPtToHW ( double  ipt,
int  maxPt,
double  step 
)
private

Definition at line 749 of file GenToInputProducer.cc.

749  {
750 
751  int hwPt = int( ipt/step + 0.0001 );
752  // if above max Pt, set to largest value
753  if( hwPt > maxPt ) hwPt = maxPt;
754 
755  return hwPt;
756 }
void l1t::GenToInputProducer::endJob ( void  )
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 700 of file GenToInputProducer.cc.

700  {
701 }
void l1t::GenToInputProducer::endRun ( Run const &  iR,
EventSetup const &  iE 
)
privatevirtual

Reimplemented from edm::EDProducer.

Definition at line 716 of file GenToInputProducer.cc.

716  {
717 
718 }
void l1t::GenToInputProducer::fillDescriptions ( ConfigurationDescriptions descriptions)
static

Definition at line 761 of file GenToInputProducer.cc.

References edm::ConfigurationDescriptions::addDefault(), and edm::ParameterSetDescription::setUnknown().

761  {
762  //The following says we do not know what parameters are allowed so do no validation
763  // Please change this to state exactly what you do use, even if it is no parameters
765  desc.setUnknown();
766  descriptions.addDefault(desc);
767 }
void addDefault(ParameterSetDescription const &psetDescription)
void l1t::GenToInputProducer::produce ( Event iEvent,
EventSetup const &  iSetup 
)
privatevirtual

Implements edm::EDProducer.

Definition at line 199 of file GenToInputProducer.cc.

References funct::abs(), RecoTauCleanerPlugins::charge, reco::Candidate::charge(), eta, reco::Candidate::eta(), edm::EventID::event(), HepMCValidationHelper::genMet(), genParticleCandidates2GenParticles_cfi::genParticles, edm::Event::getByToken(), i, edm::EventBase::id(), metsig::jet, fwrapper::jets, relval_2017::k, L1Analysis::kMissingEt, L1Analysis::kMissingHt, L1Analysis::kTotalEt, L1Analysis::kTotalHt, LogDebug, LogTrace, RPCpg::mu, patZpeak::muons, ecaldqm::nTowers, p4, SingleMuPt40Fwdv2_cfi_GEN_SIM::pdgId, reco::Candidate::pdgId(), reco::Candidate::phi(), phi(), EnergyCorrector::pt, reco::Candidate::pt(), edm::Event::put(), GlobalExtBlk::reset(), GlobalExtBlk::setExternalDecision(), mps_update::status, reco::Candidate::status(), GlobalPosition_Frontier_DevDB_cff::tag, and metsig::tau.

200 {
201 
202  eventCnt_++;
203 
204  LogDebug("GtGenToInputProducer") << "GenToInputProducer::produce function called...\n";
205 
206  // Setup vectors
207  std::vector<l1t::Muon> muonVec;
208  std::vector<l1t::EGamma> egammaVec;
209  std::vector<l1t::Tau> tauVec;
210  std::vector<l1t::Jet> jetVec;
211  std::vector<l1t::EtSum> etsumVec;
212  GlobalExtBlk extCond_bx;
213 
214  // Set the range of BX....TO DO...move to Params or determine from param set.
215  int bxFirst = bxFirst_;
216  int bxLast = bxLast_;
217 
218 
219  // Default values objects
220  double MaxLepPt_ = 255;
221  double MaxJetPt_ = 1023;
222  double MaxEt_ = 2047;
223 
224  double MaxCaloEta_ = 5.0;
225  double MaxMuonEta_ = 2.45;
226 
227  double PhiStepCalo_ = 144;
228  double PhiStepMuon_ = 576;
229 
230  // eta scale
231  double EtaStepCalo_ = 230;
232  double EtaStepMuon_ = 450;
233 
234  // Et scale (in GeV)
235  double PtStep_ = 0.5;
236 
237 
238  //outputs
239  std::auto_ptr<l1t::EGammaBxCollection> egammas (new l1t::EGammaBxCollection(0, bxFirst, bxLast));
240  std::auto_ptr<l1t::MuonBxCollection> muons (new l1t::MuonBxCollection(0, bxFirst, bxLast));
241  std::auto_ptr<l1t::TauBxCollection> taus (new l1t::TauBxCollection(0, bxFirst, bxLast));
242  std::auto_ptr<l1t::JetBxCollection> jets (new l1t::JetBxCollection(0, bxFirst, bxLast));
243  std::auto_ptr<l1t::EtSumBxCollection> etsums (new l1t::EtSumBxCollection(0, bxFirst, bxLast));
244  std::auto_ptr<GlobalExtBlkBxCollection> extCond( new GlobalExtBlkBxCollection(0,bxFirst,bxLast));
245 
246  std::vector<int> mu_cands_index;
247  std::vector<int> eg_cands_index;
248  std::vector<int> tau_cands_index;
250  // Make sure that you can get genParticles
251  if( iEvent.getByToken(genParticlesToken, genParticles) ){
252 
253  for( size_t k = 0; k < genParticles->size(); k++ ){
254  const reco::Candidate & mcParticle = (*genParticles)[k];
255 
256  int status = mcParticle.status();
257  int pdgId = mcParticle.pdgId();
258  double pt = mcParticle.pt();
259 
260  // Only use status 1 particles (Tau's need to be allowed through..take status 2 taus)
261  if( status!=1 && !(abs(pdgId)==15 && status==2) ) continue;
262 
263  int absId = abs(pdgId);
264 
265  if( absId==11 && pt>=egEtThreshold_ ) eg_cands_index.push_back(k);
266  else if( absId==13 && pt>=muEtThreshold_ ) mu_cands_index.push_back(k);
267  else if( absId==15 && pt>=tauEtThreshold_ ) tau_cands_index.push_back(k);
268  }
269  }
270  else {
271  LogTrace("GtGenToInputProducer") << ">>> GenParticles collection not found!" << std::endl;
272  }
273 
274 
275 
276  // Muon Collection
277  int numMuCands = int( mu_cands_index.size() );
278  Int_t idxMu[numMuCands];
279  double muPtSorted[numMuCands];
280  for( int iMu=0; iMu<numMuCands; iMu++ ) muPtSorted[iMu] = genParticles->at(mu_cands_index[iMu]).pt();
281 
282  TMath::Sort(numMuCands,muPtSorted,idxMu);
283  for( int iMu=0; iMu<numMuCands; iMu++ ){
284 
285  if( iMu>=maxNumMuCands_ ) continue;
286 
287  const reco::Candidate & mcParticle = (*genParticles)[mu_cands_index[idxMu[iMu]]];
288 
289  int pt = convertPtToHW( mcParticle.pt(), MaxLepPt_, PtStep_ );
290  int eta = convertEtaToHW( mcParticle.eta(), -MaxMuonEta_, MaxMuonEta_, EtaStepMuon_);
291  int phi = convertPhiToHW( mcParticle.phi(), PhiStepMuon_ );
292  int qual = gRandom->Integer(16);//4;
293  int iso = gRandom->Integer(4)%2;//1;
294  int charge = ( mcParticle.charge()<0 ) ? 1 : 0;
295  int chargeValid = 1;
296  int mip = 1;
297  int tag = 1;
298 
299  // Eta outside of acceptance
300  if( eta>=9999 ) continue;
301 
302  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > *p4 = new ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> >();
303 
304  l1t::Muon mu(*p4, pt, eta, phi, qual, charge, chargeValid, iso, mip, tag);
305  muonVec.push_back(mu);
306  }
307 
308 
309  // EG Collection
310  int numEgCands = int( eg_cands_index.size() );
311  Int_t idxEg[numEgCands];
312  double egPtSorted[numEgCands];
313  for( int iEg=0; iEg<numEgCands; iEg++ ) egPtSorted[iEg] = genParticles->at(eg_cands_index[iEg]).pt();
314 
315  TMath::Sort(numEgCands,egPtSorted,idxEg);
316  for( int iEg=0; iEg<numEgCands; iEg++ ){
317 
318  if( iEg>=maxNumEGCands_ ) continue;
319 
320  const reco::Candidate & mcParticle = (*genParticles)[eg_cands_index[idxEg[iEg]]];
321 
322  int pt = convertPtToHW( mcParticle.pt(), MaxLepPt_, PtStep_ );
323  int eta = convertEtaToHW( mcParticle.eta(), -MaxCaloEta_, MaxCaloEta_, EtaStepCalo_ );
324  int phi = convertPhiToHW( mcParticle.phi(), PhiStepCalo_ );
325  int qual = 1;
326  int iso = gRandom->Integer(4)%2;
327 
328  // Eta outside of acceptance
329  if( eta>=9999 ) continue;
330 
331  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > *p4 = new ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> >();
332 
333  l1t::EGamma eg(*p4, pt, eta, phi, qual, iso);
334  egammaVec.push_back(eg);
335  }
336 
337 
338 
339  // Tau Collection
340  int numTauCands = int( tau_cands_index.size() );
341  Int_t idxTau[numTauCands];
342  double tauPtSorted[numTauCands];
343  for( int iTau=0; iTau<numTauCands; iTau++ ) tauPtSorted[iTau] = genParticles->at(tau_cands_index[iTau]).pt();
344 
345  TMath::Sort(numTauCands,tauPtSorted,idxTau);
346  for( int iTau=0; iTau<numTauCands; iTau++ ){
347 
348  if( iTau>=maxNumTauCands_ ) continue;
349 
350  const reco::Candidate & mcParticle = (*genParticles)[tau_cands_index[idxTau[iTau]]];
351 
352  int pt = convertPtToHW( mcParticle.pt(), MaxLepPt_, PtStep_ );
353  int eta = convertEtaToHW( mcParticle.eta(), -MaxCaloEta_, MaxCaloEta_, EtaStepCalo_);
354  int phi = convertPhiToHW( mcParticle.phi(), PhiStepCalo_ );
355  int qual = 1;
356  int iso = gRandom->Integer(4)%2;
357 
358  // Eta outside of acceptance
359  if( eta>=9999 ) continue;
360 
361  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > *p4 = new ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> >();
362 
363  l1t::Tau tau(*p4, pt, eta, phi, qual, iso);
364  tauVec.push_back(tau);
365  }
366 
367 
368  // Temporary hack to increase number of EGs and taus
369  int maxOtherEGs = 4;
370  int maxOtherTaus = 8;
371  int numCurrentEGs = int( egammaVec.size() );
372  int numCurrentTaus = int( tauVec.size() );
373 
374  int numExtraEGs=0, numExtraTaus=0;
375  // end hack
376 
377  // Use to sum the energy of the objects in the event for ETT and HTT
378  // sum all jets
379  double sumEt = 0;
380 
381  int nJet = 0;
383  // Make sure that you can get genJets
384  if( iEvent.getByToken(genJetsToken, genJets) ){ // Jet Collection
385  for(reco::GenJetCollection::const_iterator genJet = genJets->begin(); genJet!=genJets->end(); ++genJet ){
386 
387  //Keep running sum of total Et
388  sumEt += genJet->et();
389 
390  // Apply pt and eta cut?
391  if( genJet->pt()<jetEtThreshold_ ) continue;
392 
393  //
394  if( nJet>=maxNumJetCands_ ) continue;
395  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > *p4 = new ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> >();
396 
397  int pt = convertPtToHW( genJet->et(), MaxJetPt_, PtStep_ );
398  int eta = convertEtaToHW( genJet->eta(), -MaxCaloEta_, MaxCaloEta_, EtaStepCalo_ );
399  int phi = convertPhiToHW( genJet->phi(), PhiStepCalo_ );
400 
401  // Eta outside of acceptance
402  if( eta>=9999 ) continue;
403 
404  int qual = 0;
405 
406  l1t::Jet jet(*p4, pt, eta, phi, qual);
407  jetVec.push_back(jet);
408 
409  nJet++;
410 
411  // Temporary hack to increase number of EGs and taus
412  if( (numExtraEGs+numCurrentEGs)<maxNumEGCands_ && numExtraEGs<maxOtherEGs ){
413  numExtraEGs++;
414 
415  int EGpt = convertPtToHW( genJet->et(), MaxLepPt_, PtStep_ );
416  int EGeta = convertEtaToHW( genJet->eta(), -MaxCaloEta_, MaxCaloEta_, EtaStepCalo_ );
417  int EGphi = convertPhiToHW( genJet->phi(), PhiStepCalo_ );
418 
419  int EGqual = 1;
420  int EGiso = gRandom->Integer(4)%2;
421 
422  l1t::EGamma eg(*p4, EGpt, EGeta, EGphi, EGqual, EGiso);
423  egammaVec.push_back(eg);
424  }
425 
426  if( (numExtraTaus+numCurrentTaus)<maxNumTauCands_ && numExtraTaus<maxOtherTaus ){
427  numExtraTaus++;
428 
429  int Taupt = convertPtToHW( genJet->et(), MaxLepPt_, PtStep_ );
430  int Taueta = convertEtaToHW( genJet->eta(), -MaxCaloEta_, MaxCaloEta_, EtaStepCalo_ );
431  int Tauphi = convertPhiToHW( genJet->phi(), PhiStepCalo_ );
432  int Tauqual = 1;
433  int Tauiso = gRandom->Integer(4)%2;
434 
435  l1t::Tau tau(*p4, Taupt, Taueta, Tauphi, Tauqual, Tauiso);
436  tauVec.push_back(tau);
437  }
438  // end hack
439  }
440  }
441  else {
442  LogTrace("GtGenToInputProducer") << ">>> GenJets collection not found!" << std::endl;
443  }
444 
445 
446 // Put the total Et into EtSums (Make HTT slightly smaller to tell them apart....not supposed to be realistic)
447  int pt = convertPtToHW( sumEt, 2047, PtStep_ );
448  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > *p4 = new ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> >();
449  l1t::EtSum etTotal(*p4, l1t::EtSum::EtSumType::kTotalEt,pt, 0, 0, 0);
450 
451 // Scale down ETTem as an estimate
452  pt = convertPtToHW( sumEt*0.6, 2047, PtStep_ );
453  l1t::EtSum etEmTotal(*p4, l1t::EtSum::EtSumType::kTotalEtEm,pt, 0, 0, 0);
454 
455  //ccla Generate uniform distribution of tower counts
456  int nTowers=4095*gRandom->Rndm();
457  l1t::EtSum towerCounts(*p4, l1t::EtSum::EtSumType::kTowerCount,nTowers, 0, 0, 0);
458 
459  pt = convertPtToHW( sumEt*0.9, 2047, PtStep_ );
460  l1t::EtSum htTotal(*p4, l1t::EtSum::EtSumType::kTotalHt,pt, 0, 0, 0);
461 
462 // Add EtSums for testing the MinBias Trigger (use some random numbers)
463  int hfP0val = gRandom->Poisson(4.);
464  if(hfP0val>15) hfP0val = 15;
465  l1t::EtSum hfP0(*p4, l1t::EtSum::EtSumType::kMinBiasHFP0,hfP0val, 0, 0, 0);
466 
467  int hfM0val = gRandom->Poisson(4.);
468  if(hfM0val>15) hfM0val = 15;
469  l1t::EtSum hfM0(*p4, l1t::EtSum::EtSumType::kMinBiasHFM0,hfM0val, 0, 0, 0);
470 
471  int hfP1val = gRandom->Poisson(4.);
472  if(hfP1val>15) hfP1val = 15;
473  l1t::EtSum hfP1(*p4, l1t::EtSum::EtSumType::kMinBiasHFP1,hfP1val, 0, 0, 0);
474 
475  int hfM1val = gRandom->Poisson(4.);
476  if(hfM1val>15) hfM1val = 15;
477  l1t::EtSum hfM1(*p4, l1t::EtSum::EtSumType::kMinBiasHFM1,hfM1val, 0, 0, 0);
478 
479 
480  int mpt = 0;
481  int mphi= 0;
482  int mptHf = 0;
483  int mphiHf= 0;
484  int mhpt = 0;
485  int mhphi= 0;
487  // Make sure that you can get genMET
488  if( iEvent.getByToken(genMetToken, genMet) ){
489  mpt = convertPtToHW( genMet->front().pt(), MaxEt_, PtStep_ );
490  mphi = convertPhiToHW( genMet->front().phi(), PhiStepCalo_ );
491 
492  // Make Missing Et with HF slightly largeer and rotated (These are all fake inputs anyway...not supposed to be realistic)
493  mptHf = convertPtToHW( genMet->front().pt()*1.1, MaxEt_, PtStep_ );
494  mphiHf = convertPhiToHW( genMet->front().phi()+ 3.14/7., PhiStepCalo_ );
495 
496  // Make Missing Ht slightly smaller and rotated (These are all fake inputs anyway...not supposed to be realistic)
497  mhpt = convertPtToHW( genMet->front().pt()*0.9, MaxEt_, PtStep_ );
498  mhphi = convertPhiToHW( genMet->front().phi()+ 3.14/5., PhiStepCalo_ );
499  }
500  else {
501  LogTrace("GtGenToInputProducer") << ">>> GenMet collection not found!" << std::endl;
502  }
503 
504 // Missing Et and missing htt
505  l1t::EtSum etmiss(*p4, l1t::EtSum::EtSumType::kMissingEt,mpt, 0,mphi, 0);
506  l1t::EtSum etmissHF(*p4, l1t::EtSum::EtSumType::kMissingEtHF,mptHf, 0,mphiHf, 0);
507  l1t::EtSum htmiss(*p4, l1t::EtSum::EtSumType::kMissingHt,mhpt, 0,mhphi, 0);
508 
509 // Fill the EtSums in the Correct order
510  etsumVec.push_back(etTotal);
511  etsumVec.push_back(etEmTotal);
512  etsumVec.push_back(hfP0);
513  etsumVec.push_back(htTotal);
514  etsumVec.push_back(hfM0);
515  etsumVec.push_back(etmiss);
516  etsumVec.push_back(hfP1);
517  etsumVec.push_back(htmiss);
518  etsumVec.push_back(hfM1);
519  etsumVec.push_back(etmissHF);
520  etsumVec.push_back(towerCounts);
521 
522 // Fill in some external conditions for testing
523  if((iEvent.id().event())%2 == 0 ) {
524  for(int i=0; i<255; i=i+2) extCond_bx.setExternalDecision(i,true);
525  } else {
526  for(int i=1; i<255; i=i+2) extCond_bx.setExternalDecision(i,true);
527  }
528 
529  // Insert all the bx into the L1 Collections
530  //printf("Event %i EmptyBxEvt %i emptyBxTrailer %i diff %i \n",eventCnt_,emptyBxEvt_,emptyBxTrailer_,(emptyBxEvt_ - eventCnt_));
531 
532  // Fill Muons
533  for( int iMu=0; iMu<int(muonVec_bxm2.size()); iMu++ ){
534  muons->push_back(-2, muonVec_bxm2[iMu]);
535  }
536  for( int iMu=0; iMu<int(muonVec_bxm1.size()); iMu++ ){
537  muons->push_back(-1, muonVec_bxm1[iMu]);
538  }
539  for( int iMu=0; iMu<int(muonVec_bx0.size()); iMu++ ){
540  muons->push_back(0, muonVec_bx0[iMu]);
541  }
542  for( int iMu=0; iMu<int(muonVec_bxp1.size()); iMu++ ){
543  muons->push_back(1, muonVec_bxp1[iMu]);
544  }
546  for( int iMu=0; iMu<int(muonVec.size()); iMu++ ){
547  muons->push_back(2, muonVec[iMu]);
548  }
549  } else {
550  // this event is part of empty trailer...clear out data
551  muonVec.clear();
552  }
553 
554  // Fill Egammas
555  for( int iEG=0; iEG<int(egammaVec_bxm2.size()); iEG++ ){
556  egammas->push_back(-2, egammaVec_bxm2[iEG]);
557  }
558  for( int iEG=0; iEG<int(egammaVec_bxm1.size()); iEG++ ){
559  egammas->push_back(-1, egammaVec_bxm1[iEG]);
560  }
561  for( int iEG=0; iEG<int(egammaVec_bx0.size()); iEG++ ){
562  egammas->push_back(0, egammaVec_bx0[iEG]);
563  }
564  for( int iEG=0; iEG<int(egammaVec_bxp1.size()); iEG++ ){
565  egammas->push_back(1, egammaVec_bxp1[iEG]);
566  }
568  for( int iEG=0; iEG<int(egammaVec.size()); iEG++ ){
569  egammas->push_back(2, egammaVec[iEG]);
570  }
571  } else {
572  // this event is part of empty trailer...clear out data
573  egammaVec.clear();
574  }
575 
576  // Fill Taus
577  for( int iTau=0; iTau<int(tauVec_bxm2.size()); iTau++ ){
578  taus->push_back(-2, tauVec_bxm2[iTau]);
579  }
580  for( int iTau=0; iTau<int(tauVec_bxm1.size()); iTau++ ){
581  taus->push_back(-1, tauVec_bxm1[iTau]);
582  }
583  for( int iTau=0; iTau<int(tauVec_bx0.size()); iTau++ ){
584  taus->push_back(0, tauVec_bx0[iTau]);
585  }
586  for( int iTau=0; iTau<int(tauVec_bxp1.size()); iTau++ ){
587  taus->push_back(1, tauVec_bxp1[iTau]);
588  }
590  for( int iTau=0; iTau<int(tauVec.size()); iTau++ ){
591  taus->push_back(2, tauVec[iTau]);
592  }
593  } else {
594  // this event is part of empty trailer...clear out data
595  tauVec.clear();
596  }
597 
598  // Fill Jets
599  for( int iJet=0; iJet<int(jetVec_bxm2.size()); iJet++ ){
600  jets->push_back(-2, jetVec_bxm2[iJet]);
601  }
602  for( int iJet=0; iJet<int(jetVec_bxm1.size()); iJet++ ){
603  jets->push_back(-1, jetVec_bxm1[iJet]);
604  }
605  for( int iJet=0; iJet<int(jetVec_bx0.size()); iJet++ ){
606  jets->push_back(0, jetVec_bx0[iJet]);
607  }
608  for( int iJet=0; iJet<int(jetVec_bxp1.size()); iJet++ ){
609  jets->push_back(1, jetVec_bxp1[iJet]);
610  }
612  for( int iJet=0; iJet<int(jetVec.size()); iJet++ ){
613  jets->push_back(2, jetVec[iJet]);
614  }
615  } else {
616  // this event is part of empty trailer...clear out data
617  jetVec.clear();
618  }
619 
620  // Fill Etsums
621  for( int iETsum=0; iETsum<int(etsumVec_bxm2.size()); iETsum++ ){
622  etsums->push_back(-2, etsumVec_bxm2[iETsum]);
623  }
624  for( int iETsum=0; iETsum<int(etsumVec_bxm1.size()); iETsum++ ){
625  etsums->push_back(-1, etsumVec_bxm1[iETsum]);
626  }
627  for( int iETsum=0; iETsum<int(etsumVec_bx0.size()); iETsum++ ){
628  etsums->push_back(0, etsumVec_bx0[iETsum]);
629  }
630  for( int iETsum=0; iETsum<int(etsumVec_bxp1.size()); iETsum++ ){
631  etsums->push_back(1, etsumVec_bxp1[iETsum]);
632  }
634  for( int iETsum=0; iETsum<int(etsumVec.size()); iETsum++ ){
635  etsums->push_back(2, etsumVec[iETsum]);
636  }
637  } else {
638  // this event is part of empty trailer...clear out data
639  etsumVec.clear();
640  }
641 
642  // Fill Externals
643  extCond->push_back(-2, extCond_bxm2);
644  extCond->push_back(-1, extCond_bxm1);
645  extCond->push_back(0, extCond_bx0);
646  extCond->push_back(1, extCond_bxp1);
648  extCond->push_back(2, extCond_bx);
649  } else {
650  // this event is part of the empty trailer...clear out data
651  extCond_bx.reset();
652  }
653 
654 
655  iEvent.put(egammas);
656  iEvent.put(muons);
657  iEvent.put(taus);
658  iEvent.put(jets);
659  iEvent.put(etsums);
660  iEvent.put(extCond);
661 
662  // Now shift the bx data by one to prepare for next event.
669 
676 
683 
684  muonVec_bxp1 = muonVec;
685  egammaVec_bxp1 = egammaVec;
686  tauVec_bxp1 = tauVec;
687  jetVec_bxp1 = jetVec;
688  etsumVec_bxp1 = etsumVec;
689  extCond_bxp1 = extCond_bx;
690 }
#define LogDebug(id)
EventNumber_t event() const
Definition: EventID.h:41
BXVector< GlobalExtBlk > GlobalExtBlkBxCollection
Definition: GlobalExtBlk.h:30
int i
Definition: DBlmapReader.cc:9
std::vector< l1t::EtSum > etsumVec_bxm1
void reset()
reset the content of a GlobalExtBlk
Definition: GlobalExtBlk.cc:75
std::vector< l1t::Muon > muonVec_bxm1
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:462
std::vector< l1t::EtSum > etsumVec_bx0
virtual double pt() const =0
transverse momentum
std::vector< l1t::Muon > muonVec_bxp1
virtual int status() const =0
status word
Definition: Tau.h:16
std::vector< l1t::Tau > tauVec_bx0
std::vector< l1t::Tau > tauVec_bxp1
std::vector< l1t::Tau > tauVec_bxm2
std::vector< l1t::Muon > muonVec_bxm2
std::vector< l1t::EtSum > etsumVec_bxp1
std::vector< l1t::EGamma > egammaVec_bxm1
Definition: Jet.h:16
int convertPtToHW(double ipt, int maxPt, double step)
std::vector< l1t::EGamma > egammaVec_bxm2
std::vector< l1t::EGamma > egammaVec_bxp1
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:121
edm::EDGetTokenT< reco::GenJetCollection > genJetsToken
double p4[4]
Definition: TauolaWrapper.h:92
std::vector< l1t::Muon > muonVec_bx0
vector< PseudoJet > jets
std::vector< l1t::Tau > tauVec_bxm1
std::vector< l1t::Jet > jetVec_bxm1
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual int charge() const =0
electric charge
const int mu
Definition: Constants.h:22
std::vector< l1t::Jet > jetVec_bxp1
std::vector< l1t::EGamma > egammaVec_bx0
#define LogTrace(id)
void setExternalDecision(unsigned int bit, bool val)
Set decision bits.
Definition: GlobalExtBlk.cc:52
int convertPhiToHW(double iphi, int steps)
Definition: Muon.h:16
virtual int pdgId() const =0
PDG identifier.
TLorentzVector genMet(const HepMC::GenEvent *all, double etamin=-9999., double etamax=9999.)
int convertEtaToHW(double ieta, double minEta, double maxEta, int steps)
edm::EDGetTokenT< reco::GenMETCollection > genMetToken
edm::EventID id() const
Definition: EventBase.h:59
tuple muons
Definition: patZpeak.py:38
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken
std::vector< l1t::Jet > jetVec_bxm2
std::vector< l1t::EtSum > etsumVec_bxm2
std::vector< l1t::Jet > jetVec_bx0
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity
tuple status
Definition: mps_update.py:57

Member Data Documentation

int l1t::GenToInputProducer::bxFirst_
private

Definition at line 87 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::bxLast_
private

Definition at line 88 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::counter_
private

Definition at line 110 of file GenToInputProducer.cc.

std::vector<l1t::EGamma> l1t::GenToInputProducer::egammaVec_bx0
private

Definition at line 119 of file GenToInputProducer.cc.

std::vector<l1t::EGamma> l1t::GenToInputProducer::egammaVec_bxm1
private

Definition at line 118 of file GenToInputProducer.cc.

std::vector<l1t::EGamma> l1t::GenToInputProducer::egammaVec_bxm2
private

Definition at line 117 of file GenToInputProducer.cc.

std::vector<l1t::EGamma> l1t::GenToInputProducer::egammaVec_bxp1
private

Definition at line 120 of file GenToInputProducer.cc.

double l1t::GenToInputProducer::egEtThreshold_
private

Definition at line 97 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::emptyBxEvt_
private

Definition at line 102 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::emptyBxTrailer_
private

Definition at line 101 of file GenToInputProducer.cc.

std::vector<l1t::EtSum> l1t::GenToInputProducer::etsumVec_bx0
private

Definition at line 134 of file GenToInputProducer.cc.

std::vector<l1t::EtSum> l1t::GenToInputProducer::etsumVec_bxm1
private

Definition at line 133 of file GenToInputProducer.cc.

std::vector<l1t::EtSum> l1t::GenToInputProducer::etsumVec_bxm2
private

Definition at line 132 of file GenToInputProducer.cc.

std::vector<l1t::EtSum> l1t::GenToInputProducer::etsumVec_bxp1
private

Definition at line 135 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::eventCnt_
private

Definition at line 103 of file GenToInputProducer.cc.

GlobalExtBlk l1t::GenToInputProducer::extCond_bx0
private

Definition at line 139 of file GenToInputProducer.cc.

GlobalExtBlk l1t::GenToInputProducer::extCond_bxm1
private

Definition at line 138 of file GenToInputProducer.cc.

GlobalExtBlk l1t::GenToInputProducer::extCond_bxm2
private

Definition at line 137 of file GenToInputProducer.cc.

GlobalExtBlk l1t::GenToInputProducer::extCond_bxp1
private

Definition at line 140 of file GenToInputProducer.cc.

edm::EDGetTokenT<reco::GenJetCollection> l1t::GenToInputProducer::genJetsToken
private

Definition at line 107 of file GenToInputProducer.cc.

edm::EDGetTokenT<reco::GenMETCollection> l1t::GenToInputProducer::genMetToken
private

Definition at line 108 of file GenToInputProducer.cc.

edm::EDGetTokenT<reco::GenParticleCollection> l1t::GenToInputProducer::genParticlesToken
private

Definition at line 106 of file GenToInputProducer.cc.

TRandom3* l1t::GenToInputProducer::gRandom
private

Definition at line 84 of file GenToInputProducer.cc.

double l1t::GenToInputProducer::jetEtThreshold_
private

Definition at line 95 of file GenToInputProducer.cc.

std::vector<l1t::Jet> l1t::GenToInputProducer::jetVec_bx0
private

Definition at line 129 of file GenToInputProducer.cc.

std::vector<l1t::Jet> l1t::GenToInputProducer::jetVec_bxm1
private

Definition at line 128 of file GenToInputProducer.cc.

std::vector<l1t::Jet> l1t::GenToInputProducer::jetVec_bxm2
private

Definition at line 127 of file GenToInputProducer.cc.

std::vector<l1t::Jet> l1t::GenToInputProducer::jetVec_bxp1
private

Definition at line 130 of file GenToInputProducer.cc.

unsigned long long l1t::GenToInputProducer::m_paramsCacheId
private

Definition at line 79 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::maxNumEGCands_
private

Definition at line 92 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::maxNumJetCands_
private

Definition at line 91 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::maxNumMuCands_
private

Definition at line 90 of file GenToInputProducer.cc.

int l1t::GenToInputProducer::maxNumTauCands_
private

Definition at line 93 of file GenToInputProducer.cc.

double l1t::GenToInputProducer::muEtThreshold_
private

Definition at line 98 of file GenToInputProducer.cc.

std::vector<l1t::Muon> l1t::GenToInputProducer::muonVec_bx0
private

Definition at line 114 of file GenToInputProducer.cc.

std::vector<l1t::Muon> l1t::GenToInputProducer::muonVec_bxm1
private

Definition at line 113 of file GenToInputProducer.cc.

std::vector<l1t::Muon> l1t::GenToInputProducer::muonVec_bxm2
private

Definition at line 112 of file GenToInputProducer.cc.

std::vector<l1t::Muon> l1t::GenToInputProducer::muonVec_bxp1
private

Definition at line 115 of file GenToInputProducer.cc.

double l1t::GenToInputProducer::tauEtThreshold_
private

Definition at line 96 of file GenToInputProducer.cc.

std::vector<l1t::Tau> l1t::GenToInputProducer::tauVec_bx0
private

Definition at line 124 of file GenToInputProducer.cc.

std::vector<l1t::Tau> l1t::GenToInputProducer::tauVec_bxm1
private

Definition at line 123 of file GenToInputProducer.cc.

std::vector<l1t::Tau> l1t::GenToInputProducer::tauVec_bxm2
private

Definition at line 122 of file GenToInputProducer.cc.

std::vector<l1t::Tau> l1t::GenToInputProducer::tauVec_bxp1
private

Definition at line 125 of file GenToInputProducer.cc.