CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
V0Filter.cc
Go to the documentation of this file.
1 #include <cmath>
2 
3 #include <Math/GenVector/PxPyPzM4D.h>
4 
6 
11 
13 
14 using namespace reco;
15 
17  k0sMassWindow(params.getParameter<double>("k0sMassWindow"))
18 {
19 }
20 
21 bool
22 V0Filter::operator () (const reco::Track *const *tracks, unsigned int n) const
23 {
24  // only check for K0s for now
25 
26  if (n != 2)
27  return true;
28 
29  if (tracks[0]->charge() * tracks[1]->charge() > 0)
30  return true;
31 
32  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzM4D<double> > vec1;
33  ROOT::Math::LorentzVector<ROOT::Math::PxPyPzM4D<double> > vec2;
34 
35  vec1.SetPx(tracks[0]->px());
36  vec1.SetPy(tracks[0]->py());
37  vec1.SetPz(tracks[0]->pz());
38  vec1.SetM(ParticleMasses::piPlus);
39 
40  vec2.SetPx(tracks[1]->px());
41  vec2.SetPy(tracks[1]->py());
42  vec2.SetPz(tracks[1]->pz());
43  vec2.SetM(ParticleMasses::piPlus);
44 
45  double invariantMass = (vec1 + vec2).M();
46  if (std::abs(invariantMass - ParticleMasses::k0) < k0sMassWindow)
47  return false;
48 
49  return true;
50 }
51 
52 bool
53 V0Filter::operator () (const reco::TrackRef *tracks, unsigned int n) const
54 {
55  std::vector<const reco::Track*> trackPtrs(n);
56  for(unsigned int i = 0; i < n; i++)
57  trackPtrs[i] = &*tracks[i];
58 
59  return (*this)(&trackPtrs[0], n);
60 }
61 
62 bool
63 V0Filter::operator () (const std::vector<reco::CandidatePtr> & tracks) const
64 {
65  std::vector<const reco::Track*> trackPtrs(tracks.size());
66  for(unsigned int i = 0; i < tracks.size(); i++)
67  trackPtrs[i] = tracks[i]->bestTrack();
68 
69  return (*this)(&trackPtrs[0], tracks.size());
70 }
71 bool
72 V0Filter::operator () (const std::vector<const reco::Track *> & tracks) const
73 {
74  return (*this)(&tracks[0], tracks.size());
75 }
76 
77 
78 bool
79 V0Filter::operator () (const reco::Track *tracks, unsigned int n) const
80 {
81  std::vector<const reco::Track*> trackPtrs(n);
82  for(unsigned int i = 0; i < n; i++)
83  trackPtrs[i] = &tracks[i];
84 
85  return (*this)(&trackPtrs[0], n);
86 }
87 
const double piPlus
Definition: ParticleMasses.h:9
int i
Definition: DBlmapReader.cc:9
double k0sMassWindow
Definition: V0Filter.h:36
std::vector< double > vec1
Definition: HCALResponse.h:15
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
V0Filter(const edm::ParameterSet &params)
Definition: V0Filter.cc:16
tuple tracks
Definition: testEve_cfg.py:39
bool operator()(const reco::TrackRef *tracks, unsigned int n) const
Definition: V0Filter.cc:53
std::vector< vec1 > vec2
Definition: HCALResponse.h:16