CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalNZSMonitor.cc
Go to the documentation of this file.
2 
7 
9 #include <math.h>
10 
12 {
13  Online_ = ps.getUntrackedParameter<bool>("online",false);
14  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
15  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
16  debug_ = ps.getUntrackedParameter<int>("debug",0);
17  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
18  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
19  prefixME_.append("/");
20  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","NZSMonitor_Hcal");
21  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
22  subdir_.append("/");
23  subdir_=prefixME_+subdir_;
24  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
25  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",false);
26  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
27  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
28 
29  triggers_=ps.getUntrackedParameter<std::vector<std::string> >("nzsHLTnames"); //["HLT_HcalPhiSym","HLT_HcalNZS_8E29]
30  period_=ps.getUntrackedParameter<int>("NZSeventPeriod",4096); //4096
32  hltresultsLabel_ = ps.getUntrackedParameter<edm::InputTag>("HLTResultsLabel");
33 
34  // register for data access
35  tok_raw_ = consumes<FEDRawDataCollection>(rawdataLabel_);
36  tok_res_ = consumes<edm::TriggerResults>(hltresultsLabel_);
37 
38 }
39 
41 
43 {
47  meIsUS_->Reset();
49  meTrigFrac_->Reset();
51 } // void HcalNZSMonitor::reset()
52 
53 
55 {
56  if (debug_>1) std::cout <<"HcalNZSMonitor::bookHistograms"<<std::endl;
58 
59  if (tevt_==0) this->setup(ib); // set up histograms if they have not been created before
60  if (mergeRuns_==false)
61  this->reset();
62 
63  return;
64 
65 } // void HcalNZSMonitor::bookHistograms(...)
66 
67 
69 {
71 
72  if(debug_>1) std::cout << "<HcalNZSMonitor::setup> About to pushback fedUnpackList_" << std::endl;
73 
74  selFEDs_.clear();
76  {
77  selFEDs_.push_back(i);
78  }
79 
80  nAcc.clear();
81  for (unsigned int i=0; i<triggers_.size(); i++) nAcc.push_back(0);
82 
83  nAndAcc=0;
84  nAcc_Total=0;
85 
86  if (debug_>1) std::cout <<"<HcalNZSMonitor::setup> Creating histograms"<<std::endl;
88 
89  meFEDsizesNZS_=ib.bookProfile("FED sizes","FED sizes",32,699.5,731.5,100,-1000.0,12000.0,"");
90  meFEDsizesNZS_->setAxisTitle("FED number",1);
91  meFEDsizesNZS_->setAxisTitle("average size (KB)",2);
92  meFEDsizesNZS_->getTProfile()->SetMarkerStyle(22);
93 
94  meFEDsizeVsLumi_=ib.bookProfile("FED_size_Vs_lumi_block_number",
95  "FED size Vs lumi block number;lumiblock number;average HCAL FED size (kB)",
96  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000,"");
97  meFEDsizeVsLumi_->getTProfile()->SetMarkerStyle(22);
98 
99  meL1evtNumber_=ib.book1D("Is_L1_event_number_multiple_of_NZS_period",
100  "Is L1 event number multiple of NZS period",2,0,2);
101  meL1evtNumber_->setBinLabel(1, "NO", 1);
102  meL1evtNumber_->setBinLabel(2, "YES", 1);
103 
104  meIsUS_=ib.book1D("IsUnsuppressed_bit","IsUnsuppressed bit",2,0,2);
105  meIsUS_->setBinLabel(1,"NO",1);
106  meIsUS_->setBinLabel(2,"YES",1);
107 
108  meBXtriggered_=ib.book1D("Triggered_BX_number","Triggered BX number",3850,0,3850);
109  meBXtriggered_->setAxisTitle("BX number",1);
110 
111  meTrigFrac_=ib.book1D("HLT_accept_fractions","HLT accept fractions",triggers_.size()+1,0,triggers_.size()+1);
112  for (unsigned int k=0; k<triggers_.size(); k++) meTrigFrac_->setBinLabel(k+1,triggers_[k].c_str(),1);
113  meTrigFrac_->setBinLabel(triggers_.size()+1,"AND",1);
114 
115  meFullCMSdataSize_=ib.bookProfile("full_CMS_datasize",
116  "full CMS data size;lumiblock number;average FEDRawDataCollection size (kB)",
117  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000,"");
118  meFullCMSdataSize_->getTProfile()->SetMarkerStyle(22);
119 
120  return;
121 } // void HcalNZSMonitor::setup()
122 
123 
125 {
127  if (!IsAllowedCalibType()) return;
128  if (LumiInOrder(e.luminosityBlock())==false) return;
129 
131 
132  if (!(e.getByToken(tok_raw_,rawraw)))
133  {
134  edm::LogWarning("HcalNZSMonitor")<<" raw data with label "<<rawdataLabel_<<" not available";
135  return;
136  }
137 
139  if (!(e.getByToken(tok_res_,hltRes)))
140  {
141  if (debug_>0) edm::LogWarning("HcalNZSMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
142  return;
143  }
144 
145  const edm::TriggerNames & triggerNames = e.triggerNames(*hltRes);
146  // Collections were found; increment counters
147 // HcalBaseDQMonitor::analyze(e,s);
148 
149  processEvent(*rawraw, *hltRes, e.bunchCrossing(), triggerNames);
150 
151 } // void HcalNZSMonitor::analyze(...)
152 
153 
155  const edm::TriggerResults& trigRes,
156  int bxNum,
157  const edm::TriggerNames& triggerNames)
158 {
159 
160  const unsigned int nTrig(triggerNames.size());
161 
162  std::vector<bool> trigAcc;
163  for (unsigned int i=0; i<triggers_.size(); i++) trigAcc.push_back(false);
164 
165  for (unsigned int k=0; k<nTrig; k++)
166  {
167  for (unsigned int i=0; i<triggers_.size(); i++)
168  {
169  if (triggerNames.triggerName(k) == triggers_[i] && trigRes.accept(k)) trigAcc[i]=true;
170  }
171  }
172  bool andAcc=true;
173  bool orAcc=false;
174  for (unsigned int p=0; p<triggers_.size(); p++)
175  {
176  if (!trigAcc[p]) andAcc=false;
177  if (trigAcc[p])
178  {
179  orAcc=true;
180  nAcc[p]++;
181  }
182  }
183 
184  if (orAcc)
185  {
186  nAcc_Total++;
187  for (unsigned int l=0; l<triggers_.size(); l++)
188  {
190  }
191  }
192 
193  if (andAcc)
194  {
195  nAndAcc++;
197  }
198 
199  bool processevent=false;
200  if (orAcc) processevent=true;
201 
202  if (!processevent) return;
203 
204  meBXtriggered_->Fill(bxNum+0.001,1);
205 
206  //calculate full HCAL data size:
207  size_t hcalSize=0;
208  bool hcalIsZS = false;
209  for (unsigned int k=0; k<selFEDs_.size(); k++)
210  {
211  const FEDRawData & fedData = rawraw.FEDData(selFEDs_[k]);
212  hcalSize+=fedData.size();
213  meFEDsizesNZS_->Fill(selFEDs_[k]+0.001,fedData.size()/1024);
214 
215  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(fedData.data());
216  if (dccHeader==0) continue; // protection against bad data -- saw this happen in file /store/streamer/Data/A/000/131/540/Data.00131540.0200.A.storageManager.00.0000.dat; not yet sure why -- Jeff, 22 March 2010; this was due to empty (masked?) HO FEDs 724 and 727 -- Grigory, 25/03/2010
217 
218  HcalHTRData htr;
219  int nspigot =0;
220  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++)
221  {
222  nspigot++;
223  if (!dccHeader->getSpigotPresent(spigot)) continue;
224  // Load the given decoder with the pointer and length from this spigot.
225  dccHeader->getSpigotData(spigot,htr, fedData.size());
226  if(k != 20 && nspigot !=14 )
227  {
228  if ( !htr.isUnsuppressed() ) hcalIsZS = true;
229  }
230  }
231  }
232 
233  if (hcalIsZS) meIsUS_->Fill(0,1);
234  else meIsUS_->Fill(1,1);
235 
236  meFEDsizeVsLumi_->Fill(currentLS+0.001, hcalSize/1024);
237 
238  size_t fullSize=0;
239  for (int j=0; j<=FEDNumbering::MAXFEDID; ++j )
240  {
241  const FEDRawData & fedData = rawraw.FEDData(j);
242  fullSize+=fedData.size();
243  }
244 
245  meFullCMSdataSize_->Fill(currentLS+0.001,fullSize/1024);
246 
247  // get Trigger FED-Id
248  const FEDRawData& fedData = rawraw.FEDData(FEDNumbering::MINTriggerGTPFEDID) ;
249  FEDHeader header(fedData.data()) ;
250 
252  if (header.lvl1ID()%period_==0) meL1evtNumber_->Fill(1,1);
253  else meL1evtNumber_->Fill(0,1);
254  return;
255 
256 } //void HcalNZSMonitor::processEvent(...)
257 
void bookHistograms(DQMStore::IBooker &ib, const edm::Run &run, const edm::EventSetup &c)
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:208
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< std::string > triggers_
std::vector< int > nAcc
int ib
Definition: cuy.py:660
MonitorElement * meIsUS_
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
edm::InputTag rawdataLabel_
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< int > AllowedCalibTypes_
bool accept() const
Has at least one path accepted the event?
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
int bunchCrossing() const
Definition: EventBase.h:66
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
Strings::size_type size() const
Definition: TriggerNames.cc:39
void processEvent(const FEDRawDataCollection &rawraw, const edm::TriggerResults &, int bxNum, const edm::TriggerNames &triggerNames)
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
edm::InputTag hltresultsLabel_
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
std::vector< int > selFEDs_
void Fill(long long x)
bool isUnsuppressed() const
Is this event an unsuppresed event?
Definition: HcalHTRData.cc:353
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
int j
Definition: DBlmapReader.cc:9
bool getSpigotPresent(unsigned int nspigot) const
Read the &quot;PRESENT&quot; bit for this spigot.
MonitorElement * meFullCMSdataSize_
MonitorElement * meTrigFrac_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
void setup(DQMStore::IBooker &)
HcalNZSMonitor(const edm::ParameterSet &ps)
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
MonitorElement * meL1evtNumber_
TProfile * getTProfile(void) const
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
void analyze(edm::Event const &e, edm::EventSetup const &s)
edm::EDGetTokenT< edm::TriggerResults > tok_res_
tuple cout
Definition: gather_cfg.py:121
MonitorElement * meFEDsizesNZS_
edm::EDGetTokenT< FEDRawDataCollection > tok_raw_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
virtual void setup(DQMStore::IBooker &)
MonitorElement * meBXtriggered_
Definition: Run.h:41
MonitorElement * meFEDsizeVsLumi_