CMS 3D CMS Logo

SiPixelDaqInfo.cc
Go to the documentation of this file.
8 
9 using namespace std;
10 using namespace edm;
12 
13  FEDRange_.first = ps.getUntrackedParameter<unsigned int>("MinimumPixelFEDId", 0);
14  FEDRange_.second = ps.getUntrackedParameter<unsigned int>("MaximumPixelFEDId", 39);
15  daqSource_ = ps.getUntrackedParameter<string>("daqSource", "source");
16 
17  NumberOfFeds_ =FEDRange_.second - FEDRange_.first +1;
18 
19  NEvents_ = 0;
20  for(int i=0; i!=40; i++) FEDs_[i] = 0;
21 
22  firstLumi = true;
23 
24  //set Token(-s)
25  daqSourceToken_ = consumes<FEDRawDataCollection>(ps.getUntrackedParameter<string>("daqSource", "source"));
26 }
27 
29 
31 
32  //Book somethings first time around
33  if (firstLumi){
34  iBooker.setCurrentFolder("Pixel/EventInfo");
35  Fraction_= iBooker.bookFloat("DAQSummary");
36  iBooker.setCurrentFolder("Pixel/EventInfo/DAQContents");
37  FractionBarrel_= iBooker.bookFloat("PixelBarrelFraction");
38  FractionEndcap_= iBooker.bookFloat("PixelEndcapFraction");
39 
40  firstLumi = false;
41  }
42 
44  if(0 != iSetup.find( recordKey ) ) {
45  //get fed summary information
46  ESHandle<RunInfo> sumFED;
47  iSetup.get<RunInfoRcd>().get(sumFED);
48  vector<int> FedsInIds= sumFED->m_fed_in;
49 
50  int FedCount=0;
51  int FedCountBarrel=0;
52  int FedCountEndcap=0;
53 
54  //loop on all active feds
55  for(unsigned int fedItr=0;fedItr<FedsInIds.size(); ++fedItr) {
56  int fedID=FedsInIds[fedItr];
57  //make sure fed id is in allowed range
58  if(fedID>=FEDRange_.first && fedID<=FEDRange_.second){
59  ++FedCount;
60  if(fedID>=0 && fedID<=31) ++FedCountBarrel;
61  else if(fedID>=32 && fedID<=39) ++FedCountEndcap;
62  }
63  }
64  //Fill active fed fraction ME
65  if(FedCountBarrel<=32){
66  MonitorElement * mefed = iGetter.get("Pixel/EventInfo/DAQContents/fedcounter");
67  FedCountBarrel = 0; FedCountEndcap = 0; FedCount = 0; NumberOfFeds_ = 40;
68  if(mefed){
69  for(int i=0; i!=40; i++){
70  if(i<=31 && mefed->getBinContent(i+1)>0) FedCountBarrel++;
71  if(i>=32 && mefed->getBinContent(i+1)>0) FedCountEndcap++;
72  if(mefed->getBinContent(i+1)>0) FedCount++;
73  }
74  }
75  }
76  if(NumberOfFeds_>0){
77  //all Pixel:
78  Fraction_->Fill( FedCount/NumberOfFeds_);
79  //Barrel:
80  FractionBarrel_->Fill( FedCountBarrel/32.);
81  //Endcap:
82  FractionEndcap_->Fill( FedCountEndcap/8.);
83  }else{
84  Fraction_->Fill(-1);
85  FractionBarrel_->Fill(-1);
86  FractionEndcap_->Fill(-1);
87  }
88  }else{
89  Fraction_->Fill(-1);
90  FractionBarrel_->Fill(-1);
91  FractionEndcap_->Fill(-1);
92  return;
93  }
94 }
95 
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:305
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
Definition: EventSetup.cc:91
void Fill(long long x)
std::vector< int > m_fed_in
Definition: RunInfo.h:26
SiPixelDaqInfo(const edm::ParameterSet &)
virtual void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
const T & get() const
Definition: EventSetup.h:55
double getBinContent(int binx) const
get content of bin (1-D)
HLT enums.
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:109
virtual void dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, const edm::LuminosityBlock &, const edm::EventSetup &)