CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

HtrXmlPattern Class Reference

#include <HtrXmlPattern.h>

Inheritance diagram for HtrXmlPattern:
edm::EDAnalyzer

List of all members.

Public Member Functions

 HtrXmlPattern (const edm::ParameterSet &)
 ~HtrXmlPattern ()

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void do_hand_fill (const HcalElectronicsMap *)
virtual void endJob ()

Private Attributes

bool m_fill_by_hand
bool m_filled
int m_hand_pattern_number
int m_sets_to_show
HtrXmlPatternToolm_tool
HtrXmlPatternToolParametersm_toolparameters
bool m_write_root_file

Detailed Description

Definition at line 21 of file HtrXmlPattern.h.


Constructor & Destructor Documentation

HtrXmlPattern::HtrXmlPattern ( const edm::ParameterSet iConfig) [explicit]

Definition at line 14 of file HtrXmlPattern.cc.

References edm::ParameterSet::getUntrackedParameter(), m_fill_by_hand, m_filled, m_hand_pattern_number, m_sets_to_show, HtrXmlPatternToolParameters::m_show_errors, m_tool, m_toolparameters, m_write_root_file, and ValidationMatrix::out_dir.

{
  m_filled=0;
  m_fill_by_hand        = iConfig.getUntrackedParameter<bool>("fill_by_hand");
  m_hand_pattern_number = iConfig.getUntrackedParameter<int> ("hand_pattern_number");
  m_sets_to_show        = iConfig.getUntrackedParameter<int> ("sets_to_show");
  m_write_root_file     = iConfig.getUntrackedParameter<bool>("write_root_file");

  m_toolparameters = new HtrXmlPatternToolParameters;
  m_toolparameters->m_show_errors            = iConfig.getUntrackedParameter<bool>       ("show_errors");
  m_toolparameters->m_presamples_per_event   = iConfig.getUntrackedParameter<int>        ("presamples_per_event");
  m_toolparameters->m_samples_per_event      = iConfig.getUntrackedParameter<int>        ("samples_per_event");

  m_toolparameters->m_XML_file_mode          = iConfig.getUntrackedParameter<int>        ("XML_file_mode");
  m_toolparameters->m_file_tag               = iConfig.getUntrackedParameter<std::string>("file_tag");
  m_toolparameters->m_user_output_directory  = iConfig.getUntrackedParameter<std::string>("user_output_directory");

  std::string out_dir=m_toolparameters->m_user_output_directory;
  while (out_dir.find_last_of('/')==out_dir.length()-1) out_dir.erase(out_dir.find_last_of('/'));
  m_toolparameters->m_output_directory=out_dir+"/"+(m_toolparameters->m_file_tag)+"/";

  m_tool = new HtrXmlPatternTool(m_toolparameters);
}
HtrXmlPattern::~HtrXmlPattern ( )

Definition at line 39 of file HtrXmlPattern.cc.

References m_tool, and m_toolparameters.

{
  delete m_tool;
  delete m_toolparameters;
}

Member Function Documentation

void HtrXmlPattern::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDAnalyzer.

Definition at line 46 of file HtrXmlPattern.cc.

References edm::SortedCollection< T, SORT >::begin(), trackerHits::c, prof2calltree::count, gather_cfg::cout, do_hand_fill(), edm::SortedCollection< T, SORT >::end(), HtrXmlPatternTool::Fill(), edm::EventSetup::get(), edm::Event::getManyByType(), i, j, m_fill_by_hand, m_filled, m_sets_to_show, and m_tool.

