CMS 3D CMS Logo

FastL1MuonProducer Class Reference

Description: Fast simulation producer for L1 muons. More...

#include <FastSimulation/Muons/plugins/FastL1MuonProducer.h>

Inheritance diagram for FastL1MuonProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 FastL1MuonProducer (const edm::ParameterSet &)
 ~FastL1MuonProducer ()

Private Types

typedef std::vector
< SimpleL1MuGMTCand * > 
FML1Muons
typedef std::vector
< l1extra::L1MuonParticle
L1ExtraCollection
typedef std::vector< L1MuGMTCandL1MuonCollection

Private Member Functions

virtual void beginJob (const edm::EventSetup &)
virtual void beginRun (edm::Run &run, const edm::EventSetup &es)
virtual void endJob ()
void loadL1Muons (L1MuonCollection &c, L1ExtraCollection &d, L1MuGMTReadoutCollection &e) const
virtual void produce (edm::Event &, const edm::EventSetup &)
void readParameters (const edm::ParameterSet &)
void reconstruct ()

Private Attributes

edm::ESHandle< CSCGeometrycscGeometry
edm::ESHandle< DTGeometrydtGeometry
FML1EfficiencyHandlermyL1EfficiencyHandler
FML1PtSmearermyL1PtSmearer
FML1Muons mySimpleL1MuonCands
L1ExtraCollection mySimpleL1MuonExtraCands
int nL1MuonTot
int nMuonTot
const RandomEnginerandom
edm::ESHandle< RPCGeometryrpcGeometry
edm::InputTag theCSCHits
edm::InputTag theDTHits
const L1MuTriggerPtScaletheMuPtScale
const L1MuTriggerScalestheMuScales
edm::InputTag theRPCHits
edm::InputTag theSimModule

Static Private Attributes

static double muonMassGeV_ = 0.105658369


Detailed Description

Description: Fast simulation producer for L1 muons.

L1MuGMTCand's obtained from a parameterization wich starts from the generated muons in the event

Definition at line 48 of file FastL1MuonProducer.h.


Member Typedef Documentation

typedef std::vector<SimpleL1MuGMTCand*> FastL1MuonProducer::FML1Muons [private]

Definition at line 59 of file FastL1MuonProducer.h.

typedef std::vector<l1extra::L1MuonParticle> FastL1MuonProducer::L1ExtraCollection [private]

Definition at line 61 of file FastL1MuonProducer.h.

typedef std::vector<L1MuGMTCand> FastL1MuonProducer::L1MuonCollection [private]

Definition at line 60 of file FastL1MuonProducer.h.


Constructor & Destructor Documentation

FastL1MuonProducer::FastL1MuonProducer ( const edm::ParameterSet iConfig  )  [explicit]

Definition at line 70 of file FastL1MuonProducer.cc.

References Exception, edm::ParameterSet::getParameter(), random, and readParameters().

00071 {
00072 
00073   readParameters(iConfig.getParameter<edm::ParameterSet>("MUONS"));
00074 
00075   //register your products
00076   produces<L1MuonCollection> ();
00077   produces<L1ExtraCollection> ();
00078   produces<L1MuGMTReadoutCollection>();
00079 
00080   // Initialize the random number generator service
00081   edm::Service<edm::RandomNumberGenerator> rng;
00082   if ( ! rng.isAvailable() ) {
00083     throw cms::Exception("Configuration") <<
00084       "ParamMuonProducer requires the RandomGeneratorService \n"
00085       "which is not present in the configuration file. \n"
00086       "You must add the service in the configuration file\n"
00087       "or remove the module that requires it.";
00088   }
00089 
00090   random = new RandomEngine(&(*rng));
00091 
00092 }

FastL1MuonProducer::~FastL1MuonProducer (  ) 

Definition at line 95 of file FastL1MuonProducer.cc.

References random.

00096 {
00097  
00098   // do anything here that needs to be done at destruction time
00099   // (e.g. close files, deallocate resources etc.)
00100   
00101   if ( random ) { 
00102     delete random;
00103   }
00104 }


Member Function Documentation

