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 {
126  if (!IsAllowedCalibType()) return;
127  if (LumiInOrder(e.luminosityBlock())==false) return;
128 
130 
131  if (!(e.getByToken(tok_raw_,rawraw)))
132  {
133  edm::LogWarning("HcalNZSMonitor")<<" raw data with label "<<rawdataLabel_<<" not available";
134  return;
135  }
136 
138  if (!(e.getByToken(tok_res_,hltRes)))
139  {
140  if (debug_>0) edm::LogWarning("HcalNZSMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
141  return;
142  }
143 
144  const edm::TriggerNames & triggerNames = e.triggerNames(*hltRes);
145  // Collections were found; increment counters
147 
148  processEvent(*rawraw, *hltRes, e.bunchCrossing(), triggerNames);
149 
150 } // void HcalNZSMonitor::analyze(...)
151 
152 
154  const edm::TriggerResults& trigRes,
155  int bxNum,
156  const edm::TriggerNames& triggerNames)
157 {
158 
159  const unsigned int nTrig(triggerNames.size());
160 
161  std::vector<bool> trigAcc;
162  for (unsigned int i=0; i<triggers_.size(); i++) trigAcc.push_back(false);
163 
164  for (unsigned int k=0; k<nTrig; k++)
165  {
166  for (unsigned int i=0; i<triggers_.size(); i++)
167  {
168  if (triggerNames.triggerName(k) == triggers_[i] && trigRes.accept(k)) trigAcc[i]=true;
169  }
170  }
171  bool andAcc=true;
172  bool orAcc=false;
173  for (unsigned int p=0; p<triggers_.size(); p++)
174  {
175  if (!trigAcc[p]) andAcc=false;
176  if (trigAcc[p])
177  {
178  orAcc=true;
179  nAcc[p]++;
180  }
181  }
182 
183  if (orAcc)
184  {
185  nAcc_Total++;
186  for (unsigned int l=0; l<triggers_.size(); l++)
187  {
189  }
190  }
191 
192  if (andAcc)
193  {
194  nAndAcc++;
196  }
197 
198  bool processevent=false;
199  if (orAcc) processevent=true;
200 
201  if (!processevent) return;
202 
203  meBXtriggered_->Fill(bxNum+0.001,1);
204 
205  //calculate full HCAL data size:
206  size_t hcalSize=0;
207  bool hcalIsZS = false;
208  for (unsigned int k=0; k<selFEDs_.size(); k++)
209  {
210  const FEDRawData & fedData = rawraw.FEDData(selFEDs_[k]);
211  hcalSize+=fedData.size();
212  meFEDsizesNZS_->Fill(selFEDs_[k]+0.001,fedData.size()/1024);
213 
214  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(fedData.data());
215  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
216 
217  HcalHTRData htr;
218  int nspigot =0;
219  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++)
220  {
221  nspigot++;
222  if (!dccHeader->getSpigotPresent(spigot)) continue;
223  // Load the given decoder with the pointer and length from this spigot.
224  dccHeader->getSpigotData(spigot,htr, fedData.size());
225  if(k != 20 && nspigot !=14 )
226  {
227  if ( !htr.isUnsuppressed() ) hcalIsZS = true;
228  }
229  }
230  }
231 
232  if (hcalIsZS) meIsUS_->Fill(0,1);
233  else meIsUS_->Fill(1,1);
234 
235  meFEDsizeVsLumi_->Fill(currentLS+0.001, hcalSize/1024);
236 
237  size_t fullSize=0;
238  for (int j=0; j<=FEDNumbering::MAXFEDID; ++j )
239  {
240  const FEDRawData & fedData = rawraw.FEDData(j);
241  fullSize+=fedData.size();
242  }
243 
244  meFullCMSdataSize_->Fill(currentLS+0.001,fullSize/1024);
245 
246  // get Trigger FED-Id
247  const FEDRawData& fedData = rawraw.FEDData(FEDNumbering::MINTriggerGTPFEDID) ;
248  FEDHeader header(fedData.data()) ;
249 
251  if (header.lvl1ID()%period_==0) meL1evtNumber_->Fill(1,1);
252  else meL1evtNumber_->Fill(0,1);
253  return;
254 
255 } //void HcalNZSMonitor::processEvent(...)
256 
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:199
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:446
#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: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
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_