{
   using namespace std;

   if (m_filled) return;

   edm::ESHandle<HcalDbService> pSetup;
   iSetup.get<HcalDbRecord>().get( pSetup );
   const HcalElectronicsMap* readoutMap=pSetup->getHcalMapping();

   if (m_fill_by_hand) {
     do_hand_fill(readoutMap);
     m_filled=1;
     return;
   }
  
   std::vector<edm::Handle<HBHEDigiCollection> > hbhe;
   std::vector<edm::Handle<HODigiCollection> > ho;
   std::vector<edm::Handle<HFDigiCollection> > hf;
   std::vector<edm::Handle<ZDCDigiCollection> > zdc;
   std::vector<edm::Handle<HcalCalibDigiCollection> > hc;
   std::vector<edm::Handle<HcalTrigPrimDigiCollection> > htp;
   std::vector<edm::Handle<HcalHistogramDigiCollection> > hh;  

   iEvent.getManyByType(hbhe);
   if (hbhe.empty()) {
     cout << "No HB/HE Digis." << endl;
   } else {
     std::vector<edm::Handle<HBHEDigiCollection> >::iterator i;
     for (i=hbhe.begin(); i!=hbhe.end(); i++) {
       const HBHEDigiCollection& c=*(*i);
   
       int count=0;
       for (HBHEDigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
         const HcalElectronicsId HEID = readoutMap->lookup(j->id());
         m_tool->Fill(HEID,j);

         if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
           cout << *j << std::endl;
           cout << HEID << endl;
           cout << "count: " << count << endl;
         }
       }
       if (m_sets_to_show!=0) cout << "HB/HE count: " << count << endl;
     }
  }
  
   iEvent.getManyByType(hf);
   if (hf.empty()) {
     cout << "No HF Digis." << endl;
  } else {
     std::vector<edm::Handle<HFDigiCollection> >::iterator i;
     for (i=hf.begin(); i!=hf.end(); i++) {
       const HFDigiCollection& c=*(*i);
   
       int count=0;
       for (HFDigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
         const HcalElectronicsId HEID = readoutMap->lookup(j->id());
         m_tool->Fill(HEID,j);
         
         if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
           cout << *j << std::endl;
           cout << HEID << endl;
           cout << "count: " << count << endl;
         }
       }
       if (m_sets_to_show!=0) cout << "HF    count: " << count << endl;
     }
  }
   
   iEvent.getManyByType(ho);
   if (ho.empty()) {
     cout << "No HO Digis." << endl;
  } else {
     std::vector<edm::Handle<HODigiCollection> >::iterator i;
     for (i=ho.begin(); i!=ho.end(); i++) {
       const HODigiCollection& c=*(*i);
       
       int count=0;
       for (HODigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
         const HcalElectronicsId HEID = readoutMap->lookup(j->id());
         m_tool->Fill(HEID,j);
         
         if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
           cout << *j << std::endl;
           cout << HEID << endl;
           cout << "count: " << count << endl;
         }
       }
       if (m_sets_to_show!=0) cout << "HO    count: " << count << endl;
     }
  }

   cout << endl;    

}
void HtrXmlPattern::do_hand_fill ( const HcalElectronicsMap emap) [private, virtual]

Definition at line 144 of file HtrXmlPattern.cc.

References CommonMethods::cp(), ChannelPattern::Fill_by_hand(), HtrXmlPatternSet::getCrate(), CrateData::getHalfHtrData(), HalfHtrData::getPattern(), HtrXmlPatternTool::GetPatternSet(), m_hand_pattern_number, m_tool, ChannelPattern::NUM_CRATES, and ChannelPattern::NUM_SLOTS.

Referenced by analyze().

{
  HtrXmlPatternSet *hxps=m_tool->GetPatternSet();

  for (int iCrate=0;iCrate<ChannelPattern::NUM_CRATES;iCrate++) {
    CrateData *cd=hxps->getCrate(iCrate);
    if (!cd) continue;
    for (int iSlot=0;iSlot<ChannelPattern::NUM_SLOTS;iSlot++) {
      for (int iTb=0;iTb<2;iTb++) {
        HalfHtrData* hhd=cd->getHalfHtrData(iSlot,iTb);
        if (!hhd) continue;
        for (int iChannel=1;iChannel<25;iChannel++) {
          ChannelPattern *cp=hhd->getPattern(iChannel);
          if (!cp) continue;
          cp->Fill_by_hand(emap,m_hand_pattern_number);
        }
      }      
    }
  }

}
void HtrXmlPattern::endJob ( void  ) [private, virtual]

Member Data Documentation

Definition at line 34 of file HtrXmlPattern.h.

Referenced by analyze(), and HtrXmlPattern().

bool HtrXmlPattern::m_filled [private]

Definition at line 35 of file HtrXmlPattern.h.

Referenced by analyze(), and HtrXmlPattern().

Definition at line 33 of file HtrXmlPattern.h.

Referenced by do_hand_fill(), and HtrXmlPattern().

Definition at line 32 of file HtrXmlPattern.h.

Referenced by analyze(), and HtrXmlPattern().

Definition at line 30 of file HtrXmlPattern.h.

Referenced by analyze(), do_hand_fill(), endJob(), HtrXmlPattern(), and ~HtrXmlPattern().

Definition at line 31 of file HtrXmlPattern.h.

Referenced by endJob(), HtrXmlPattern(), and ~HtrXmlPattern().

Definition at line 36 of file HtrXmlPattern.h.

Referenced by endJob(), and HtrXmlPattern().