void FastL1MuonProducer::beginJob ( const edm::EventSetup es  )  [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 451 of file FastL1MuonProducer.cc.

References cscGeometry, dtGeometry, edm::EventSetup::get(), myL1EfficiencyHandler, myL1PtSmearer, mySimpleL1MuonCands, mySimpleL1MuonExtraCands, nL1MuonTot, nMuonTot, random, and rpcGeometry.

00452 {
00453 
00454   // Initialize
00455   nMuonTot = 0;
00456 
00457   nL1MuonTot = 0;
00458   mySimpleL1MuonCands.clear();
00459   mySimpleL1MuonExtraCands.clear();
00460   myL1EfficiencyHandler = new FML1EfficiencyHandler(random);
00461   myL1PtSmearer = new FML1PtSmearer(random);
00462 
00463 // Get the DT Geometry
00464   es.get<MuonGeometryRecord>().get(dtGeometry);
00465 // Get the CSC Geometry
00466   es.get<MuonGeometryRecord>().get(cscGeometry);
00467 // Get the RPC Geometry
00468   es.get<MuonGeometryRecord>().get(rpcGeometry);
00469 
00470 }

void FastL1MuonProducer::beginRun ( edm::Run run,
const edm::EventSetup es 
) [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 473 of file FastL1MuonProducer.cc.

References edm::EventSetup::get(), theMuPtScale, and theMuScales.

00474                                                        {
00475 
00476   // Read trigger scales
00477   edm::ESHandle< L1MuTriggerScales > muScales ;
00478   es.get< L1MuTriggerScalesRcd >().get( muScales ) ;
00479   theMuScales = &(*muScales);
00480 
00481   edm::ESHandle< L1MuTriggerPtScale > muPtScale ;
00482   es.get< L1MuTriggerPtScaleRcd >().get( muPtScale ) ;
00483   theMuPtScale = &(*muPtScale);
00484 
00485 }

void FastL1MuonProducer::endJob ( void   )  [private, virtual]

Reimplemented from edm::EDProducer.

Definition at line 489 of file FastL1MuonProducer.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), nL1MuonTot, and nMuonTot.

00489                            {
00490 
00491   std::cout << " ===> FastL1MuonProducer , final report." << std::endl;
00492   std::cout << " ===> Number of total -> L1 muons in the whole run : "
00493             <<   nMuonTot << " -> " << nL1MuonTot << std::endl;
00494 }

void FastL1MuonProducer::loadL1Muons ( L1MuonCollection c,
L1ExtraCollection d,
L1MuGMTReadoutCollection e 
) const [private]

Definition at line 305 of file FastL1MuonProducer.cc.

References L1MuGMTReadoutCollection::addRecord(), L1MuScale::getLowEdge(), L1MuScale::getPacked(), L1MuTriggerScales::getRegionalEtaScale(), mySimpleL1MuonCands, mySimpleL1MuonExtraCands, L1MuRegionalCand::setEtaValue(), L1MuGMTReadoutRecord::setGMTBrlCand(), L1MuGMTReadoutRecord::setGMTCand(), L1MuGMTReadoutRecord::setGMTFwdCand(), L1MuGMTReadoutRecord::setInputCand(), L1MuRegionalCand::setPhiValue(), L1MuRegionalCand::setPtValue(), and theMuScales.

Referenced by produce().

00308 {
00309 
00310   FML1Muons::const_iterator l1mu;
00311   L1ExtraCollection::const_iterator l1ex;
00312   L1MuGMTReadoutRecord rc = L1MuGMTReadoutRecord(0);
00313 
00314   // Add L1 muons:
00315   // int nmuons = mySimpleL1MuonCands.size();
00316   for (l1mu=mySimpleL1MuonCands.begin();l1mu!=mySimpleL1MuonCands.end();++l1mu) {
00317     c.push_back(*(*l1mu));
00318   }
00319   
00320 // Add extra particles.
00321   int nr = 0; 
00322   int nrb = 0; 
00323   int nrf = 0;
00324   for (l1ex=mySimpleL1MuonExtraCands.begin();l1ex!=mySimpleL1MuonExtraCands.end();++l1ex) {
00325 
00326     d.push_back(*l1ex);
00327     
00328     L1MuGMTExtendedCand aMuon(l1ex->gmtMuonCand());
00329 
00330     rc.setGMTCand(nr,aMuon);
00331     // Find the regional eta index
00332     double etaPilePoil = mySimpleL1MuonCands[nr]->getMomentum().Eta();
00333 
00334     nr++;
00335     unsigned typeRPC=0;
00336     unsigned typeDTCSC=0;
00337     unsigned RPCIndex=0;
00338     unsigned DTCSCIndex=0;
00339     unsigned RPCRegionalEtaIndex=0;
00340     unsigned DTCSCRegionalEtaIndex=0;
00341     float etaRPCValue=-10.;
00342     float etaDTCSCValue=-10.;
00343     // Forward muons
00344     if ( aMuon.isFwd() ) { 
00345 
00346       rc.setGMTFwdCand(nrf,aMuon);
00347 
00348       // CSC
00349       typeDTCSC = 2;
00350       DTCSCIndex = 8+nrf;
00351       DTCSCRegionalEtaIndex = theMuScales->getRegionalEtaScale(2)->getPacked(etaPilePoil); 
00352       etaDTCSCValue = theMuScales->getRegionalEtaScale(2)->getLowEdge(DTCSCRegionalEtaIndex);
00353       float etaDTCSCValue2 = theMuScales->getRegionalEtaScale(2)->getLowEdge(DTCSCRegionalEtaIndex+1);
00354       if ( fabs(etaDTCSCValue2-etaPilePoil) < fabs(etaDTCSCValue-etaPilePoil) ) { 
00355         etaDTCSCValue = etaDTCSCValue2;
00356         ++DTCSCRegionalEtaIndex;
00357       }
00358       // RPC (limited to the RPC acceptance)
00359       if ( fabs(etaPilePoil) < 2.1 ) { 
00360         RPCIndex = 12+nrf;
00361         typeRPC = 3;
00362         RPCRegionalEtaIndex = theMuScales->getRegionalEtaScale(3)->getPacked(etaPilePoil); 
00363         etaRPCValue = theMuScales->getRegionalEtaScale(3)->getLowEdge(RPCRegionalEtaIndex);
00364         float etaRPCValue2 = theMuScales->getRegionalEtaScale(3)->getLowEdge(RPCRegionalEtaIndex+1);
00365         if ( fabs(etaRPCValue2-etaPilePoil) < fabs(etaRPCValue-etaPilePoil) ) { 
00366           etaRPCValue = etaRPCValue2;
00367           ++RPCRegionalEtaIndex;
00368         }
00369       }
00370       // Next muon
00371       nrf++;
00372 
00373     // Barrel muons
00374     } else { 
00375 
00376       rc.setGMTBrlCand(nrb,aMuon);
00377 
00378       // DT
00379       typeDTCSC = 0;
00380       DTCSCIndex = 0+nrb;
00381       DTCSCRegionalEtaIndex = theMuScales->getRegionalEtaScale(0)->getPacked(etaPilePoil); 
00382       etaDTCSCValue = theMuScales->getRegionalEtaScale(0)->getLowEdge(DTCSCRegionalEtaIndex);
00383       float etaDTCSCValue2 = theMuScales->getRegionalEtaScale(0)->getLowEdge(DTCSCRegionalEtaIndex+1);
00384       if ( fabs(etaDTCSCValue2-etaPilePoil) < fabs(etaDTCSCValue-etaPilePoil) ) { 
00385         etaDTCSCValue = etaDTCSCValue2;
00386         ++DTCSCRegionalEtaIndex;
00387       }
00388 
00389       // RPC
00390       typeRPC = 1;
00391       RPCIndex = 4+nrb;
00392       RPCRegionalEtaIndex = theMuScales->getRegionalEtaScale(1)->getPacked(etaPilePoil); 
00393       etaRPCValue = theMuScales->getRegionalEtaScale(1)->getLowEdge(RPCRegionalEtaIndex);
00394       float etaRPCValue2 = theMuScales->getRegionalEtaScale(1)->getLowEdge(RPCRegionalEtaIndex+1);
00395       if ( fabs(etaRPCValue2-etaPilePoil) < fabs(etaRPCValue-etaPilePoil) ) { 
00396         etaRPCValue = etaRPCValue2;
00397         ++RPCRegionalEtaIndex;
00398       }
00399 
00400       // Next muon
00401       nrb++;
00402 
00403     }
00404 
00405     // Add a muon regional candidate - first DT/CSC
00406     L1MuRegionalCand regionalMuonDTCSC = 
00407       L1MuRegionalCand(typeDTCSC,
00408                        aMuon.phiIndex(),
00409                        DTCSCRegionalEtaIndex,
00410                        aMuon.ptIndex(),
00411                        (1-aMuon.charge())/2,
00412                        aMuon.charge_valid(),
00413                        1,   // FineHalo
00414                        aMuon.quality(),
00415                        aMuon.bx());
00416     regionalMuonDTCSC.setPhiValue(aMuon.phiValue());
00417     regionalMuonDTCSC.setEtaValue(etaDTCSCValue);
00418     regionalMuonDTCSC.setPtValue(aMuon.ptValue());    
00419     
00420     rc.setInputCand(DTCSCIndex,regionalMuonDTCSC);
00421  
00422     // Then RPC (if in RPC acceptance)
00423     if ( fabs(etaPilePoil) < 2.1 ) { 
00424       L1MuRegionalCand regionalMuonRPC = 
00425         L1MuRegionalCand(typeRPC,
00426                          aMuon.phiIndex(),
00427                          RPCRegionalEtaIndex,
00428                          aMuon.ptIndex(),
00429                          (1-aMuon.charge())/2,
00430                          aMuon.charge_valid(),
00431                          0,   // FineHalo
00432                          aMuon.quality(),
00433                          aMuon.bx());
00434       regionalMuonRPC.setPhiValue(aMuon.phiValue());
00435       regionalMuonRPC.setEtaValue(etaRPCValue);
00436       regionalMuonRPC.setPtValue(aMuon.ptValue());
00437 
00438       rc.setInputCand(RPCIndex,regionalMuonRPC);
00439 
00440     }
00441 
00442   }
00443 
00444   // Update the event
00445   e.addRecord(rc);
00446 
00447 }

void FastL1MuonProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDProducer.

Definition at line 114 of file FastL1MuonProducer.cc.

References SimpleL1MuGMTCand::charge(), GenMuonPlsPt100GeV_cfg::cout, cscGeometry, dtGeometry, e, lat::endl(), eta, PV3DBase< T, PVType, FrameType >::eta(), L1MuGMTCand::etaValue(), edm::Event::getByLabel(), L1MuTriggerScales::getGMTEtaScale(), L1MuScale::getLowEdge(), L1MuScale::getPacked(), L1MuTriggerScales::getPhiScale(), L1MuTriggerPtScale::getPtScale(), L1MuGMTExtendedCand::isFwd(), FML1EfficiencyHandler::kill(), loadL1Muons(), CoreSimTrack::momentum(), muonMassGeV_, myL1EfficiencyHandler, myL1PtSmearer, mySimpleL1MuonCands, mySimpleL1MuonExtraCands, nL1MuonTot, nMuonTot, PV3DBase< T, PVType, FrameType >::phi(), phi, L1MuGMTCand::phiValue(), L1MuGMTCand::ptValue(), edm::Event::put(), rpcGeometry, L1MuGMTExtendedCand::setDTCSCIndex(), SimpleL1MuGMTCand::setRank(), L1MuGMTExtendedCand::setRPCBit(), L1MuGMTExtendedCand::setRPCIndex(), FML1PtSmearer::smear(), theCSCHits, theDTHits, theMuPtScale, theMuScales, theRPCHits, theSimModule, CoreSimTrack::trackId(), and CoreSimTrack::type().

00115 {
00116   using namespace edm;
00117 
00118   Handle<std::vector<SimTrack> > simMuons;
00119   iEvent.getByLabel(theSimModule,simMuons);
00120   unsigned nmuons = simMuons->size();
00121   //  Handle<std::vector<SimVertex> > simVertices;
00122   //  iEvent.getByLabel(theSimModuleLabel_,simVertices);
00123 
00124   Handle<PSimHitContainer> muonDTHits;
00125   iEvent.getByLabel(theDTHits,muonDTHits);
00126   Handle<PSimHitContainer> muonCSCHits;
00127   iEvent.getByLabel(theCSCHits,muonCSCHits);
00128   Handle<PSimHitContainer> muonRPCHits;
00129   iEvent.getByLabel(theRPCHits,muonRPCHits);
00130 
00131 
00132 //
00133 // Loop over generated muons and reconstruct L1, L3 and Global muons
00134 //
00135   
00136   int nMu = 0;
00137   mySimpleL1MuonCands.clear();
00138   mySimpleL1MuonExtraCands.clear();
00139 
00140   std::multimap<float,SimpleL1MuGMTCand*>  mySimpleL1MuonCandsTemp;
00141 
00142   for( unsigned fsimi=0; fsimi < nmuons; ++fsimi) {
00143     // The sim track can be a muon or a decaying hadron
00144     const SimTrack& mySimTrack = (*simMuons)[fsimi];
00145     // Keep only the muons at L1 (either primary or secondary)
00146     int pid = mySimTrack.type();        
00147     if ( fabs(pid) != 13 ) continue;
00148 
00149     // Check whether there are hits in DT/CSC/RPC,
00150     // and keep for the L1 mu the position of first such hit:
00151     bool hasPSimHits = false;
00152     GlobalPoint glbPosition;
00153     PSimHitContainer::const_iterator simDTHit=muonDTHits->begin();
00154     PSimHitContainer::const_iterator endDTHit=muonDTHits->end();
00155     for ( ; simDTHit!=endDTHit; ++simDTHit) {
00156       if ( simDTHit->trackId() == mySimTrack.trackId() ) {
00157         glbPosition = dtGeometry->idToDet(simDTHit->detUnitId())->surface().toGlobal(simDTHit->localPosition());
00158         hasPSimHits = true;
00159         break;
00160       }
00161     }
00162 
00163     if (! hasPSimHits) {
00164       PSimHitContainer::const_iterator simCSCHit=muonCSCHits->begin();
00165       PSimHitContainer::const_iterator endCSCHit=muonCSCHits->end();
00166       for ( ; simCSCHit!=endCSCHit; ++simCSCHit) {
00167         if ( simCSCHit->trackId() == mySimTrack.trackId() ) {
00168           glbPosition = cscGeometry->idToDet(simCSCHit->detUnitId())->surface().toGlobal(simCSCHit->localPosition());
00169           hasPSimHits = true;
00170           break;
00171         }
00172       }
00173     }
00174     if (! hasPSimHits) {
00175       PSimHitContainer::const_iterator simRPCHit=muonRPCHits->begin();
00176       PSimHitContainer::const_iterator endRPCHit=muonRPCHits->end();
00177       for ( ; simRPCHit!=endRPCHit; ++simRPCHit) {
00178         if ( simRPCHit->trackId() == mySimTrack.trackId() ) {
00179           glbPosition = rpcGeometry->idToDet(simRPCHit->detUnitId())->surface().toGlobal(simRPCHit->localPosition());
00180           hasPSimHits = true;
00181           break;
00182         }
00183       }
00184     }
00185 
00186     // *** Reconstruct parameterized muons starting from undecayed simulated muons
00187     if (hasPSimHits) {
00188 
00189       nMu++;
00190 
00191       //
00192       // Now L1 parametrization
00193       //
00194       double pT = mySimTrack.momentum().pt();
00195       double eta = glbPosition.eta();
00196       // Avoid L1MuScales complains if |eta|>2.4:
00197       if (eta > 2.4) eta = 2.4-1e-6; else if (eta < -2.4) eta = -2.4+1e-6;
00198       double phi = glbPosition.phi();
00199       if ( phi < 0. ) phi = 2* M_PI + phi;
00200 
00201       unsigned etaIndex = theMuScales->getGMTEtaScale()->getPacked(eta);
00202       unsigned phiIndex = theMuScales->getPhiScale()->getPacked(phi);
00203       unsigned pTIndex = theMuPtScale->getPtScale()->getPacked(pT);
00204       float etaValue = theMuScales->getGMTEtaScale()->getLowEdge(etaIndex);
00205       float phiValue = theMuScales->getPhiScale()->getLowEdge(phiIndex);
00206       float pTValue = theMuPtScale->getPtScale()->getLowEdge(pTIndex) + 1e-6;
00207       float etaValue2 = theMuScales->getGMTEtaScale()->getLowEdge(etaIndex+1);
00208       float phiValue2 = theMuScales->getPhiScale()->getLowEdge(phiIndex+1);
00209       float pTValue2 = theMuPtScale->getPtScale()->getLowEdge(pTIndex+1) + 1e-6;
00210      
00211       // Choose the closest index. (Not sure it is what is to be done)
00212       if ( fabs(etaValue2 - eta) < fabs(etaValue-eta) ) { 
00213         etaValue = etaValue2;
00214         ++etaIndex;
00215       }
00216       if ( fabs(phiValue2-phi) < fabs(phiValue-phi) ) { 
00217         phiValue = phiValue2;
00218         ++phiIndex;
00219       }
00220       if ( fabs(pTValue2-pT) < fabs(pTValue-pT) ) { 
00221         pTValue = pTValue2;
00222         ++pTIndex;
00223       }
00224 
00225       SimpleL1MuGMTCand * thisL1MuonCand = 
00226         new SimpleL1MuGMTCand(&mySimTrack,
00227                               etaIndex, phiIndex, pTIndex,
00228                               etaValue,phiValue,pTValue);
00229       bool hasL1 = myL1EfficiencyHandler->kill(thisL1MuonCand);
00230       if (hasL1) {
00231         bool status2 = myL1PtSmearer->smear(thisL1MuonCand);
00232         if (!status2) { std::cout << "Pt smearing of L1 muon went wrong!!" << std::endl; }
00233         if (status2) {
00234           mySimpleL1MuonCandsTemp.insert(
00235                std::pair<float,SimpleL1MuGMTCand*>(thisL1MuonCand->ptValue(),thisL1MuonCand));
00236         }
00237         else {
00238           delete thisL1MuonCand;
00239         }
00240       }
00241 
00242     }
00243 
00244   }
00245   
00246   // kill low ranked L1 muons, and fill L1extra muons -->
00247   std::multimap<float,SimpleL1MuGMTCand*>::const_reverse_iterator L1mu = mySimpleL1MuonCandsTemp.rbegin();
00248   std::multimap<float,SimpleL1MuGMTCand*>::const_reverse_iterator lastL1mu = mySimpleL1MuonCandsTemp.rend();
00249   unsigned rank=0;
00250   unsigned rankb=0;
00251   unsigned rankf=0;
00252   for ( ; L1mu!=lastL1mu; ++L1mu ) {
00253     SimpleL1MuGMTCand* theMuon = L1mu->second;
00254     theMuon->setRPCBit(0);
00255     ++rank;
00256     bool addMu = false;
00257     if  (theMuon->isFwd() ) { 
00258       if ( rankf < 4 ) addMu = true;
00259       theMuon->setRPCIndex(rankf);
00260       theMuon->setDTCSCIndex(rankf);
00261       rankf++;
00262     } else {  
00263       if ( rankb < 4 ) addMu = true;
00264       theMuon->setRPCIndex(rankb);
00265       theMuon->setDTCSCIndex(rankb);
00266       rankb++;
00267     } 
00268 
00269     if ( addMu ) {
00270       theMuon->setRank(rank);
00271       mySimpleL1MuonCands.push_back(theMuon);
00272       double pt = theMuon->ptValue() + 1.e-6 ;
00273       double eta = theMuon->etaValue();
00274       double phi = theMuon->phiValue();
00275       math::PtEtaPhiMLorentzVector PtEtaPhiMP4(pt,eta,phi,muonMassGeV_);
00276       math::XYZTLorentzVector myL1P4(PtEtaPhiMP4);
00277       // math::PtEtaPhiMLorentzVector myL1P4(pt,eta,phi,muonMassGeV_);
00278       mySimpleL1MuonExtraCands.push_back( l1extra::L1MuonParticle( theMuon->charge(), myL1P4, *theMuon ) );
00279     }
00280     else {
00281       theMuon->setRank(0);
00282     }
00283 
00284   }
00285 
00286 // end killing of low ranked L1 muons -->
00287 
00288 
00289   int nL1 =  mySimpleL1MuonCands.size();
00290   nMuonTot   += nMu;
00291   nL1MuonTot += nL1;
00292 
00293   std::auto_ptr<L1MuonCollection> l1Out(new L1MuonCollection);
00294   std::auto_ptr<L1ExtraCollection> l1ExtraOut(new L1ExtraCollection);
00295   std::auto_ptr<L1MuGMTReadoutCollection> l1ReadOut(new L1MuGMTReadoutCollection(1));
00296   
00297   loadL1Muons(*l1Out,*l1ExtraOut,*l1ReadOut);
00298   iEvent.put(l1Out);
00299   iEvent.put(l1ExtraOut);
00300   iEvent.put(l1ReadOut);
00301 
00302 }

void FastL1MuonProducer::readParameters ( const edm::ParameterSet fastMuons  )  [private]

Definition at line 497 of file FastL1MuonProducer.cc.

References edm::ParameterSet::getParameter(), theCSCHits, theDTHits, theRPCHits, and theSimModule.

Referenced by FastL1MuonProducer().

00497                                                                         {
00498   // Muons
00499   theSimModule = fastMuons.getParameter<edm::InputTag>("simModule");
00500   theDTHits = fastMuons.getParameter<edm::InputTag>("dtSimHits");
00501   theCSCHits = fastMuons.getParameter<edm::InputTag>("cscSimHits");
00502   theRPCHits = fastMuons.getParameter<edm::InputTag>("rpcSimHits");
00503 
00504 }

void FastL1MuonProducer::reconstruct (  )  [private]


Member Data Documentation

edm::ESHandle<CSCGeometry> FastL1MuonProducer::cscGeometry [private]

Definition at line 80 of file FastL1MuonProducer.h.

Referenced by beginJob(), and produce().

edm::ESHandle<DTGeometry> FastL1MuonProducer::dtGeometry [private]

Definition at line 79 of file FastL1MuonProducer.h.

Referenced by beginJob(), and produce().

double FastL1MuonProducer::muonMassGeV_ = 0.105658369 [static, private]

Definition at line 99 of file FastL1MuonProducer.h.

Referenced by produce().

FML1EfficiencyHandler* FastL1MuonProducer::myL1EfficiencyHandler [private]

Definition at line 76 of file FastL1MuonProducer.h.

Referenced by beginJob(), and produce().

FML1PtSmearer* FastL1MuonProducer::myL1PtSmearer [private]

Definition at line 77 of file FastL1MuonProducer.h.

Referenced by beginJob(), and produce().

FML1Muons FastL1MuonProducer::mySimpleL1MuonCands [private]

Definition at line 74 of file FastL1MuonProducer.h.

Referenced by beginJob(), loadL1Muons(), and produce().

L1ExtraCollection FastL1MuonProducer::mySimpleL1MuonExtraCands [private]

Definition at line 75 of file FastL1MuonProducer.h.

Referenced by beginJob(), loadL1Muons(), and produce().

int FastL1MuonProducer::nL1MuonTot [private]

Definition at line 97 of file FastL1MuonProducer.h.

Referenced by beginJob(), endJob(), and produce().

int FastL1MuonProducer::nMuonTot [private]

Definition at line 97 of file FastL1MuonProducer.h.

Referenced by beginJob(), endJob(), and produce().

const RandomEngine* FastL1MuonProducer::random [private]

Definition at line 57 of file FastL1MuonProducer.h.

Referenced by beginJob(), FastL1MuonProducer(), and ~FastL1MuonProducer().

edm::ESHandle<RPCGeometry> FastL1MuonProducer::rpcGeometry [private]

Definition at line 81 of file FastL1MuonProducer.h.

Referenced by beginJob(), and produce().

edm::InputTag FastL1MuonProducer::theCSCHits [private]

Definition at line 86 of file FastL1MuonProducer.h.

Referenced by produce(), and readParameters().

edm::InputTag FastL1MuonProducer::theDTHits [private]

Definition at line 85 of file FastL1MuonProducer.h.

Referenced by produce(), and readParameters().

const L1MuTriggerPtScale* FastL1MuonProducer::theMuPtScale [private]

Definition at line 94 of file FastL1MuonProducer.h.

Referenced by beginRun(), and produce().

const L1MuTriggerScales* FastL1MuonProducer::theMuScales [private]

Definition at line 91 of file FastL1MuonProducer.h.

Referenced by beginRun(), loadL1Muons(), and produce().

edm::InputTag FastL1MuonProducer::theRPCHits [private]

Definition at line 87 of file FastL1MuonProducer.h.

Referenced by produce(), and readParameters().

edm::InputTag FastL1MuonProducer::theSimModule [private]

Definition at line 84 of file FastL1MuonProducer.h.

Referenced by produce(), and readParameters().


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