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 Attributes
HLTDisplacedmumuVtxProducer Class Reference

#include <HLTDisplacedmumuVtxProducer.h>

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

Public Member Functions

virtual void beginJob ()
 
virtual void endJob ()
 
 HLTDisplacedmumuVtxProducer (const edm::ParameterSet &)
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 
 ~HLTDisplacedmumuVtxProducer ()
 
- 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 Attributes

int chargeOpt_
 
double maxEta_
 
double maxInvMass_
 
double minInvMass_
 
double minPt_
 
double minPtPair_
 
edm::InputTag src_
 

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)
 
- 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 24 of file HLTDisplacedmumuVtxProducer.h.

Constructor & Destructor Documentation

HLTDisplacedmumuVtxProducer::HLTDisplacedmumuVtxProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 33 of file HLTDisplacedmumuVtxProducer.cc.

33  :
34  src_ (iConfig.getParameter<edm::InputTag>("Src")),
35  maxEta_ (iConfig.getParameter<double>("MaxEta")),
36  minPt_ (iConfig.getParameter<double>("MinPt")),
37  minPtPair_ (iConfig.getParameter<double>("MinPtPair")),
38  minInvMass_ (iConfig.getParameter<double>("MinInvMass")),
39  maxInvMass_ (iConfig.getParameter<double>("MaxInvMass")),
40  chargeOpt_ (iConfig.getParameter<int>("ChargeOpt"))
41 {
42  produces<VertexCollection>();
43 }
T getParameter(std::string const &) const
HLTDisplacedmumuVtxProducer::~HLTDisplacedmumuVtxProducer ( )

Definition at line 46 of file HLTDisplacedmumuVtxProducer.cc.

47 {
48 
49 }

Member Function Documentation

void HLTDisplacedmumuVtxProducer::beginJob ( void  )
virtual

Reimplemented from edm::EDProducer.

Definition at line 53 of file HLTDisplacedmumuVtxProducer.cc.

54 {
55 
56 }
void HLTDisplacedmumuVtxProducer::endJob ( void  )
virtual

Reimplemented from edm::EDProducer.

Definition at line 59 of file HLTDisplacedmumuVtxProducer.cc.

60 {
61 
62 }
void HLTDisplacedmumuVtxProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 65 of file HLTDisplacedmumuVtxProducer.cc.

References abs, chargeOpt_, edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), TransientVertex::isValid(), LogDebug, maxEta_, maxInvMass_, minInvMass_, minPt_, minPtPair_, L1TEmulatorMonitor_cff::p, p1, p2, edm::Event::put(), mathSSE::sqrt(), src_, KalmanVertexFitter::vertex(), and GoodVertex_cfg::vertexCollection.

66 {
67  double const MuMass = 0.106;
68  double const MuMass2 = MuMass*MuMass;
69 
70 
71  // get hold of muon trks
73  iEvent.getByLabel (src_,mucands);
74 
75  //get the transient track builder:
77  iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",theB);
78 
79  std::auto_ptr<VertexCollection> vertexCollection(new VertexCollection());
80 
81  // look at all mucands, check cuts and make vertices
82  double e1,e2;
84 
85  RecoChargedCandidateCollection::const_iterator cand1;
86  RecoChargedCandidateCollection::const_iterator cand2;
87  for (cand1=mucands->begin(); cand1!=mucands->end(); cand1++) {
88  TrackRef tk1 = cand1->get<TrackRef>();
89 
90  LogDebug("HLTDisplacedMumuFilter") << " 1st muon in loop: q*pt= " << tk1->charge()*tk1->pt() << ", eta= " << tk1->eta() << ", hits= " << tk1->numberOfValidHits();
91 
92  // cuts
93  if (fabs(tk1->eta())>maxEta_) continue;
94  if (tk1->pt() < minPt_) continue;
95 
96  cand2 = cand1; cand2++;
97  for (; cand2!=mucands->end(); cand2++) {
98  TrackRef tk2 = cand2->get<TrackRef>();
99 
100  // eta cut
101  LogDebug("HLTMuonDimuonFilter") << " 2nd muon in loop: q*pt= " << tk2->charge()*tk2->pt() << ", eta= " << tk2->eta() << ", hits= " << tk2->numberOfValidHits() << ", d0= " << tk2->d0();
102 
103  // cuts
104  if (fabs(tk2->eta())>maxEta_) continue;
105  if (tk2->pt() < minPt_) continue;
106 
107  // opposite sign or same sign
108  if (chargeOpt_<0) {
109  if (tk1->charge()*tk2->charge()>0) continue;
110  } else if (chargeOpt_>0) {
111  if (tk1->charge()*tk2->charge()<0) continue;
112  }
113 
114  // Combined dimuon system
115  e1 = sqrt(tk1->momentum().Mag2()+MuMass2);
116  e2 = sqrt(tk2->momentum().Mag2()+MuMass2);
117  p1 = Particle::LorentzVector(tk1->px(),tk1->py(),tk1->pz(),e1);
118  p2 = Particle::LorentzVector(tk2->px(),tk2->py(),tk2->pz(),e2);
119  p = p1+p2;
120 
121 
122  if (p.pt()<minPtPair_) continue;
123 
124  double invmass = abs(p.mass());
125  LogDebug("HLTDisplacedMumuFilter") << " ... 1-2 invmass= " << invmass;
126 
127  if (invmass<minInvMass_) continue;
128  if (invmass>maxInvMass_) continue;
129 
130  // do the vertex fit
131  vector<TransientTrack> t_tks;
132  TransientTrack ttkp1 = (*theB).build(&tk1);
133  TransientTrack ttkp2 = (*theB).build(&tk2);
134  t_tks.push_back(ttkp1);
135  t_tks.push_back(ttkp2);
136 
137 
138  if (t_tks.size()!=2) continue;
139 
140  KalmanVertexFitter kvf;
141  TransientVertex tv = kvf.vertex(t_tks);
142 
143  if (!tv.isValid()) continue;
144 
145  Vertex vertex = tv;
146 
147  // put vertex in the event
148  vertexCollection->push_back(vertex);
149  }
150  }
151  iEvent.put(vertexCollection);
152 }
#define LogDebug(id)
virtual CachingVertex< 5 > vertex(const std::vector< reco::TransientTrack > &tracks) const
#define abs(x)
Definition: mlp_lapack.h:159
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
tuple vertexCollection
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
T sqrt(T t)
Definition: SSEVec.h:28
double p2[4]
Definition: TauolaWrapper.h:90
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
const T & get() const
Definition: EventSetup.h:55
double p1[4]
Definition: TauolaWrapper.h:89
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:241
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:26
bool isValid() const
math::PtEtaPhiELorentzVectorF LorentzVector

Member Data Documentation

int HLTDisplacedmumuVtxProducer::chargeOpt_
private

Definition at line 40 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

double HLTDisplacedmumuVtxProducer::maxEta_
private

Definition at line 35 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

double HLTDisplacedmumuVtxProducer::maxInvMass_
private

Definition at line 39 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

double HLTDisplacedmumuVtxProducer::minInvMass_
private

Definition at line 38 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

double HLTDisplacedmumuVtxProducer::minPt_
private

Definition at line 36 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

double HLTDisplacedmumuVtxProducer::minPtPair_
private

Definition at line 37 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().

edm::InputTag HLTDisplacedmumuVtxProducer::src_
private

Definition at line 34 of file HLTDisplacedmumuVtxProducer.h.

Referenced by produce().