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_;
132 std::map< ObjectType, TH1F* >
hiso_;
171 m_towerToken = consumes<l1t::CaloTowerBxCollection>(towerTag);
175 m_clusterToken = consumes<l1t::CaloClusterBxCollection>(clusterTag);
179 m_mpEGToken = consumes<l1t::EGammaBxCollection>(mpEGTag);
183 m_mpTauToken = consumes<l1t::TauBxCollection>(mpTauTag);
187 m_mpJetToken = consumes<l1t::JetBxCollection>(mpJetTag);
191 m_mpSumToken = consumes<l1t::EtSumBxCollection>(mpSumTag);
195 m_egToken = consumes<l1t::EGammaBxCollection>(egTag);
207 m_sumToken = consumes<l1t::EtSumBxCollection>(sumTag);
265 typeStr_.push_back(
"mpsummetxhf" );
267 typeStr_.push_back(
"mpsummetyhf" );
271 typeStr_.push_back(
"mpsummhtxhf" );
273 typeStr_.push_back(
"mpsummhtyhf" );
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" );
296 typeStr_.push_back(
"sumasymethf" );
298 typeStr_.push_back(
"sumasymhthf" );
321 std::stringstream
text;
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();
333 std::stringstream ss;
334 ss << iEvent.
run() <<
"-" << iEvent.
id().
event();
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);
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!";
359 for (
int ibx=towers->getFirstBX(); ibx<=towers->getLastBX(); ++ibx) {
363 for (
auto itr = towers->begin(ibx); itr !=towers->end(ibx); ++itr ) {
365 if (itr->hwPt()<=0)
continue;
374 hetaphi_.at(
Tower)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
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;
378 if (
m_doEvtDisp) hEvtTow->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
390 for (
int ibx=clusters->getFirstBX(); ibx<=clusters->getLastBX(); ++ibx) {
394 for (
auto itr = clusters->begin(ibx); itr !=clusters->end(ibx); ++itr ) {
400 text <<
"Cluster : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
411 for (
int ibx=mpegs->getFirstBX(); ibx<=mpegs->getLastBX(); ++ibx) {
415 for (
auto itr = mpegs->begin(ibx); itr != mpegs->end(ibx); ++itr ) {
420 hetaphi_.at(
MPEG)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
423 text <<
"MP EG : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
425 if (
m_doEvtDisp) hEvtMPEG->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
437 for (
int ibx=mptaus->getFirstBX(); ibx<=mptaus->getLastBX(); ++ibx) {
441 for (
auto itr = mptaus->begin(ibx); itr != mptaus->end(ibx); ++itr ) {
446 hetaphi_.at(
MPTau)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
448 text <<
"MP Tau : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
450 if (
m_doEvtDisp) hEvtMPTau->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
459 std::vector<l1t::Jet> thejets_poseta;
460 std::vector<l1t::Jet> thejets_negeta;
469 for (
int ibx=mpjets->getFirstBX(); ibx<=mpjets->getLastBX(); ++ibx) {
473 for (
auto itr = mpjets->begin(ibx); itr != mpjets->end(ibx); ++itr ) {
479 hetaphi_.at(
MPJet)->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
481 text <<
"MP Jet : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
483 if (
m_doEvtDisp) hEvtMPJet->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
485 itr->hwEta()>0 ? thejets_poseta.push_back(*itr) : thejets_negeta.push_back(*itr);
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());
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());
515 for (
int ibx=mpsums->getFirstBX(); ibx<=mpsums->getLastBX(); ++ibx) {
519 for (
auto itr = mpsums->begin(ibx); itr != mpsums->end(ibx); ++itr ) {
521 switch(itr->getType()){
541 default:
std::cout<<
"wrong type of MP sum"<<std::endl;
543 text <<
"MP Sum : " <<
" type=" << itr->getType() <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
555 for (
int ibx=egs->getFirstBX(); ibx<=egs->getLastBX(); ++ibx) {
559 for (
auto itr = egs->begin(ibx); itr != egs->end(ibx); ++itr ) {
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() );
567 text <<
"EG : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
569 if (
m_doEvtDisp) hEvtDemuxEG->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
581 for (
int ibx=taus->getFirstBX(); ibx<=taus->getLastBX(); ++ibx) {
585 for (
auto itr = taus->begin(ibx); itr != taus->end(ibx); ++itr ) {
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() );
592 text <<
"Tau : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
594 if (
m_doEvtDisp) hEvtDemuxTau->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
604 std::vector<l1t::Jet> thejets;
610 for (
int ibx=jets->getFirstBX(); ibx<=jets->getLastBX(); ++ibx) {
614 for (
auto itr = jets->begin(ibx); itr != jets->end(ibx); ++itr ) {
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() );
622 text <<
"Jet : " <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
624 if (
m_doEvtDisp) hEvtDemuxJet->Fill( itr->hwEta(), itr->hwPhi(), itr->hwPt() );
626 thejets.push_back(*itr);
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());
646 for (
int ibx=sums->getFirstBX(); ibx<=sums->getLastBX(); ++ibx) {
650 for (
auto itr = sums->begin(ibx); itr != sums->end(ibx); ++itr ) {
652 switch(itr->getType()){
673 default:
std::cout<<
"wrong type of demux sum: "<< itr->getType() << std::endl;
676 text <<
"Sum : " <<
" type=" << itr->getType() <<
" BX=" << ibx <<
" ipt=" << itr->hwPt() <<
" ieta=" << itr->hwEta() <<
" iphi=" << itr->hwPhi() << std::endl;
693 auto itr =
types_.cbegin();
696 for (; itr!=
types_.end(); ++itr, ++
str ) {
698 dirs_.insert( std::pair< ObjectType, TFileDirectory >(*itr, fs->
mkdir(*
str) ) );
701 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 2200000, -2199999500, 2200000500) ));
704 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 2200000, -2199999500, 2200000500) ));
707 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 100000, -0.5, 99999.5) ));
717 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 16, -0.5, 15.5) ));
720 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 5904, -0.5, 5903.5)));
723 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 1500, -0.5, 1499.5) ));
726 het_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"et",
"", 100000, -0.5, 99999.5) ));
729 hbx_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"bx",
"", 11, -5.5, 5.5) ));
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) ));
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) ));
744 hphi_.insert( std::pair< ObjectType, TH1F* >(*itr,
dirs_.at(*itr).make<TH1F>(
"phi",
"", 1008, -0.5, 1007.5) ));
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) ));
759 hsort_ = fs->
make<TH1F>(
"sort",
"",201,-100.5,100.5);
760 hsortMP_ = fs->
make<TH1F>(
"sortMP",
"",201,-100.5,100.5);
T getParameter(std::string const &) const
EventNumber_t event() const
std::map< ObjectType, TH1F * > het_
std::map< ObjectType, TH1F * > hhad_
std::map< ObjectType, TH1F * > heta_
std::map< ObjectType, TH1F * > hbx_
edm::EDGetToken m_mpSumToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
L1TStage2CaloAnalyzer(const edm::ParameterSet &)
edm::EDGetToken m_tauToken
edm::EDGetToken m_sumToken
T * make(const Args &...args) const
make new ROOT object
std::map< ObjectType, TH2F * > hetaphi_
std::map< ObjectType, TFileDirectory > dirs_
#define DEFINE_FWK_MODULE(type)
void addDefault(ParameterSetDescription const &psetDescription)
edm::EDGetToken m_clusterToken
edm::EDGetToken m_egToken
edm::EDGetToken m_mpEGToken
std::map< ObjectType, TH1F * > hem_
edm::EDGetToken m_mpJetToken
std::map< ObjectType, TH1F * > hratio_
T * make(const Args &...args) const
make new ROOT object
std::vector< std::string > typeStr_
edm::EDGetToken m_jetToken
~L1TStage2CaloAnalyzer() override
edm::EDGetToken m_towerToken
std::map< ObjectType, TH1F * > hphi_
std::vector< ObjectType > types_
std::map< ObjectType, TH1F * > hiso_
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
edm::EDGetToken m_mpTauToken
TFileDirectory evtDispDir_
void analyze(const edm::Event &, const edm::EventSetup &) override