CMS 3D CMS Logo

HtrXmlPattern.cc
Go to the documentation of this file.
5 
8 
9 #include "HtrXmlPattern.h"
10 #include "HtrXmlPatternTool.h"
12 
14 {
15  m_filled=false;
16  m_fill_by_hand = iConfig.getUntrackedParameter<bool>("fill_by_hand");
17  m_hand_pattern_number = iConfig.getUntrackedParameter<int> ("hand_pattern_number");
18  m_sets_to_show = iConfig.getUntrackedParameter<int> ("sets_to_show");
19  m_write_root_file = iConfig.getUntrackedParameter<bool>("write_root_file");
20 
22  m_toolparameters->m_show_errors = iConfig.getUntrackedParameter<bool> ("show_errors");
23  m_toolparameters->m_presamples_per_event = iConfig.getUntrackedParameter<int> ("presamples_per_event");
24  m_toolparameters->m_samples_per_event = iConfig.getUntrackedParameter<int> ("samples_per_event");
25 
26  m_toolparameters->m_XML_file_mode = iConfig.getUntrackedParameter<int> ("XML_file_mode");
27  m_toolparameters->m_file_tag = iConfig.getUntrackedParameter<std::string>("file_tag");
28  m_toolparameters->m_user_output_directory = iConfig.getUntrackedParameter<std::string>("user_output_directory");
29 
30  std::string out_dir=m_toolparameters->m_user_output_directory;
31  while (out_dir.find_last_of('/')==out_dir.length()-1) out_dir.erase(out_dir.find_last_of('/'));
32  m_toolparameters->m_output_directory=out_dir+"/"+(m_toolparameters->m_file_tag)+"/";
33 
34  m_tool = new HtrXmlPatternTool(m_toolparameters);
35 }
36 
37 
39 {
40  delete m_tool;
41  delete m_toolparameters;
42 }
43 
44 // ------------ method called to for each event ------------
46 {
47  using namespace std;
48 
49  if (m_filled) return;
50 
52  iSetup.get<HcalDbRecord>().get( pSetup );
53  const HcalElectronicsMap* readoutMap=pSetup->getHcalMapping();
54 
55  if (m_fill_by_hand) {
56  do_hand_fill(readoutMap);
57  m_filled=true;
58  return;
59  }
60 
61  std::vector<edm::Handle<HBHEDigiCollection> > hbhe;
62  std::vector<edm::Handle<HODigiCollection> > ho;
63  std::vector<edm::Handle<HFDigiCollection> > hf;
64  std::vector<edm::Handle<ZDCDigiCollection> > zdc;
65  std::vector<edm::Handle<HcalCalibDigiCollection> > hc;
66  std::vector<edm::Handle<HcalTrigPrimDigiCollection> > htp;
67  std::vector<edm::Handle<HcalHistogramDigiCollection> > hh;
68 
69  iEvent.getManyByType(hbhe);
70  if (hbhe.empty()) {
71  cout << "No HB/HE Digis." << endl;
72  } else {
73  std::vector<edm::Handle<HBHEDigiCollection> >::iterator i;
74  for (i=hbhe.begin(); i!=hbhe.end(); i++) {
75  const HBHEDigiCollection& c=*(*i);
76 
77  int count=0;
78  for (HBHEDigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
79  const HcalElectronicsId HEID = readoutMap->lookup(j->id());
80  m_tool->Fill(HEID,j);
81 
82  if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
83  cout << *j << std::endl;
84  cout << HEID << endl;
85  cout << "count: " << count << endl;
86  }
87  }
88  if (m_sets_to_show!=0) cout << "HB/HE count: " << count << endl;
89  }
90  }
91 
92  iEvent.getManyByType(hf);
93  if (hf.empty()) {
94  cout << "No HF Digis." << endl;
95  } else {
96  std::vector<edm::Handle<HFDigiCollection> >::iterator i;
97  for (i=hf.begin(); i!=hf.end(); i++) {
98  const HFDigiCollection& c=*(*i);
99 
100  int count=0;
101  for (HFDigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
102  const HcalElectronicsId HEID = readoutMap->lookup(j->id());
103  m_tool->Fill(HEID,j);
104 
105  if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
106  cout << *j << std::endl;
107  cout << HEID << endl;
108  cout << "count: " << count << endl;
109  }
110  }
111  if (m_sets_to_show!=0) cout << "HF count: " << count << endl;
112  }
113  }
114 
115  iEvent.getManyByType(ho);
116  if (ho.empty()) {
117  cout << "No HO Digis." << endl;
118  } else {
119  std::vector<edm::Handle<HODigiCollection> >::iterator i;
120  for (i=ho.begin(); i!=ho.end(); i++) {
121  const HODigiCollection& c=*(*i);
122 
123  int count=0;
124  for (HODigiCollection::const_iterator j=c.begin(); j!=c.end(); j++) {
125  const HcalElectronicsId HEID = readoutMap->lookup(j->id());
126  m_tool->Fill(HEID,j);
127 
128  if ( count++<m_sets_to_show || m_sets_to_show<0 ) {
129  cout << *j << std::endl;
130  cout << HEID << endl;
131  cout << "count: " << count << endl;
132  }
133  }
134  if (m_sets_to_show!=0) cout << "HO count: " << count << endl;
135  }
136  }
137 
138  cout << endl;
139 
140 }
141 
142 
144 {
146 
147  for (int iCrate=0;iCrate<ChannelPattern::NUM_CRATES;iCrate++) {
148  CrateData *cd=hxps->getCrate(iCrate);
149  if (!cd) continue;
150  for (int iSlot=0;iSlot<ChannelPattern::NUM_SLOTS;iSlot++) {
151  for (int iTb=0;iTb<2;iTb++) {
152  HalfHtrData* hhd=cd->getHalfHtrData(iSlot,iTb);
153  if (!hhd) continue;
154  for (int iChannel=1;iChannel<25;iChannel++) {
155  ChannelPattern *cp=hhd->getPattern(iChannel);
156  if (!cp) continue;
158  }
159  }
160  }
161  }
162 
163 }
164 
165 // ------------ method called once each job just after ending the event loop ------------
166 void
168  bool modeg0=m_toolparameters->m_XML_file_mode>0;
169  if (modeg0 || m_write_root_file) m_tool->prepareDirs();
170  if (modeg0) m_tool->writeXML();
172 }
void getManyByType(std::vector< Handle< PROD > > &results) const
Definition: Event.h:509
T getUntrackedParameter(std::string const &, T const &) const
void Fill_by_hand(const HcalElectronicsMap *, int)
HtrXmlPatternToolParameters * m_toolparameters
Definition: HtrXmlPattern.h:31
std::vector< HBHEDataFrame >::const_iterator const_iterator
~HtrXmlPattern() override
void endJob() override
HtrXmlPattern(const edm::ParameterSet &)
static const int NUM_CRATES
int iEvent
Definition: GenABIO.cc:230
void analyze(const edm::Event &, const edm::EventSetup &) override
ChannelPattern * getPattern(int chan)
int m_hand_pattern_number
Definition: HtrXmlPattern.h:33
bool m_write_root_file
Definition: HtrXmlPattern.h:36
static const int NUM_SLOTS
const_iterator end() const
void Fill(const HcalElectronicsId HEID, HBHEDigiCollection::const_iterator data)
HtrXmlPatternSet * GetPatternSet()
const T & get() const
Definition: EventSetup.h:59
HalfHtrData * getHalfHtrData(int slot, int one_two_tb)
CrateData * getCrate(int crate)
susybsm::HSCParticleCollection hc
Definition: classes.h:25
const HcalElectronicsMap * getHcalMapping() const
virtual void do_hand_fill(const HcalElectronicsMap *)
Readout chain identification for Hcal.
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
const_iterator begin() const
HtrXmlPatternTool * m_tool
Definition: HtrXmlPattern.h:30