ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/algomez/GenAnalyzer/src/GenAnalyzer.cc
Revision: 1.2
Committed: Wed Jun 19 02:42:01 2013 UTC (11 years, 10 months ago) by algomez
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +54 -34 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 // -*- C++ -*-
2 //
3 // Package: GenAnalyzer
4 // Class: GenAnalyzer
5 //
6 /**\class GenAnalyzer GenAnalyzer.cc UserCode/GenAnalyzer/src/GenAnalyzer.cc
7
8 Description: [one line class summary]
9
10 Implementation:
11 [Notes on implementation]
12 */
13 //
14 // Original Author: Alejandro Gomez
15 // Created: Mon May 20 14:38:03 CDT 2013
16 // $Id$
17 //
18 //
19
20
21 // system include files
22 #include <memory>
23 #include <vector>
24
25 // user include files
26 #include "FWCore/Framework/interface/Frameworkfwd.h"
27 #include "FWCore/Framework/interface/EDAnalyzer.h"
28
29 #include "FWCore/Framework/interface/Event.h"
30 #include "FWCore/Framework/interface/MakerMacros.h"
31 #include "DataFormats/FWLite/interface/Handle.h"
32
33 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
34 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
35
36 #include "DataFormats/Candidate/interface/Candidate.h"
37 #include "DataFormats/Candidate/interface/CandidateFwd.h"
38 #include "DataFormats/Common/interface/Ref.h"
39
40 #include "FWCore/ServiceRegistry/interface/Service.h"
41 #include "CommonTools/UtilAlgos/interface/TFileService.h"
42
43 #include "FWCore/Utilities/interface/InputTag.h"
44 #include "FWCore/ParameterSet/interface/ParameterSet.h"
45 #include "DataFormats/Math/interface/LorentzVector.h"
46 #include "DataFormats/Math/interface/Vector3D.h"
47
48 #include "TLorentzVector.h"
49 #include "TVector3.h"
50 #include "TH1D.h"
51 //
52 // class declaration
53 //
54
55 class GenAnalyzer : public edm::EDAnalyzer {
56 public:
57 explicit GenAnalyzer(const edm::ParameterSet&);
58 ~GenAnalyzer();
59
60
61 private:
62 virtual void beginJob() ;
63 virtual void analyze(const edm::Event&, const edm::EventSetup&);
64 virtual void endJob() ;
65
66 // ----------member data ---------------------------
67 edm::InputTag src_;
68 double stop1Mass_;
69 double stop2Mass_;
70 double st1decay_;
71
72 TH1D * histo;
73 // Higgs
74 TH1D * h_higgs_mass;
75 TH1D * h_higgsTrue_mass;
76 TH1D * h_higgs_pt;
77 TH1D * h_higgsBB_deltaR;
78 TH1D * h_higgs_num;
79
80 // Stop1
81 TH1D * h_stop1_mass;
82 TH1D * h_stop1True_mass;
83 TH1D * h_stop1_pt;
84 TH1D * h_stop1Bj_deltaR;
85
86 // Stop2
87 TH1D * h_stop2_mass;
88 TH1D * h_stop2True_mass;
89
90 // Jets + B
91 TH1D * h_jetsB_ht;
92 TH1D * h_jetsB_pt;
93 TH1D * h_jetsB1_pt;
94 TH1D * h_jetsB2_pt;
95 TH1D * h_jetsB3_pt;
96 TH1D * h_jetsB4_pt;
97 TH1D * h_jetsB_num;
98 TH1D * h_jetsB1_eta;
99 TH1D * h_jetsB2_eta;
100 TH1D * h_jetsB3_eta;
101 TH1D * h_jetsB4_eta;
102 TH1D * h_jetsB1_phi;
103 TH1D * h_jetsB2_phi;
104 TH1D * h_jetsB3_phi;
105 TH1D * h_jetsB4_phi;
106 TH1D * h_jetsB1jetsB2_deltaR;
107 TH1D * h_jetsB1jetsB3_deltaR;
108
109 // Bjets
110 TH1D * h_Bjet1_pt;
111 TH1D * h_Bjet2_pt;
112 TH1D * h_Bjet_num;
113 TH1D * h_Bjet1Bjet2_deltaEta;
114 TH1D * h_Bjet1Bjet2_deltaPhi;
115 TH1D * h_Bjet1Bjet2_cosDeltaPhi;
116 TH1D * h_Bjet1Bjet2_deltaR;
117
118 // Jets (without b)
119 TH1D * h_jet_pt;
120 TH1D * h_jet1_pt;
121 TH1D * h_jet2_pt;
122 TH1D * h_jet_num;
123
124 // Fancy stuff
125 TH1D * h_jet1Bjet1_eta;
126 TH1D * h_jetfromStop1;
127 TH1D * h_BjetfromStop1;
128 TH1D * h_Bjet1fromStop1;
129 TH1D * h_Bjet2fromStop1;
130 TH1D * h_jetsBfromStop1;
131 TH1D * h_jetsB1fromStop1;
132 TH1D * h_jetsB2fromStop1;
133 TH1D * h_jetsB3fromStop1;
134 TH1D * h_jetsB4fromStop1;
135
136 };
137
138 //
139 // constants, enums and typedefs
140 //
141
142 //
143 // static data member definitions
144 //
145
146 //
147 // constructors and destructor
148 //
149 GenAnalyzer::GenAnalyzer(const edm::ParameterSet& iConfig) :
150 src_( iConfig.getParameter<edm::InputTag>( "src" ) ), // Obtain inputs
151 stop1Mass_( iConfig.getParameter<double>( "stop1Mass" ) ),
152 stop2Mass_( iConfig.getParameter<double>( "stop2Mass" ) ),
153 st1decay_( iConfig.getParameter<double>( "st1decay" ) )
154 {
155 //now do what ever initialization is needed
156 edm::Service<TFileService> fs; // Output File
157
158 // Initialize Histograms
159 histo = fs->make<TH1D>("jetpt" , "Jet p_{T}" , 30 ,0., 300. ); // test histo
160
161 // Higgs
162 h_higgs_mass = fs->make<TH1D>("higgs_mass" , "Higgs Mass" , 12.5 , 99.0, 150. );
163 h_higgsTrue_mass = fs->make<TH1D>("higgsTrue_mass" , "True Higgs Mass" , 12.5, 99., 150. );
164 h_higgs_pt = fs->make<TH1D>("higgs_pt" , "Higgs p_{T}" , 98 , 0., 500. );
165 //h_higgsBB_deltaR = fs->make<TH1D>("higgs_deltaR" , "#Delta R (b,b) [from H]" , 50 , 0., 5. );
166 h_higgs_num = fs->make<TH1D>("higgs_num" , "Number of Higgs" , 10 , -0.5, 9.5 );
167
168 // Stop1
169 h_stop1_mass = fs->make<TH1D>("stop1_mass" , "Stop1 Mass" , 41 , 70., 530. );
170 h_stop1True_mass = fs->make<TH1D>("stop1True_mass" , "True Stop1 Mass" , 41 , 70, 530. );
171 h_stop1_pt = fs->make<TH1D>("stop1_pt" , "Stop1 p_{T}" , 98 , 0., 500. );
172 //h_stop1Bj_deltaR = fs->make<TH1D>("stop1Bj_deltaR" , "#Delta R (b,j) [from Stop1]" , 50 , 0., 5. );
173
174 // Stop2
175 h_stop2_mass = fs->make<TH1D>("stop2_mass" , "Stop2 Mass" , 31 , 220., 780. );
176 h_stop2True_mass = fs->make<TH1D>("stop2True_mass" , "True Stop2 Mass" , 31 , 220., 780. );
177
178 // Jets + B
179 h_jetsB_ht = fs->make<TH1D>("jetsB_ht" , "H_{T} (Jets + B)" , 40 , 200., 1000. );
180 h_jetsB_pt = fs->make<TH1D>("jetsB_pt" , "Jets + B p_{T}" , 98 , 0., 500. );
181 h_jetsB1_pt = fs->make<TH1D>("jetsB1_pt" , "Leading Jets + B p_{T}" , 98 , 0., 500. );
182 h_jetsB2_pt = fs->make<TH1D>("jetsB2_pt" , "2nd Leading Jets + B p_{T}" , 98 , 0., 500. );
183 h_jetsB3_pt = fs->make<TH1D>("jetsB3_pt" , "3rd Leading Jets + B p_{T}" , 98 , 0., 500. );
184 h_jetsB4_pt = fs->make<TH1D>("jetsB4_pt" , "4th Leading Jets + B p_{T}" , 98 , 0., 500. );
185 h_jetsB_num = fs->make<TH1D>("jetsB_num" , "Number of Jets + B" , 16 , -0.5, 15.5 );
186 h_jetsB1_eta = fs->make<TH1D>("jetsB1_eta" , "Leading Jets + B #eta" , 28 , -3.1, 3.1 );
187 h_jetsB2_eta = fs->make<TH1D>("jetsB2_eta" , "2nd Leading Jets + B #eta" , 28 , -3.1, 3.1 );
188 h_jetsB3_eta = fs->make<TH1D>("jetsB3_eta" , "3rd Leading Jets + B #eta" , 28 , -3.1, 3.1 );
189 h_jetsB4_eta = fs->make<TH1D>("jetsB4_eta" , "4th Leading Jets + B #eta" , 28 , -3.1, 3.1 );
190 h_jetsB1_phi = fs->make<TH1D>("jetsB1_phi" , "Leading Jets + B #phi" , 58 , -5.1, 5.1 );
191 h_jetsB2_phi = fs->make<TH1D>("jetsB2_phi" , "2nd Leading Jets + B #phi" , 58 , -5.1, 5.1 );
192 h_jetsB3_phi = fs->make<TH1D>("jetsB3_phi" , "3rd Leading Jets + B #phi" , 58 , -5.1, 5.1 );
193 h_jetsB4_phi = fs->make<TH1D>("jetsB4_phi" , "4th Leading Jets + B #phi" , 58 , -5.1, 5.1 );
194 h_jetsB1jetsB2_deltaR = fs->make<TH1D>("jetsB1jetsB2_deltaR" , "#Delta R (jb_{1},jb_{2})" , 50 , 0., 5. );
195 h_jetsB1jetsB3_deltaR = fs->make<TH1D>("jetsB1jetsB3_deltaR" , "#Delta R (jb_{1},jb_{3})" , 50 , 0., 5. );
196
197 // Bjets
198 h_Bjet1_pt = fs->make<TH1D>("Bjet1_pt" , "Leading B-Jet p_{T}" , 98 , 0., 500. );
199 h_Bjet2_pt = fs->make<TH1D>("Bjet2_pt" , "2nd Leading B-Jet p_{T}" , 98 , 0., 500. );
200 h_Bjet_num = fs->make<TH1D>("Bjet_num" , "Number of B-Jets" , 10 , -0.5, 9.5 );
201 //h_Bjet1Bjet2_deltaEta = fs->make<TH1D>("jet1Bjet1_deltaEta" , "#Delta #eta (bj_{1},bj_{2})" , 28 , -3.1, 3.1 );
202 h_Bjet1Bjet2_deltaPhi = fs->make<TH1D>("Bjet1Bjet2_deltaPhi" , "#Delta #phi (bj_{1}, bj_{2})" , 50 , 0., 5. );
203 h_Bjet1Bjet2_cosDeltaPhi = fs->make<TH1D>("Bjet1Bjet2_cosDeltaPhi" , "cos [#Delta #phi (bj_{1}, bj_{2})]" , 26 , -1.2, 1.2 );
204 h_Bjet1Bjet2_deltaR = fs->make<TH1D>("Bjet1Bjet2_deltaR" , "#Delta R (b_{1},b_{2})" , 50 , 0., 5. );
205
206 // Jets (without b)
207 h_jet_pt = fs->make<TH1D>("jet_pt" , "Jets p_{T}" , 98 , 0., 500. );
208 h_jet1_pt = fs->make<TH1D>("jet1_pt" , "Leading Jet p_{T}" , 98 , 0., 500. );
209 h_jet2_pt = fs->make<TH1D>("jet2_pt" , "2nd Leading Jet p_{T}" , 98 , 0., 500. );
210 h_jet_num = fs->make<TH1D>("jet_num" , "Number of Jets" , 10 , -0.5, 9.5 );
211
212 // Fancy stuff
213 //h_jet1Bjet1_eta = fs->make<TH1D>("jet1Bjet1_eta" , "#eta (j_{1},bj_{1})" , 28 , -3.1, 3.1 );
214 h_jetfromStop1 = fs->make<TH1D>("jetfromStop1" , "Position of Jets (w/o b) from Stop1" , 16, -0.5, 15.5 );
215 h_BjetfromStop1 = fs->make<TH1D>("BjetfromStop1" , "Position of B-Jets from Stop1" , 16, -0.5, 15.5 );
216 h_Bjet1fromStop1 = fs->make<TH1D>("Bjet1fromStop1" , "Position of Leading B-Jet from Stop1" , 16, -0.5, 15.5 );
217 h_Bjet2fromStop1 = fs->make<TH1D>("Bjet2fromStop1" , "Position of 2nd Leading B-Jet from Stop1" , 16, -0.5, 15.5 );
218 h_jetsBfromStop1 = fs->make<TH1D>("jetsBfromStop1" , "Position of Jets from Stop1" , 16, -0.5, 15.5 );
219 h_jetsB1fromStop1 = fs->make<TH1D>("jetsB1fromStop1" , "Position of Leading Jet from Stop1" , 16, -0.5, 15.5 );
220 h_jetsB2fromStop1 = fs->make<TH1D>("jetsB2fromStop1" , "Position of 2nd Leading Jet from Stop1" , 16, -0.5, 15.5 );
221 h_jetsB3fromStop1 = fs->make<TH1D>("jetsB3fromStop1" , "Position of 3rd Leading Jet from Stop1" , 16, -0.5, 15.5 );
222 h_jetsB4fromStop1 = fs->make<TH1D>("jetsB4fromStop1" , "Position of 4th Leading Jet from Stop1" , 16, -0.5, 15.5 );
223
224 }
225
226 // Bool to Sort by Pt
227 bool ComparePt(TLorentzVector a, TLorentzVector b) { return a.Pt() > b.Pt(); }
228
229 GenAnalyzer::~GenAnalyzer()
230 {
231
232 // do anything here that needs to be done at desctruction time
233 // (e.g. close files, deallocate resources etc.)
234
235 }
236
237
238 //
239 // member functions
240 //
241
242 // ------------ method called to for each event ------------
243 void GenAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){
244
245 using namespace std;
246 using namespace edm;
247 using namespace reco;
248
249 // Way to call GenParticle from root
250 edm::Handle<std::vector<reco::GenParticle>> particles;
251 iEvent.getByLabel( src_ , particles );
252 const std::vector<reco::GenParticle> & p = *particles;
253
254 // Inizialize
255 size_t higgs_num = 0;
256
257 vector< TLorentzVector > p4jet;
258 vector< TLorentzVector > p4Bjet;
259 vector< TLorentzVector > p4jetsB;
260 vector< TLorentzVector > p4HiggsB;
261 vector< TLorentzVector > p4Higgs;
262 vector< TLorentzVector > p4Stop1B;
263 vector< TLorentzVector > p4Stop1jet;
264 vector< TLorentzVector > p4Stop1jetsB;
265 vector< TLorentzVector > p4Stop1;
266
267 // Begin Loop for GenParticles
268 for(unsigned int i = 0; i < particles->size(); ++ i) {
269
270 if( p[i].status()!= 3 ) continue; // Make sure only "final" particles are present
271
272 const Candidate * mom = p[i].mother(); // call mother particle
273 if( p[i].pdgId() == 5 ) histo->Fill( p[i].pt() ); // test
274
275
276 //////////// True Mass plots
277 if( p[i].pdgId() == 25 ){
278 higgs_num++; // Check number of Higgs
279 h_higgsTrue_mass->Fill(p[i].mass()); // Higgs true mass
280 }
281 if( p[i].pdgId() == 1000002 ) h_stop1True_mass->Fill(p[i].mass()); // Stop1 true mass
282 if( p[i].pdgId() == 1000004 ) h_stop2True_mass->Fill(p[i].mass()); // Stop2 true mass
283 ////////////
284
285
286 //////////// Storing TLorentz Vectors
287 TLorentzVector tmpjet, tmpBjet, tmpjetsB, tmpHiggs, tmpStop1B, tmpStop1jet; // tmp TLorentzVectors
288 if( mom ){
289 // Jets without b
290 if( ( p[i].pdgId() == 1 ) || ( p[i].pdgId() == 2 ) || ( p[i].pdgId() == 3 ) || ( p[i].pdgId() == 4) ){
291 tmpjet.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
292 p4jet.push_back( tmpjet );
293 }
294 std::sort(p4jet.begin(), p4jet.end(), ComparePt);
295 // Bjets
296 if( p[i].pdgId() == 5 ){
297 tmpBjet.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
298 p4Bjet.push_back( tmpBjet );
299 }
300 std::sort(p4Bjet.begin(), p4Bjet.end(), ComparePt);
301 // Jets with b
302 if( ( p[i].pdgId() == 1 ) || ( p[i].pdgId() == 2 ) || ( p[i].pdgId() == 3 ) || ( p[i].pdgId() == 4) || ( p[i].pdgId() == 5 )){
303 tmpBjet.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
304 p4jetsB.push_back( tmpBjet );
305 }
306 std::sort(p4jetsB.begin(), p4jetsB.end(), ComparePt);
307
308 // Higgs
309 if( ( p[i].pdgId() == 5 ) && ( mom->pdgId() == 25 ) ){
310 tmpHiggs.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
311 p4HiggsB.push_back( tmpHiggs );
312 }
313 std::sort(p4HiggsB.begin(), p4HiggsB.end(), ComparePt);
314 // Stop1
315 if( abs( mom->pdgId() )== 1000002 ){
316 if( ( p[i].pdgId() == 1 ) || ( p[i].pdgId() == 2 ) || ( p[i].pdgId() == 3 ) || ( p[i].pdgId() == 4) ){
317 tmpStop1jet.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
318 p4Stop1jet.push_back( tmpStop1jet );
319 p4Stop1jetsB.push_back( tmpStop1jet );
320 }
321 else {
322 tmpStop1B.SetPxPyPzE(p[i].px(),p[i].py(),p[i].pz(),p[i].energy());
323 p4Stop1B.push_back( tmpStop1B );
324 p4Stop1jetsB.push_back( tmpStop1B );
325 }
326 }
327 std::sort(p4Stop1B.begin(), p4Stop1B.end(), ComparePt);
328 std::sort(p4Stop1jet.begin(), p4Stop1jet.end(), ComparePt);
329 std::sort(p4Stop1jetsB.begin(), p4Stop1jetsB.end(), ComparePt);
330 }
331 } // end GenParticles loop
332
333
334 // Test number of true Higgs
335 h_higgs_num->Fill( higgs_num );
336
337 //cout << "run:lumi:event = " << iEvent.id().run() << ":" << iEvent.id().luminosityBlock() << ":" << iEvent.id().event() <<endl;
338
339 ///// Higgs reconstructed mass
340 for(unsigned int j = 0; j < p4HiggsB.size()-1; ++j) {
341 for(unsigned int k=j+1; k < p4HiggsB.size(); ++k) {
342 if(j==k) continue; // avoid repetition
343 TLorentzVector p4CandidateHiggs = p4HiggsB[j] + p4HiggsB[k]; // Higgs TLorentzVector
344 //cout << p4HiggsB[j].E() << " " << p4HiggsB[k].E() << " " << p4CandidateHiggs.M() << endl;
345 Double_t massHiggs = 125.0; // nominal mass value
346 Double_t diffmassHiggs = p4CandidateHiggs.M() - massHiggs; // mass difference
347 //cout << diffmassHiggs << endl;
348 if( abs(diffmassHiggs) < 0.1 ){ // diffmass presicion
349 h_higgs_mass->Fill( p4CandidateHiggs.M() ); // Higgs mass
350 h_higgs_pt->Fill( p4CandidateHiggs.Pt() ); // Higgs pT
351 p4Higgs.push_back( p4CandidateHiggs ); // store final TLorentzVector
352 //cout << p4CandidateHiggs.M() << endl;
353 }
354 }
355 }
356 ///////////////////////////// /
357
358
359 /////// Stop1 reconstructed mass
360 if( st1decay_==1){
361 for(unsigned int j = 0; j < p4Stop1B.size(); ++j) {
362 for(unsigned int k= 0; k < p4Stop1jet.size(); ++k) {
363 TLorentzVector p4CandidateStop1 = p4Stop1B[j] + p4Stop1jet[k]; // higgs tlorentzvector
364 Double_t massStop1 = stop1Mass_ ; // nominal mass value
365 Double_t diffmassStop1 = p4CandidateStop1.M() - massStop1; // mass difference
366 if( abs(diffmassStop1) < 1.0 ){ // diffmass presicion
367 h_stop1_mass->Fill( p4CandidateStop1.M() ); // stop1 mass
368 h_stop1_pt->Fill( p4CandidateStop1.Pt() ); // stop1 pt
369 p4Stop1.push_back( p4CandidateStop1 );
370 }
371 }
372 }
373 } else {
374 for(unsigned int j = 0; j < p4Stop1jet.size(); ++j) {
375 for(unsigned int k= 0; k < p4Stop1jet.size(); ++k) {
376 if( j==k ) continue;
377 TLorentzVector p4CandidateStop1 = p4Stop1jet[j] + p4Stop1jet[k]; // higgs tlorentzvector
378 Double_t massStop1 = stop1Mass_ ; // nominal mass value
379 Double_t diffmassStop1 = p4CandidateStop1.M() - massStop1; // mass difference
380 if( abs(diffmassStop1) < 1.0 ){ // diffmass presicion
381 h_stop1_mass->Fill( p4CandidateStop1.M() ); // stop1 mass
382 h_stop1_pt->Fill( p4CandidateStop1.Pt() ); // stop1 pt
383 p4Stop1.push_back( p4CandidateStop1 );
384 }
385 }
386 }
387 }
388 ///////////////////////////////// /
389
390 // Stop2 reconstructed mass
391 for(unsigned int j = 0; j < p4Higgs.size(); ++j) {
392 for(unsigned int k= 0; k < p4Stop1.size(); ++k) {
393 TLorentzVector p4CandidateStop2 = p4Higgs[j] + p4Stop1[k]; // Higgs TLorentzVector
394 Double_t massStop2 = stop2Mass_; // nominal mass value
395 Double_t diffmassStop2 = p4CandidateStop2.M() - massStop2; // mass difference
396 if( abs(diffmassStop2) < 1.0 ){ // diffmass presicion
397 h_stop2_mass->Fill( p4CandidateStop2.M() ); // Stop1 mass
398 }
399 }
400 }//
401
402 // Jets + B
403 Double_t Ht = 0;
404 for(unsigned int j = 0; j < p4jetsB.size(); ++j) {
405
406 Ht += p4jetsB[j].Pt();
407
408 h_jetsB_pt->Fill( p4jetsB[j].Pt() );
409 h_jetsB1_pt->Fill( p4jetsB[0].Pt() );
410 h_jetsB2_pt->Fill( p4jetsB[1].Pt() );
411 h_jetsB3_pt->Fill( p4jetsB[2].Pt() );
412 h_jetsB4_pt->Fill( p4jetsB[3].Pt() );
413 h_jetsB_num->Fill( p4jetsB.size() );
414 h_jetsB1_eta->Fill( p4jetsB[0].Eta() );
415 h_jetsB2_eta->Fill( p4jetsB[1].Eta() );
416 h_jetsB3_eta->Fill( p4jetsB[2].Eta() );
417 h_jetsB4_eta->Fill( p4jetsB[3].Eta() );
418 h_jetsB1_phi->Fill( p4jetsB[0].Phi() );
419 h_jetsB2_phi->Fill( p4jetsB[1].Phi() );
420 h_jetsB3_phi->Fill( p4jetsB[2].Phi() );
421 h_jetsB4_phi->Fill( p4jetsB[3].Phi() );
422 h_jetsB1jetsB2_deltaR->Fill( p4jetsB[0].DeltaR( p4jetsB[1] ) );
423 h_jetsB1jetsB3_deltaR->Fill( p4jetsB[0].DeltaR( p4jetsB[2] ) );
424
425 for(unsigned int k= 0; k < p4Stop1jet.size(); ++k) {
426 if( p4Stop1jet[k].Pt() == p4jetsB[j].Pt() ) h_jetfromStop1->Fill( j+1 );
427 //cout << k << " "<< j << " " <<p4Stop1jet[k].Pt() << " " << p4jetsB[j].Pt() << endl;
428 }/*
429 if( p4Stop1B[0].Pt() == p4jetsB[j].Pt() ) h_Bjet1fromStop1->Fill( j+1 );
430 if( p4Stop1B[1].Pt() == p4jetsB[j].Pt() ) h_Bjet2fromStop1->Fill( j+1 );*/
431 for(unsigned int kk= 0; kk < p4Stop1B.size(); ++kk) {
432 if( p4Stop1B[kk].Pt() == p4jetsB[j].Pt() ) h_BjetfromStop1->Fill( j+1 );
433 //cout << kk << " "<< j << " " <<p4Stop1B[kk].Pt() << " " << p4jetsB[j].Pt() << endl;
434 }
435 if( p4Stop1jetsB[0].Pt() == p4jetsB[j].Pt() ) h_jetsB1fromStop1->Fill( j+1 );
436 if( p4Stop1jetsB[1].Pt() == p4jetsB[j].Pt() ) h_jetsB2fromStop1->Fill( j+1 );
437 if( p4Stop1jetsB[2].Pt() == p4jetsB[j].Pt() ) h_jetsB3fromStop1->Fill( j+1 );
438 if( p4Stop1jetsB[3].Pt() == p4jetsB[j].Pt() ) h_jetsB4fromStop1->Fill( j+1 );
439 for(unsigned int kkk= 0; kkk < p4Stop1jetsB.size(); ++kkk) {
440 if( p4Stop1jetsB[kkk].Pt() == p4jetsB[j].Pt() ) h_jetsBfromStop1->Fill( j+1 );
441 //cout << kkk << " "<< j << " " <<p4Stop1jetsB[kkk].Pt() << " " << p4jetsB[j].Pt() << endl;
442 }
443 }
444 h_jetsB_ht->Fill( Ht );
445 ////////////////////////////
446
447 // Bjets
448 for(unsigned int j = 0; j < p4Bjet.size(); ++j) {
449 h_Bjet1_pt->Fill( p4Bjet[0].Pt() );
450 h_Bjet2_pt->Fill( p4Bjet[1].Pt() );
451 h_Bjet_num->Fill( p4Bjet.size() );
452 h_Bjet1Bjet2_deltaPhi->Fill( p4Bjet[0].DeltaPhi( p4Bjet[1] ) );
453 h_Bjet1Bjet2_cosDeltaPhi->Fill( cos( p4Bjet[0].DeltaPhi( p4Bjet[1] ) ) );
454 h_Bjet1Bjet2_deltaR->Fill( p4Bjet[0].DeltaR( p4Bjet[1] ) );
455 }
456 //////////////////////////// /
457
458 // Jets
459 for(unsigned int j = 0; j < p4jet.size(); ++j) {
460 h_jet_pt->Fill( p4jet[j].Pt() );
461 h_jet1_pt->Fill( p4jet[0].Pt() );
462 h_jet2_pt->Fill( p4jet[1].Pt() );
463 }
464 h_jet_num->Fill( p4jet.size() );
465 /////////////////////////////
466
467 }
468
469 // ------------ method called once each job just after ending the event loop ------------
470 void
471 GenAnalyzer::beginJob() {
472 }
473 void
474 GenAnalyzer::endJob() {
475 }
476
477 //define this as a plug-in
478 DEFINE_FWK_MODULE(GenAnalyzer);