CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
JetVertexAssociation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: JetVertexAssociation
4 // Class: JetVertexAssociation
5 //
13 //
14 // Original Author: Natalia Ilina
15 // Modified by Eduardo Luiggi
16 //
17 // Created: Tue Oct 31 10:52:41 CET 2006
18 //
19 //
20 
32 #include <memory>
33 #include <iostream>
34 #include <iomanip>
35 #include <cmath>
36 
37 
41 
44 
52 
56 
57 using namespace std;
58 using namespace reco;
59 namespace cms{
60 
61  JetVertexAssociation::JetVertexAssociation(const edm::ParameterSet& iConfig): m_algo(iConfig),
62  jet_algo(iConfig.getParameter<std::string>("JET_ALGO")),
63  track_algo(iConfig.getParameter<std::string>("TRACK_ALGO")),
64  vertex_algo(iConfig.getParameter<std::string>("VERTEX_ALGO")) {
65 
66 
67 
68  produces<ResultCollection1>("Var");
69  produces<ResultCollection2>("JetType");
70 
71 
72  }
73 
75 
77  iEvent.getByLabel(jet_algo, jets);
78 
80  iEvent.getByLabel(track_algo, tracks);
81 
83  iEvent.getByLabel(vertex_algo, vertexes);
84 
85  double SIGNAL_V_Z = 0.;
86  double SIGNAL_V_Z_ERROR = 0.;
87  double ptmax = -100.;
88 
89  VertexCollection::const_iterator vert = vertexes->begin ();
90  if(vertexes->size() > 0 ) {
91  for (; vert != vertexes->end (); vert++) {
92 
93  SIGNAL_V_Z = vert->z();
94  double pt = 0.;
95  reco::Vertex::trackRef_iterator tr = vert->tracks_begin();
96  for (; tr != vert->tracks_end(); tr++) pt += (*tr)->pt();
97  if( pt >= ptmax ){
98 
99  ptmax = pt;
100  SIGNAL_V_Z = vert->z();
101  SIGNAL_V_Z_ERROR = vert->zError();
102 
103  }
104 
105  }
106  }
107 
108  pair<double, bool> result;
109  std::auto_ptr<ResultCollection1> result1 (new ResultCollection1) ;
110  std::auto_ptr<ResultCollection2> result2 (new ResultCollection2) ;
111 
112  CaloJetCollection::const_iterator jet = jets->begin ();
113 
114  if(jets->size() > 0 ) {
115  for (; jet != jets->end (); jet++) {
116  result = m_algo.Main(*jet, tracks, SIGNAL_V_Z, SIGNAL_V_Z_ERROR);
117  result1->push_back(result.first);
118  result2->push_back(result.second);
119 
120  }
121  }
122 
123  iEvent.put(result1, "Var");
124  iEvent.put(result2, "JetType");
125 
126  }
127 }
std::pair< double, bool > Main(const reco::CaloJet &jet, edm::Handle< reco::TrackCollection > tracks, double SIGNAL_V_Z, double SIGNAL_V_Z_Error)
void produce(edm::Event &e, const edm::EventSetup &c)
std::vector< double > ResultCollection1
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
vector< PseudoJet > jets
tuple result
Definition: query.py:137
std::vector< bool > ResultCollection2
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
tuple tracks
Definition: testEve_cfg.py:39
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector&lt;TrackRef&gt;
Definition: Vertex.h:37