test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HLTL1TMuonSelector.cc
Go to the documentation of this file.
1 //-------------------------------------------------
2 //
13 //
14 //--------------------------------------------------
15 
16 // Class Header
18 
19 
20 // Framework
26 
27 using namespace std;
28 using namespace edm;
29 using namespace l1t;
30 
31 // constructors
33  theSource(iConfig.getParameter<InputTag>("InputObjects")),
34  theL1MinPt(iConfig.getParameter<double>("L1MinPt")),
35  theL1MaxEta(iConfig.getParameter<double>("L1MaxEta")),
36  theL1MinQuality(iConfig.getParameter<unsigned int>("L1MinQuality")),
37  centralBxOnly_( iConfig.getParameter<bool>("CentralBxOnly") )
38 {
39  muCollToken_ = consumes<MuonBxCollection>(theSource);
40 
41  produces<MuonBxCollection>();
42 }
43 
44 // destructor
46 }
47 
48 void
51  desc.add<edm::InputTag>("InputObjects",edm::InputTag("hltGmtStage2Digis"));
52  desc.add<double>("L1MinPt",-1.);
53  desc.add<double>("L1MaxEta",5.0);
54  desc.add<unsigned int>("L1MinQuality",0);
55  desc.add<bool>("CentralBxOnly", true);
56  descriptions.add("hltL1TMuonSelector",desc);
57 }
58 
60 {
61  const std::string metname = "Muon|RecoMuon|HLTL1TMuonSelector";
62 
63  unique_ptr<MuonBxCollection> output(new MuonBxCollection());
64 
65  // Muon particles
67  iEvent.getByToken(muCollToken_, muColl);
68  LogTrace(metname) << "Number of muons " << muColl->size() << endl;
69 
70  for (int ibx = muColl->getFirstBX(); ibx <= muColl->getLastBX(); ++ibx) {
71  if (centralBxOnly_ && (ibx != 0)) continue;
72  for (auto it = muColl->begin(ibx); it != muColl->end(ibx); it++){
73 
74  unsigned int quality = it->hwQual();
75  int valid_charge = it->hwChargeValid();
76 
77  float pt = it->pt();
78  float eta = it->eta();
79  float theta = 2*atan(exp(-eta));
80  float phi = it->phi();
81  int charge = it->charge();
82  // Set charge=0 for the time being if the valid charge bit is zero
83  if (!valid_charge) charge = 0;
84 
85  if ( pt < theL1MinPt || fabs(eta) > theL1MaxEta ) continue;
86 
87  LogTrace(metname) << "L1 Muon Found";
88  LogTrace(metname) << "Pt = " << pt << " GeV/c";
89  LogTrace(metname) << "eta = " << eta;
90  LogTrace(metname) << "theta = " << theta << " rad";
91  LogTrace(metname) << "phi = " << phi << " rad";
92  LogTrace(metname) << "charge = " << charge;
93 
94  if ( quality <= theL1MinQuality ) continue;
95  LogTrace(metname) << "quality = "<< quality;
96 
97  output->push_back( ibx, *it);
98  }
99  }
100 
101 
102  iEvent.put(std::move(output));
103 }
104 
HLTL1TMuonSelector(const edm::ParameterSet &)
Constructor.
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
const std::string metname
Geom::Theta< T > theta() const
const unsigned theL1MinQuality
edm::InputTag theSource
edm::EDGetTokenT< l1t::MuonBxCollection > muCollToken_
int iEvent
Definition: GenABIO.cc:230
def move
Definition: eostools.py:510
~HLTL1TMuonSelector()
Destructor.
ParameterDescriptionBase * add(U const &iLabel, T const &value)
#define LogTrace(id)
BXVector< Muon > MuonBxCollection
Definition: Muon.h:10
virtual void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool centralBxOnly_
use central bx only muons
const double theL1MaxEta