CMS 3D CMS Logo

L1TStage2CaloAnalyzer.cc
Go to the documentation of this file.
4 
6 
9 
12 
19 
20 #include "TH1F.h"
21 #include "TH2F.h"
22 
23 //
24 // class declaration
25 //
26 
27 namespace l1t {
28 
30  public:
32  ~L1TStage2CaloAnalyzer() override;
33 
34  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
35 
36 
37  private:
38  void beginJob() override;
39  void analyze(const edm::Event&, const edm::EventSetup&) override;
40  void endJob() override;
41 
42  //virtual void beginRun(edm::Run const&, edm::EventSetup const&) override;
43  //virtual void endRun(edm::Run const&, edm::EventSetup const&) override;
44  //virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
45  //virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
46 
47  // ----------member data ---------------------------
58 
59  bool m_doTowers;
61  bool m_doMPEGs;
62  bool m_doMPTaus;
63  bool m_doMPJets;
64  bool m_doMPSums;
65  bool m_doEGs;
66  bool m_doTaus;
67  bool m_doJets;
68  bool m_doSums;
69 
70  bool doText_;
71  bool doHistos_;
72 
73  enum ObjectType{
74  Tower=1,
76  EG=3,
77  Tau=4,
78  Jet=5,
79  SumET=6,
81  SumHT=8,
82  SumMET=9,
84  SumMHT=11,
86  MPEG=13,
87  MPTau=14,
88  MPJet=15,
89  MPSum=16,
90  MPSumET=17,
96  MPSumHT=23,
110  MPSumETEm = 37,
114  SumAsymEt = 41,
116  SumAsymHt = 43,
118  };
119 
120  std::vector< ObjectType > types_;
121  std::vector< std::string > typeStr_;
122 
123  std::map< ObjectType, TFileDirectory > dirs_;
124  std::map< ObjectType, TH1F* > het_;
125  std::map< ObjectType, TH1F* > heta_;
126  std::map< ObjectType, TH1F* > hphi_;
127  std::map< ObjectType, TH1F* > hbx_;
128  std::map< ObjectType, TH1F* > hem_;
129  std::map< ObjectType, TH1F* > hhad_;
130  std::map< ObjectType, TH1F* > hratio_;
131  std::map< ObjectType, TH2F* > hetaphi_;
132  std::map< ObjectType, TH1F* > hiso_;
133 
135 
136  TH1F *hsortMP_, *hsort_;
137 
138  int m_mpBx = 0;
139  int m_dmxBx = 0;
140  bool m_allBx = false;
141  bool m_doEvtDisp = false;
142 
143  };
144 
145  //
146  // constants, enums and typedefs
147  //
148 
149  //
150  // static data member definitions
151  //
152 
153  //
154  // constructors and destructor
155  //
157  doText_(iConfig.getUntrackedParameter<bool>("doText", true)),
158  doHistos_(iConfig.getUntrackedParameter<bool>("doHistos", true))
159  {
160  //now do what ever initialization is needed
161 
162  m_mpBx = iConfig.getParameter<int>("mpBx");
163  m_dmxBx = iConfig.getParameter<int>("dmxBx");
164  m_allBx = iConfig.getParameter<bool>("allBx");
165  m_doEvtDisp = iConfig.getParameter<bool>("doEvtDisp");
166 
167  // register what you consume and keep token for later access:
168  edm::InputTag nullTag("None");
169 
170  edm::InputTag towerTag = iConfig.getParameter<edm::InputTag>("towerToken");
171  m_towerToken = consumes<l1t::CaloTowerBxCollection>(towerTag);
172  m_doTowers = !(towerTag==nullTag);
173 
174  edm::InputTag clusterTag = iConfig.getParameter<edm::InputTag>("clusterToken");
175  m_clusterToken = consumes<l1t::CaloClusterBxCollection>(clusterTag);
176  m_doClusters = !(clusterTag==nullTag);
177 
178  edm::InputTag mpEGTag = iConfig.getParameter<edm::InputTag>("mpEGToken");
179  m_mpEGToken = consumes<l1t::EGammaBxCollection>(mpEGTag);
180  m_doMPEGs = !(mpEGTag==nullTag);
181 
182  edm::InputTag mpTauTag = iConfig.getParameter<edm::InputTag>("mpTauToken");
183  m_mpTauToken = consumes<l1t::TauBxCollection>(mpTauTag);
184  m_doMPTaus = !(mpTauTag==nullTag);
185 
186  edm::InputTag mpJetTag = iConfig.getParameter<edm::InputTag>("mpJetToken");
187  m_mpJetToken = consumes<l1t::JetBxCollection>(mpJetTag);
188  m_doMPJets = !(mpJetTag==nullTag);
189 
190  edm::InputTag mpSumTag = iConfig.getParameter<edm::InputTag>("mpEtSumToken");
191  m_mpSumToken = consumes<l1t::EtSumBxCollection>(mpSumTag);
192  m_doMPSums = !(mpSumTag==nullTag);
193 
194  edm::InputTag egTag = iConfig.getParameter<edm::InputTag>("egToken");
195  m_egToken = consumes<l1t::EGammaBxCollection>(egTag);
196  m_doEGs = !(egTag==nullTag);
197 
198  edm::InputTag tauTag = iConfig.getParameter<edm::InputTag>("tauToken");
199  m_tauToken = consumes<l1t::TauBxCollection>(tauTag);
200  m_doTaus = !(tauTag==nullTag);
201 
202  edm::InputTag jetTag = iConfig.getParameter<edm::InputTag>("jetToken");
203  m_jetToken = consumes<l1t::JetBxCollection>(jetTag);
204  m_doJets = !(jetTag==nullTag);
205 
206  edm::InputTag sumTag = iConfig.getParameter<edm::InputTag>("etSumToken");
207  m_sumToken = consumes<l1t::EtSumBxCollection>(sumTag);
208  m_doSums = !(sumTag==nullTag);
209 
210  std::cout << "Processing " << sumTag.label() << std::endl;
211 
212  types_.push_back( Tower );
213  types_.push_back( Cluster );
214  types_.push_back( MPEG );
215  types_.push_back( MPTau );
216  types_.push_back( MPJet );
217  types_.push_back( MPSumET );
218  types_.push_back( MPSumETHF );
219  types_.push_back( MPSumETEm );
220  types_.push_back( MPSumMETx );
221  types_.push_back( MPSumMETxHF );
222  types_.push_back( MPSumMETy );
223  types_.push_back( MPSumMETyHF );
224  types_.push_back( MPSumHT );
225  types_.push_back( MPSumHTHF );
226  types_.push_back( MPSumMHTx );
227  types_.push_back( MPSumMHTxHF );
228  types_.push_back( MPSumMHTy );
229  types_.push_back( MPSumMHTyHF );
230  types_.push_back( EG );
231  types_.push_back( Tau );
232  types_.push_back( Jet );
233  types_.push_back( SumET );
234  types_.push_back( SumETEm );
235  types_.push_back( SumHT );
236  types_.push_back( SumMET );
237  types_.push_back( SumMETHF );
238  types_.push_back( SumMHT );
239  types_.push_back( SumMHTHF );
240  types_.push_back( MPMinBiasHFP0 );
241  types_.push_back( MPMinBiasHFM0 );
242  types_.push_back( MPMinBiasHFP1 );
243  types_.push_back( MPMinBiasHFM1 );
244  types_.push_back( MinBiasHFP0 );
245  types_.push_back( MinBiasHFM0 );
246  types_.push_back( MinBiasHFP1 );
247  types_.push_back( MinBiasHFM1 );
248  types_.push_back( MPSumHITowCount );
249  types_.push_back( SumHITowCount );
250  types_.push_back( SumCentrality );
251  types_.push_back( SumAsymEt );
252  types_.push_back( SumAsymEtHF );
253  types_.push_back( SumAsymHt );
254  types_.push_back( SumAsymHtHF );
255 
256  typeStr_.push_back( "tower" );
257  typeStr_.push_back( "cluster" );
258  typeStr_.push_back( "mpeg" );
259  typeStr_.push_back( "mptau" );
260  typeStr_.push_back( "mpjet" );
261  typeStr_.push_back( "mpsumet" );
262  typeStr_.push_back( "mpsumethf" );
263  typeStr_.push_back( "mpsumetem" );
264  typeStr_.push_back( "mpsummetx" );
265  typeStr_.push_back( "mpsummetxhf" );
266  typeStr_.push_back( "mpsummety" );
267  typeStr_.push_back( "mpsummetyhf" );
268  typeStr_.push_back( "mpsumht" );
269  typeStr_.push_back( "mpsumhthf" );
270  typeStr_.push_back( "mpsummhtx" );
271  typeStr_.push_back( "mpsummhtxhf" );
272  typeStr_.push_back( "mpsummhty" );
273  typeStr_.push_back( "mpsummhtyhf" );
274  typeStr_.push_back( "eg" );
275  typeStr_.push_back( "tau" );
276  typeStr_.push_back( "jet" );
277  typeStr_.push_back( "sumet" );
278  typeStr_.push_back( "sumetem" );
279  typeStr_.push_back( "sumht" );
280  typeStr_.push_back( "summet" );
281  typeStr_.push_back( "summethf" );
282  typeStr_.push_back( "summht" );
283  typeStr_.push_back( "summhthf" );
284  typeStr_.push_back( "mpminbiashfp0" );
285  typeStr_.push_back( "mpminbiashfm0" );
286  typeStr_.push_back( "mpminbiashfp1" );
287  typeStr_.push_back( "mpminbiashfm1" );
288  typeStr_.push_back( "minbiashfp0" );
289  typeStr_.push_back( "minbiashfm0" );
290  typeStr_.push_back( "minbiashfp1" );
291  typeStr_.push_back( "minbiashfm1" );
292  typeStr_.push_back( "mpsumhitowercount");
293  typeStr_.push_back( "sumhitowercount");
294  typeStr_.push_back( "sumcentrality" );
295  typeStr_.push_back( "sumasymet" );
296  typeStr_.push_back( "sumasymethf" );
297  typeStr_.push_back( "sumasymht" );
298  typeStr_.push_back( "sumasymhthf" );
299  }
300 
301 
303  {
304 
305  // do anything here that needs to be done at desctruction time
306  // (e.g. close files, deallocate resources etc.)
307 
308  }
309 
310 
311  //
312  // member functions
313  //
314 
315  // ------------ method called for each event ------------
316  void
318  {
319  using namespace edm;
320 
321  std::stringstream text;
322 
323  TH2F* hEvtTow = new TH2F();
324  TH2F* hEvtMPEG = new TH2F();
325  TH2F* hEvtMPTau = new TH2F();
326  TH2F* hEvtMPJet = new TH2F();
327  TH2F* hEvtDemuxEG = new TH2F();
328  TH2F* hEvtDemuxTau = new TH2F();
329  TH2F* hEvtDemuxJet = new TH2F();
330 
331 
332  if (m_doEvtDisp) {
333  std::stringstream ss;
334  ss << iEvent.run() << "-" << iEvent.id().event();
335  TFileDirectory dir = evtDispDir_.mkdir(ss.str());
336  hEvtTow = dir.make<TH2F>("Tower", "", 83, -41.5, 41.5, 72, .5, 72.5);
337  hEvtMPEG = dir.make<TH2F>("MPEG", "", 83, -41.5, 41.5, 72, .5, 72.5);
338  hEvtMPTau = dir.make<TH2F>("MPTau", "", 83, -41.5, 41.5, 72, .5, 72.5);
339  hEvtMPJet = dir.make<TH2F>("MPJet", "", 83, -41.5, 41.5, 72, .5, 72.5);
340  hEvtDemuxEG = dir.make<TH2F>("DemuxEG", "", 227, -113.5, 113.5, 144, -0.5, 143.5);
341  hEvtDemuxTau = dir.make<TH2F>("DemuxTau", "", 227, -113.5, 113.5, 144, -0.5, 143.5);
342  hEvtDemuxJet = dir.make<TH2F>("DemuxJet", "", 227, -113.5, 113.5, 144, -0.5, 143.5);
343  }
344 
345  // get TPs ?
346  // get regions ?
347  // get RCT clusters ?
348 
349  //check mpbx and dmxbx
350  if(m_mpBx < -2 || m_mpBx > 2 || m_dmxBx < -2 || m_dmxBx > 2)
351  edm::LogError("L1T") << "Selected MP Bx or Demux Bx to fill histograms is outside of range -2,2. Histos will be empty!";
352 
353 
354  // get towers
355  if (m_doTowers) {
357  iEvent.getByToken(m_towerToken,towers);
358 
359  for ( int ibx=towers->getFirstBX(); ibx<=towers->getLastBX(); ++ibx) {
360 
361  if ( !m_allBx && ibx != m_mpBx ) continue;
362 
363  for ( auto itr = towers->begin(ibx); itr !=towers->end(ibx); ++itr ) {
364 
365  if (itr->hwPt()<=0) continue;
366 
367  hbx_.at(Tower)->Fill( ibx );
368  het_.at(Tower)->Fill( itr->hwPt() );
369  heta_.at(Tower)->Fill( itr->hwEta() );
370  hphi_.at(Tower)->Fill( itr->hwPhi() );
371  hem_.at(Tower)->Fill( itr->hwEtEm() );
372  hhad_.at(Tower)->Fill( itr->hwEtHad() );
373  hratio_.at(Tower)->Fill( itr->hwEtRatio() );
374  hetaphi_.at(Tower)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
375 
376  text << "Tower : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << " iem=" << itr->hwEtEm() << " ihad=" << itr->hwEtHad() << " iratio=" << itr->hwEtRatio() << std::endl;
377 
378  if (m_doEvtDisp) hEvtTow->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
379 
380  }
381 
382  }
383 
384  }
385  // get cluster
386  if (m_doClusters) {
388  iEvent.getByToken(m_clusterToken,clusters);
389 
390  for ( int ibx=clusters->getFirstBX(); ibx<=clusters->getLastBX(); ++ibx) {
391 
392  if ( !m_allBx && ibx != m_mpBx ) continue;
393 
394  for ( auto itr = clusters->begin(ibx); itr !=clusters->end(ibx); ++itr ) {
395  hbx_.at(Cluster)->Fill( ibx );
396  het_.at(Cluster)->Fill( itr->hwPt() );
397  heta_.at(Cluster)->Fill( itr->hwEta() );
398  hphi_.at(Cluster)->Fill( itr->hwPhi() );
399  hetaphi_.at(Cluster)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
400  text << "Cluster : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
401  }
402 
403  }
404  }
405 
406  // get EG
407  if (m_doMPEGs) {
409  iEvent.getByToken(m_mpEGToken,mpegs);
410 
411  for ( int ibx=mpegs->getFirstBX(); ibx<=mpegs->getLastBX(); ++ibx) {
412 
413  if ( !m_allBx && ibx != m_mpBx ) continue;
414 
415  for ( auto itr = mpegs->begin(ibx); itr != mpegs->end(ibx); ++itr ) {
416  hbx_.at(MPEG)->Fill( ibx );
417  het_.at(MPEG)->Fill( itr->hwPt() );
418  heta_.at(MPEG)->Fill( itr->hwEta() );
419  hphi_.at(MPEG)->Fill( itr->hwPhi() );
420  hetaphi_.at(MPEG)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
421  hiso_.at(MPEG)->Fill( itr->hwIso() );
422 
423  text << "MP EG : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
424 
425  if (m_doEvtDisp) hEvtMPEG->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
426 
427  }
428  }
429 
430  }
431 
432  // get tau
433  if (m_doMPTaus) {
435  iEvent.getByToken(m_mpTauToken,mptaus);
436 
437  for ( int ibx=mptaus->getFirstBX(); ibx<=mptaus->getLastBX(); ++ibx) {
438 
439  if ( !m_allBx && ibx != m_mpBx ) continue;
440 
441  for ( auto itr = mptaus->begin(ibx); itr != mptaus->end(ibx); ++itr ) {
442  hbx_.at(MPTau)->Fill( ibx );
443  het_.at(MPTau)->Fill( itr->hwPt() );
444  heta_.at(MPTau)->Fill( itr->hwEta() );
445  hphi_.at(MPTau)->Fill( itr->hwPhi() );
446  hetaphi_.at(MPTau)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
447 
448  text << "MP Tau : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
449 
450  if (m_doEvtDisp) hEvtMPTau->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
451  }
452 
453  }
454 
455  }
456 
457  // get jet
458  int njetmp=0;
459  std::vector<l1t::Jet> thejets_poseta;
460  std::vector<l1t::Jet> thejets_negeta;
461 
462  if (m_doMPJets) {
464  iEvent.getByToken(m_mpJetToken,mpjets);
465 
466  //Handle<BXVector<l1t::Jet>> jets;
467  //iEvent.getByToken(m_jetToken,jets);
468  //if (mpjets->size(0) == jets->size(0)) std::cout<<"******notequal"<<std::endl;
469  for ( int ibx=mpjets->getFirstBX(); ibx<=mpjets->getLastBX(); ++ibx) {
470 
471  if ( !m_allBx && ibx != m_mpBx ) continue;
472 
473  for ( auto itr = mpjets->begin(ibx); itr != mpjets->end(ibx); ++itr ) {
474  njetmp+=1;
475  hbx_.at(MPJet)->Fill( ibx );
476  het_.at(MPJet)->Fill( itr->hwPt() );
477  heta_.at(MPJet)->Fill( itr->hwEta() );
478  hphi_.at(MPJet)->Fill( itr->hwPhi() );
479  hetaphi_.at(MPJet)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
480 
481  text << "MP Jet : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
482 
483  if (m_doEvtDisp) hEvtMPJet->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
484 
485  itr->hwEta()>0 ? thejets_poseta.push_back(*itr) : thejets_negeta.push_back(*itr);
486  }
487 
488  }
489 
490  }
491 
492  if (!thejets_poseta.empty()) {
493  for (unsigned int i=0; i<thejets_poseta.size()-1; i++) {
494  for (unsigned int j=i+1; j<thejets_poseta.size(); j++) {
495  hsortMP_->Fill(thejets_poseta.at(i).hwPt()-thejets_poseta.at(j).hwPt());
496  }
497  }
498  }
499 
500  if (!thejets_negeta.empty()) {
501  for (unsigned int i=0; i<thejets_negeta.size()-1; i++) {
502  for (unsigned int j=i+1; j<thejets_negeta.size(); j++) {
503  hsortMP_->Fill(thejets_negeta.at(i).hwPt()-thejets_negeta.at(j).hwPt());
504  }
505  }
506  }
507 
508  //std::cout<<"njetmp "<<njetmp<<std::endl;
509 
510  // get sums
511  if (m_doMPSums) {
513  iEvent.getByToken(m_mpSumToken,mpsums);
514 
515  for ( int ibx=mpsums->getFirstBX(); ibx<=mpsums->getLastBX(); ++ibx) {
516 
517  if ( !m_allBx && ibx != m_mpBx ) continue;
518 
519  for ( auto itr = mpsums->begin(ibx); itr != mpsums->end(ibx); ++itr ) {
520 
521  switch(itr->getType()){
522  case l1t::EtSum::EtSumType::kTotalEt: het_.at(MPSumET) ->Fill( itr->hwPt() ); break;
523  case l1t::EtSum::EtSumType::kTotalEtHF: het_.at(MPSumETHF) ->Fill( itr->hwPt() ); break;
524  case l1t::EtSum::EtSumType::kTotalEtEm: het_.at(MPSumETEm) ->Fill( itr->hwPt() ); break;
525  case l1t::EtSum::EtSumType::kTotalEtx: het_.at(MPSumMETx) ->Fill( itr->hwPt() ); break;
526  case l1t::EtSum::EtSumType::kTotalEtxHF: het_.at(MPSumMETxHF) ->Fill( itr->hwPt() ); break;
527  case l1t::EtSum::EtSumType::kTotalEty: het_.at(MPSumMETy) ->Fill( itr->hwPt() ); break;
528  case l1t::EtSum::EtSumType::kTotalEtyHF: het_.at(MPSumMETyHF) ->Fill( itr->hwPt() ); break;
529  case l1t::EtSum::EtSumType::kTotalHt: het_.at(MPSumHT) ->Fill( itr->hwPt() ); break;
530  case l1t::EtSum::EtSumType::kTotalHtHF: het_.at(MPSumHTHF) ->Fill( itr->hwPt() ); break;
531  case l1t::EtSum::EtSumType::kTotalHtx: het_.at(MPSumMHTx) ->Fill( itr->hwPt() ); break;
532  case l1t::EtSum::EtSumType::kTotalHtxHF: het_.at(MPSumMHTxHF) ->Fill( itr->hwPt() ); break;
533  case l1t::EtSum::EtSumType::kTotalHty: het_.at(MPSumMHTy) ->Fill( itr->hwPt() ); break;
534  case l1t::EtSum::EtSumType::kTotalHtyHF: het_.at(MPSumMHTyHF) ->Fill( itr->hwPt() ); break;
535  case l1t::EtSum::EtSumType::kMinBiasHFP0: het_.at(MPMinBiasHFP0) ->Fill( itr->hwPt() ); break;
536  case l1t::EtSum::EtSumType::kMinBiasHFM0: het_.at(MPMinBiasHFM0) ->Fill( itr->hwPt() ); break;
537  case l1t::EtSum::EtSumType::kMinBiasHFP1: het_.at(MPMinBiasHFP1) ->Fill( itr->hwPt() ); break;
538  case l1t::EtSum::EtSumType::kMinBiasHFM1: het_.at(MPMinBiasHFM1) ->Fill( itr->hwPt() ); break;
539  case l1t::EtSum::EtSumType::kTowerCount: het_.at(MPSumHITowCount) ->Fill( itr->hwPt() ); break;
540 
541  default: std::cout<<"wrong type of MP sum"<<std::endl;
542  }
543  text << "MP Sum : " << " type=" << itr->getType() << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
544  }
545 
546  }
547 
548  }
549 
550  // get EG
551  if (m_doEGs) {
553  iEvent.getByToken(m_egToken,egs);
554 
555  for ( int ibx=egs->getFirstBX(); ibx<=egs->getLastBX(); ++ibx) {
556 
557  if ( !m_allBx && ibx != m_dmxBx ) continue;
558 
559  for ( auto itr = egs->begin(ibx); itr != egs->end(ibx); ++itr ) {
560  hbx_.at(EG)->Fill( ibx );
561  het_.at(EG)->Fill( itr->hwPt() );
562  heta_.at(EG)->Fill( itr->hwEta() );
563  hphi_.at(EG)->Fill( itr->hwPhi() );
564  hetaphi_.at(EG)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
565  hiso_.at(EG)->Fill( itr->hwIso() );
566 
567  text << "EG : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
568 
569  if (m_doEvtDisp) hEvtDemuxEG->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
570  }
571 
572  }
573 
574  }
575 
576  // get tau
577  if (m_doTaus) {
579  iEvent.getByToken(m_tauToken,taus);
580 
581  for ( int ibx=taus->getFirstBX(); ibx<=taus->getLastBX(); ++ibx) {
582 
583  if ( !m_allBx && ibx != m_dmxBx ) continue;
584 
585  for ( auto itr = taus->begin(ibx); itr != taus->end(ibx); ++itr ) {
586  hbx_.at(Tau)->Fill( ibx );
587  het_.at(Tau)->Fill( itr->hwPt() );
588  heta_.at(Tau)->Fill( itr->hwEta() );
589  hphi_.at(Tau)->Fill( itr->hwPhi() );
590  hetaphi_.at(Tau)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
591 
592  text << "Tau : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
593 
594  if (m_doEvtDisp) hEvtDemuxTau->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
595  }
596 
597  }
598 
599  }
600 
601 
602  // get jet
603  int njetdem=0;
604  std::vector<l1t::Jet> thejets;
605 
606  if (m_doJets) {
608  iEvent.getByToken(m_jetToken,jets);
609 
610  for ( int ibx=jets->getFirstBX(); ibx<=jets->getLastBX(); ++ibx) {
611 
612  if ( !m_allBx && ibx != m_dmxBx ) continue;
613 
614  for ( auto itr = jets->begin(ibx); itr != jets->end(ibx); ++itr ) {
615  njetdem+=1;
616  hbx_.at(Jet)->Fill( ibx );
617  het_.at(Jet)->Fill( itr->hwPt() );
618  heta_.at(Jet)->Fill( itr->hwEta() );
619  hphi_.at(Jet)->Fill( itr->hwPhi() );
620  hetaphi_.at(Jet)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
621 
622  text << "Jet : " << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
623 
624  if (m_doEvtDisp) hEvtDemuxJet->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
625 
626  thejets.push_back(*itr);
627  }
628 
629  }
630 
631  }
632 
633  if (!thejets.empty()) {
634  for (unsigned int i=0; i<thejets.size()-1; i++) {
635  for (unsigned int j=i+1; j<thejets.size(); j++) {
636  hsort_->Fill(thejets.at(i).hwPt()-thejets.at(j).hwPt());
637  }
638  }
639  }
640 
641  // get sums
642  if (m_doSums) {
644  iEvent.getByToken(m_sumToken,sums);
645 
646  for ( int ibx=sums->getFirstBX(); ibx<=sums->getLastBX(); ++ibx) {
647 
648  if ( !m_allBx && ibx != m_dmxBx ) continue;
649 
650  for ( auto itr = sums->begin(ibx); itr != sums->end(ibx); ++itr ) {
651 
652  switch(itr->getType()){
653  case l1t::EtSum::EtSumType::kTotalEt: het_.at(SumET) ->Fill( itr->hwPt() ); break;
655  case l1t::EtSum::EtSumType::kTotalEtEm: het_.at(SumETEm) ->Fill( itr->hwPt() ); break;
656  case l1t::EtSum::EtSumType::kTotalHt: het_.at(SumHT) ->Fill( itr->hwPt() ); break;
658  case l1t::EtSum::EtSumType::kMissingEt: het_.at(SumMET) ->Fill( itr->hwPt() ); hphi_.at(SumMET) ->Fill( itr->hwPhi() ); break;
659  case l1t::EtSum::EtSumType::kMissingEtHF: het_.at(SumMETHF) ->Fill( itr->hwPt() ); hphi_.at(SumMETHF) ->Fill( itr->hwPhi() ); break;
660  case l1t::EtSum::EtSumType::kMissingHt: het_.at(SumMHT) ->Fill( itr->hwPt() ); hphi_.at(SumMHT) ->Fill( itr->hwPhi() ); break;
661  case l1t::EtSum::EtSumType::kMissingHtHF: het_.at(SumMHTHF) ->Fill( itr->hwPt() ); hphi_.at(SumMHTHF) ->Fill( itr->hwPhi() ); break;
662  case l1t::EtSum::EtSumType::kMinBiasHFP0: het_.at(MinBiasHFP0) ->Fill( itr->hwPt() ); break;
663  case l1t::EtSum::EtSumType::kMinBiasHFM0: het_.at(MinBiasHFM0) ->Fill( itr->hwPt() ); break;
664  case l1t::EtSum::EtSumType::kMinBiasHFP1: het_.at(MinBiasHFP1) ->Fill( itr->hwPt() ); break;
665  case l1t::EtSum::EtSumType::kMinBiasHFM1: het_.at(MinBiasHFM1) ->Fill( itr->hwPt() ); break;
666  case l1t::EtSum::EtSumType::kTowerCount: het_.at(SumHITowCount) ->Fill( itr->hwPt() ); break;
667  case l1t::EtSum::EtSumType::kCentrality: het_.at(SumCentrality) ->Fill( itr->hwPt() ); break;
668  case l1t::EtSum::EtSumType::kAsymEt: het_.at(SumAsymEt) ->Fill( itr->hwPt() ); break;
669  case l1t::EtSum::EtSumType::kAsymHt: het_.at(SumAsymHt) ->Fill( itr->hwPt() ); break;
670  case l1t::EtSum::EtSumType::kAsymEtHF: het_.at(SumAsymEtHF) ->Fill( itr->hwPt() ); break;
671  case l1t::EtSum::EtSumType::kAsymHtHF: het_.at(SumAsymHtHF) ->Fill( itr->hwPt() ); break;
672 
673  default: std::cout<<"wrong type of demux sum: "<< itr->getType() << std::endl;
674  }
675 
676  text << "Sum : " << " type=" << itr->getType() << " BX=" << ibx << " ipt=" << itr->hwPt() << " ieta=" << itr->hwEta() << " iphi=" << itr->hwPhi() << std::endl;
677  }
678  }
679  }
680 
681  if (doText_) edm::LogVerbatim("L1TCaloEvents") << text.str();
682 
683  }
684 
685 
686  // ------------ method called once each job just before starting event loop ------------
687  void
689  {
690 
692 
693  auto itr = types_.cbegin();
694  auto str = typeStr_.cbegin();
695 
696  for (; itr!=types_.end(); ++itr, ++str ) {
697 
698  dirs_.insert( std::pair< ObjectType, TFileDirectory >(*itr, fs->mkdir(*str) ) );
699 
700  if (*itr==MPSumMETx || *itr == MPSumMETxHF || *itr==MPSumMETy || *itr==MPSumMETyHF){
701  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 2200000, -2199999500, 2200000500) ));
702  }
703  else if (*itr==MPSumMHTx || *itr==MPSumMHTxHF || *itr==MPSumMHTy || *itr==MPSumMHTyHF ) {
704  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 2200000, -2199999500, 2200000500) ));
705  }
706  else if (*itr==SumET || *itr==SumETEm || *itr==MPSumETEm || *itr==MPSumET || *itr==MPSumETHF || *itr==SumHT || *itr==MPSumHT || *itr==MPSumHTHF ) {
707  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 100000, -0.5, 99999.5) ));
708  }
709  else if (*itr==MPMinBiasHFP0 ||
710  *itr==MPMinBiasHFM0 ||
711  *itr==MPMinBiasHFP1 ||
712  *itr==MPMinBiasHFM1 ||
713  *itr==MinBiasHFP0 ||
714  *itr==MinBiasHFM0 ||
715  *itr==MinBiasHFP1 ||
716  *itr==MinBiasHFM1) {
717  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 16, -0.5, 15.5) ));
718  }
719  else if (*itr==MPSumHITowCount || *itr==SumHITowCount){
720  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 5904, -0.5, 5903.5)));
721  }
722  else if (*itr==EG || *itr==Tau || *itr==MPEG || *itr==MPTau){
723  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 1500, -0.5, 1499.5) ));
724  }
725  else {
726  het_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("et", "", 100000, -0.5, 99999.5) ));
727  }
728 
729  hbx_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("bx", "", 11, -5.5, 5.5) ));
730 
731  if (*itr==EG || *itr==Jet || *itr==Tau) {
732  heta_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("eta", "", 227, -113.5, 113.5) ));
733  hphi_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("phi", "", 144, -0.5, 143.5) ));
734  hetaphi_.insert( std::pair< ObjectType, TH2F* >(*itr, dirs_.at(*itr).make<TH2F>("etaphi", "", 227, -113.5, 113.5, 144, -0.5, 143.5) ));
735  if(*itr==EG) hiso_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("iso", "", 4, -0.5, 3.5) ));
736  }
737  else if (*itr==Tower || *itr==Cluster || *itr==MPEG || *itr==MPJet || *itr==MPTau) {
738  heta_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("eta", "", 83, -41.5, 41.5) ));
739  hphi_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("phi", "", 72, 0.5, 72.5) ));
740  hetaphi_.insert( std::pair< ObjectType, TH2F* >(*itr, dirs_.at(*itr).make<TH2F>("etaphi", "", 83, -41.5, 41.5, 72, .5, 72.5) ));
741  if(*itr==MPEG) hiso_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("iso", "", 4, -0.5, 3.5) ));
742  }
743  else if (*itr==SumMET || *itr==SumMETHF || *itr==SumMHT || *itr==SumMHTHF) {
744  hphi_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("phi", "", 1008, -0.5, 1007.5) ));
745  }
746 
747  if (*itr==Tower) {
748  hem_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("em", "", 101, -0.5, 100.5) ));
749  hhad_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("had", "", 101, -0.5, 100.5) ));
750  hratio_.insert( std::pair< ObjectType, TH1F* >(*itr, dirs_.at(*itr).make<TH1F>("ratio", "", 11, -0.5, 10.5) ));
751  }
752 
753  }
754 
755  if (m_doEvtDisp) {
756  evtDispDir_ = fs->mkdir("Events");
757  }
758 
759  hsort_ = fs->make<TH1F>("sort","",201,-100.5,100.5);
760  hsortMP_ = fs->make<TH1F>("sortMP","",201,-100.5,100.5);
761 
762  }
763 
764  // ------------ method called once each job just after ending the event loop ------------
765  void
767  {
768  }
769 
770  // ------------ method called when starting to processes a run ------------
771  /*
772  void
773  L1TStage2CaloAnalyzer::beginRun(edm::Run const&, edm::EventSetup const&)
774  {
775  }
776  */
777 
778  // ------------ method called when ending the processing of a run ------------
779  /*
780  void
781  L1TStage2CaloAnalyzer::endRun(edm::Run const&, edm::EventSetup const&)
782  {
783  }
784  */
785 
786  // ------------ method called when starting to processes a luminosity block ------------
787  /*
788  void
789  L1TStage2CaloAnalyzer::beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&)
790  {
791  }
792  */
793 
794  // ------------ method called when ending the processing of a luminosity block ------------
795  /*
796  void
797  L1TStage2CaloAnalyzer::endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&)
798  {
799  }
800  */
801 
802  // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
803  void
805  //The following says we do not know what parameters are allowed so do no validation
806  // Please change this to state exactly what you do use, even if it is no parameters
808  desc.setUnknown();
809  descriptions.addDefault(desc);
810  }
811 
812 }
813 
814 using namespace l1t;
815 
816 //define this as a plug-in
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:41
std::map< ObjectType, TH1F * > het_
std::map< ObjectType, TH1F * > hhad_
std::map< ObjectType, TH1F * > heta_
std::map< ObjectType, TH1F * > hbx_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
L1TStage2CaloAnalyzer(const edm::ParameterSet &)
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
delete x;
Definition: CaloConfig.h:22
std::map< ObjectType, TH2F * > hetaphi_
std::map< ObjectType, TFileDirectory > dirs_
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void addDefault(ParameterSetDescription const &psetDescription)
Definition: Jet.py:1
std::map< ObjectType, TH1F * > hem_
vector< PseudoJet > jets
RunNumber_t run() const
Definition: Event.h:101
std::map< ObjectType, TH1F * > hratio_
T * make(const Args &...args) const
make new ROOT object
std::vector< std::string > typeStr_
std::map< ObjectType, TH1F * > hphi_
std::vector< ObjectType > types_
std::map< ObjectType, TH1F * > hiso_
Definition: Tau.py:1
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::string const & label() const
Definition: InputTag.h:36
edm::EventID id() const
Definition: EventBase.h:59
HLT enums.
dbl *** dir
Definition: mlp_gen.cc:35
#define str(s)
void analyze(const edm::Event &, const edm::EventSetup &) override