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 
54 {
55  if(dbe_)
56  {
59  }
60 }//void HcalNZSMonitor::cleanup()
61 
62 
64 {
65  if (debug_>1) std::cout <<"HcalNZSMonitor::beginRun"<<std::endl;
67 
68  if (tevt_==0) this->setup(); // set up histograms if they have not been created before
69  if (mergeRuns_==false)
70  this->reset();
71 
72  return;
73 
74 } // void HcalNZSMonitor::beginRun(...)
75 
76 
78 {
80 
81  if(debug_>1) std::cout << "<HcalNZSMonitor::setup> About to pushback fedUnpackList_" << std::endl;
82 
83  selFEDs_.clear();
85  {
86  selFEDs_.push_back(i);
87  }
88 
89  nAcc.clear();
90  for (unsigned int i=0; i<triggers_.size(); i++) nAcc.push_back(0);
91 
92  nAndAcc=0;
93  nAcc_Total=0;
94 
95  if (debug_>1) std::cout <<"<HcalNZSMonitor::setup> Creating histograms"<<std::endl;
96  if (dbe_)
97  {
99 
100  meFEDsizesNZS_=dbe_->bookProfile("FED sizes","FED sizes",32,699.5,731.5,100,-1000.0,12000.0,"");
101  meFEDsizesNZS_->setAxisTitle("FED number",1);
102  meFEDsizesNZS_->setAxisTitle("average size (KB)",2);
103  meFEDsizesNZS_->getTProfile()->SetMarkerStyle(22);
104 
105  meFEDsizeVsLumi_=dbe_->bookProfile("FED_size_Vs_lumi_block_number",
106  "FED size Vs lumi block number;lumiblock number;average HCAL FED size (kB)",
107  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000,"");
108  meFEDsizeVsLumi_->getTProfile()->SetMarkerStyle(22);
109 
110  meL1evtNumber_=dbe_->book1D("Is_L1_event_number_multiple_of_NZS_period",
111  "Is L1 event number multiple of NZS period",2,0,2);
112  meL1evtNumber_->setBinLabel(1, "NO", 1);
113  meL1evtNumber_->setBinLabel(2, "YES", 1);
114 
115  meIsUS_=dbe_->book1D("IsUnsuppressed_bit","IsUnsuppressed bit",2,0,2);
116  meIsUS_->setBinLabel(1,"NO",1);
117  meIsUS_->setBinLabel(2,"YES",1);
118 
119  meBXtriggered_=dbe_->book1D("Triggered_BX_number","Triggered BX number",3850,0,3850);
120  meBXtriggered_->setAxisTitle("BX number",1);
121 
122  meTrigFrac_=dbe_->book1D("HLT_accept_fractions","HLT accept fractions",triggers_.size()+1,0,triggers_.size()+1);
123  for (unsigned int k=0; k<triggers_.size(); k++) meTrigFrac_->setBinLabel(k+1,triggers_[k].c_str(),1);
124  meTrigFrac_->setBinLabel(triggers_.size()+1,"AND",1);
125 
126  meFullCMSdataSize_=dbe_->bookProfile("full_CMS_datasize",
127  "full CMS data size;lumiblock number;average FEDRawDataCollection size (kB)",
128  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000,"");
129  meFullCMSdataSize_->getTProfile()->SetMarkerStyle(22);
130 
131  } // if (dbe_)
132  return;
133 } // void HcalNZSMonitor::setup()
134 
135 
137 {
138  if (!IsAllowedCalibType()) return;
139  if (LumiInOrder(e.luminosityBlock())==false) return;
140 
142 
143  if (!(e.getByToken(tok_raw_,rawraw)))
144  {
145  edm::LogWarning("HcalNZSMonitor")<<" raw data with label "<<rawdataLabel_<<" not available";
146  return;
147  }
148 
150  if (!(e.getByToken(tok_res_,hltRes)))
151  {
152  if (debug_>0) edm::LogWarning("HcalNZSMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
153  return;
154  }
155 
156  const edm::TriggerNames & triggerNames = e.triggerNames(*hltRes);
157  // Collections were found; increment counters
159 
160  processEvent(*rawraw, *hltRes, e.bunchCrossing(), triggerNames);
161 
162 } // void HcalNZSMonitor::analyze(...)
163 
164 
166  const edm::TriggerResults& trigRes,
167  int bxNum,
168  const edm::TriggerNames& triggerNames)
169 {
170  if(!dbe_)
171  {
172  if (debug_>0) std::cout <<"HcalNZSMonitor::processEvent DQMStore not instantiated!!!"<<std::endl;
173  return;
174  }
175 
176  const unsigned int nTrig(triggerNames.size());
177 
178  std::vector<bool> trigAcc;
179  for (unsigned int i=0; i<triggers_.size(); i++) trigAcc.push_back(false);
180 
181  for (unsigned int k=0; k<nTrig; k++)
182  {
183  for (unsigned int i=0; i<triggers_.size(); i++)
184  {
185  if (triggerNames.triggerName(k) == triggers_[i] && trigRes.accept(k)) trigAcc[i]=true;
186  }
187  }
188  bool andAcc=true;
189  bool orAcc=false;
190  for (unsigned int p=0; p<triggers_.size(); p++)
191  {
192  if (!trigAcc[p]) andAcc=false;
193  if (trigAcc[p])
194  {
195  orAcc=true;
196  nAcc[p]++;
197  }
198  }
199 
200  if (orAcc)
201  {
202  nAcc_Total++;
203  for (unsigned int l=0; l<triggers_.size(); l++)
204  {
206  }
207  }
208 
209  if (andAcc)
210  {
211  nAndAcc++;
213  }
214 
215  bool processevent=false;
216  if (orAcc) processevent=true;
217 
218  if (!processevent) return;
219 
220  meBXtriggered_->Fill(bxNum+0.001,1);
221 
222  //calculate full HCAL data size:
223  size_t hcalSize=0;
224  bool hcalIsZS = false;
225  for (unsigned int k=0; k<selFEDs_.size(); k++)
226  {
227  const FEDRawData & fedData = rawraw.FEDData(selFEDs_[k]);
228  hcalSize+=fedData.size();
229  meFEDsizesNZS_->Fill(selFEDs_[k]+0.001,fedData.size()/1024);
230 
231  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(fedData.data());
232  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
233 
234  HcalHTRData htr;
235  int nspigot =0;
236  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++)
237  {
238  nspigot++;
239  if (!dccHeader->getSpigotPresent(spigot)) continue;
240  // Load the given decoder with the pointer and length from this spigot.
241  dccHeader->getSpigotData(spigot,htr, fedData.size());
242  if(k != 20 && nspigot !=14 )
243  {
244  if ( !htr.isUnsuppressed() ) hcalIsZS = true;
245  }
246  }
247  }
248 
249  if (hcalIsZS) meIsUS_->Fill(0,1);
250  else meIsUS_->Fill(1,1);
251 
252  meFEDsizeVsLumi_->Fill(currentLS+0.001, hcalSize/1024);
253 
254  size_t fullSize=0;
255  for (int j=0; j<=FEDNumbering::MAXFEDID; ++j )
256  {
257  const FEDRawData & fedData = rawraw.FEDData(j);
258  fullSize+=fedData.size();
259  }
260 
261  meFullCMSdataSize_->Fill(currentLS+0.001,fullSize/1024);
262 
263  // get Trigger FED-Id
264  const FEDRawData& fedData = rawraw.FEDData(FEDNumbering::MINTriggerGTPFEDID) ;
265  FEDHeader header(fedData.data()) ;
266 
268  if (header.lvl1ID()%period_==0) meL1evtNumber_->Fill(1,1);
269  else meL1evtNumber_->Fill(0,1);
270  return;
271 
272 } //void HcalNZSMonitor::processEvent(...)
273 
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:204
void setBinContent(int binx, double content)
set content of bin (1-D)
std::vector< std::string > triggers_
std::vector< int > nAcc
MonitorElement * meIsUS_
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:954
void beginRun(const edm::Run &run, const edm::EventSetup &c)
edm::InputTag rawdataLabel_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< int > AllowedCalibTypes_
bool accept() const
Has at least one path accepted the event?
int bunchCrossing() const
Definition: EventBase.h:62
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:59
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
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:3135
int j
Definition: DBlmapReader.cc:9
bool getSpigotPresent(unsigned int nspigot) const
Read the &quot;PRESENT&quot; bit for this spigot.
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1268
MonitorElement * meFullCMSdataSize_
int k[5][pyjets_maxn]
MonitorElement * meTrigFrac_
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
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_
virtual void setup(void)
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)
MonitorElement * meBXtriggered_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:667
Definition: Run.h:41
MonitorElement * meFEDsizeVsLumi_