38 setConfig(ps,
"DTLocalTrigger");
39 baseFolderDCC =
"DT/03-LocalTrigger-DCC/";
40 baseFolderDDU =
"DT/04-LocalTrigger-DDU/";
54 vector<string>::const_iterator iTr = trigSources.begin();
55 vector<string>::const_iterator trEnd = trigSources.end();
56 vector<string>::const_iterator iHw = hwSources.begin();
57 vector<string>::const_iterator hwEnd = hwSources.end();
61 if(
parameters.getUntrackedParameter<
bool>(
"staticBooking",
true)){
62 for (; iTr != trEnd; ++iTr){
64 for (; iHw != hwEnd; ++iHw){
67 for (
int wh=-2; wh<=2; ++wh){
68 if (hwSource==
"COM") {
69 bookWheelHistos(wh,
"MatchingPhi");
72 for (
int sect=1; sect<=12; ++sect){
73 bookSectorHistos(wh,sect,
"BXDistribPhi");
74 bookSectorHistos(wh,sect,
"QualDistribPhi");
76 bookWheelHistos(wh,
"CorrectBXPhi");
77 bookWheelHistos(wh,
"ResidualBXPhi");
78 bookWheelHistos(wh,
"CorrFractionPhi");
79 bookWheelHistos(wh,
"2ndFractionPhi");
80 bookWheelHistos(wh,
"TriggerInclusivePhi");
81 bookWheelHistos(wh,
"CorrectBXTheta");
82 if (hwSource==
"DDU") {
83 bookWheelHistos(wh,
"HFractionTheta");
91 for (iTr = trigSources.begin(); iTr != trEnd; ++iTr){
93 for (iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){
96 for (
int wh=-2; wh<=2; ++wh){
97 if (hwSource==
"COM") {
98 bookWheelHistos(wh,
"MatchingSummary",
"Matching");
101 bookWheelHistos(wh,
"CorrFractionSummary");
102 bookWheelHistos(wh,
"2ndFractionSummary");
105 if (hwSource==
"COM") {
106 bookCmsHistos(
"MatchingSummary",
"Matching");
109 bookCmsHistos(
"CorrFractionSummary");
110 bookCmsHistos(
"2ndFractionSummary");
128 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){
130 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){
133 for (
int stat=1; stat<=4; ++stat){
134 for (
int wh=-2; wh<=2; ++wh){
135 for (
int sect=1; sect<=12; ++sect){
137 int sector_id = (wh+3)+(sect-1)*5;
140 if (hwSource==
"COM") {
142 TH2F * DDUvsDCC = getHisto<TH2F>(dbe->get(getMEName(
"QualDDUvsQualDCC",
"LocalTriggerPhi", chId)));
145 int matchSummary = 1;
147 if (DDUvsDCC->GetEntries()>1) {
149 double entries = DDUvsDCC->GetEntries();
150 double corrEntries = 0;
151 for (
int ibin=2; ibin<=8; ++ibin) {
152 corrEntries += DDUvsDCC->GetBinContent(ibin,ibin);
154 double corrRatio = corrEntries/
entries;
156 if (corrRatio <
parameters.getUntrackedParameter<
double>(
"matchingFracError",.65)){
159 else if (corrRatio <
parameters.getUntrackedParameter<
double>(
"matchingFracWarning",.85)){
167 bookWheelHistos(wh,
"MatchingPhi");
170 whME[wh].find(
fullName(
"MatchingPhi"))->second->setBinContent(sect,stat,corrRatio);
174 whME[wh].find(
fullName(
"MatchingSummary"))->second->setBinContent(sect,stat,matchSummary);
180 TH2F * BXvsQual = getHisto<TH2F>(dbe->get(getMEName(
"BXvsQual",
"LocalTriggerPhi", chId)));
181 TH1F * BestQual = getHisto<TH1F>(dbe->get(getMEName(
"BestQual",
"LocalTriggerPhi", chId)));
182 TH2F * Flag1stvsQual = getHisto<TH2F>(dbe->get(getMEName(
"Flag1stvsQual",
"LocalTriggerPhi", chId)));
183 if (BXvsQual && Flag1stvsQual && BestQual) {
186 int secondSummary = 1;
188 if (BestQual->GetEntries()>1) {
190 TH1D* BXHH = BXvsQual->ProjectionY(
"",6,7,
"");
191 TH1D* Flag1st = Flag1stvsQual->ProjectionY();
192 int BXOK_bin = BXHH->GetEntries()>=1 ? BXHH->GetMaximumBin() : 51;
193 double BXMean = BXHH->GetEntries()>=1 ? BXHH->GetMean() : 51;
194 double BX_OK = BXvsQual->GetYaxis()->GetBinCenter(BXOK_bin);
195 double trigsFlag2nd = Flag1st->GetBinContent(2);
196 double trigs = Flag1st->GetEntries();
197 double besttrigs = BestQual->GetEntries();
198 double besttrigsCorr = BestQual->Integral(5,7,
"");
202 double corrFrac = besttrigsCorr/besttrigs;
203 double secondFrac = trigsFlag2nd/trigs;
204 if (corrFrac <
parameters.getUntrackedParameter<
double>(
"corrFracError",.5)){
207 else if (corrFrac <
parameters.getUntrackedParameter<
double>(
"corrFracWarning",.6)){
213 if (secondFrac >
parameters.getUntrackedParameter<
double>(
"secondFracError",.2)){
216 else if (secondFrac >
parameters.getUntrackedParameter<
double>(
"secondFracWarning",.1)){
223 if( secME[sector_id].
find(
fullName(
"BXDistribPhi")) == secME[sector_id].
end() ){
224 bookSectorHistos(wh,sect,
"QualDistribPhi");
225 bookSectorHistos(wh,sect,
"BXDistribPhi");
228 TH1D* BXDistr = BXvsQual->ProjectionY();
229 TH1D* QualDistr = BXvsQual->ProjectionX();
230 std::map<std::string,MonitorElement*> *innerME = &(secME[sector_id]);
232 int nbinsBX = BXDistr->GetNbinsX();
233 int firstBinCenter =
static_cast<int>(BXDistr->GetBinCenter(1));
234 int lastBinCenter =
static_cast<int>(BXDistr->GetBinCenter(nbinsBX));
235 int iMin = firstBinCenter>-4 ? firstBinCenter : -4;
236 int iMax = lastBinCenter<20 ? lastBinCenter : 20;
237 for (
int ibin=iMin+5;ibin<=iMax+5; ++ibin) {
238 innerME->find(
fullName(
"BXDistribPhi"))->second->setBinContent(ibin,stat,BXDistr->GetBinContent(ibin-5-firstBinCenter+1));
240 for (
int ibin=1;ibin<=7;++ibin) {
241 innerME->find(
fullName(
"QualDistribPhi"))->second->setBinContent(ibin,stat,QualDistr->GetBinContent(ibin));
247 if( whME[wh].
find(
fullName(
"CorrectBXPhi")) == whME[wh].end() ){
248 bookWheelHistos(wh,
"ResidualBXPhi");
249 bookWheelHistos(wh,
"CorrectBXPhi");
250 bookWheelHistos(wh,
"CorrFractionPhi");
251 bookWheelHistos(wh,
"2ndFractionPhi");
252 bookWheelHistos(wh,
"TriggerInclusivePhi");
255 innerME = &(whME[wh]);
256 innerME->find(
fullName(
"CorrectBXPhi"))->second->setBinContent(sect,stat,BX_OK+0.00001);
257 innerME->find(
fullName(
"ResidualBXPhi"))->second->setBinContent(sect,stat,round(25.*(BXMean-BX_OK))+0.00001);
258 innerME->find(
fullName(
"CorrFractionPhi"))->second->setBinContent(sect,stat,corrFrac);
259 innerME->find(
fullName(
"TriggerInclusivePhi"))->second->setBinContent(sect,stat,besttrigs);
260 innerME->find(
fullName(
"2ndFractionPhi"))->second->setBinContent(sect,stat,secondFrac);
264 whME[wh].find(
fullName(
"CorrFractionSummary"))->second->setBinContent(sect,stat,corrSummary);
265 whME[wh].find(
fullName(
"2ndFractionSummary"))->second->setBinContent(sect,stat,secondSummary);
269 if (hwSource==
"DDU") {
271 TH2F * ThetaBXvsQual = getHisto<TH2F>(dbe->get(getMEName(
"ThetaBXvsQual",
"LocalTriggerTheta", chId)));
272 TH1F * ThetaBestQual = getHisto<TH1F>(dbe->get(getMEName(
"ThetaBestQual",
"LocalTriggerTheta", chId)));
275 if (ThetaBXvsQual && ThetaBestQual && stat<4 && ThetaBestQual->GetEntries()>1) {
276 TH1D* BXH = ThetaBXvsQual->ProjectionY(
"",4,4,
"");
277 int BXOK_bin = BXH->GetEffectiveEntries()>=1 ? BXH->GetMaximumBin(): 10;
278 double BX_OK = ThetaBXvsQual->GetYaxis()->GetBinCenter(BXOK_bin);
279 double trigs = ThetaBestQual->GetEntries();
280 double trigsH = ThetaBestQual->GetBinContent(4);
292 bookWheelHistos(wh,
"CorrectBXTheta");
293 bookWheelHistos(wh,
"HFractionTheta");
295 std::map<std::string,MonitorElement*> *innerME = &(whME.find(wh)->second);
296 innerME->find(
fullName(
"CorrectBXTheta"))->second->setBinContent(sect,stat,BX_OK+0.00001);
297 innerME->find(
fullName(
"HFractionTheta"))->second->setBinContent(sect,stat,trigsH/trigs);
301 else if (hwSource==
"DCC") {
303 TH2F * ThetaPosvsBX = getHisto<TH2F>(dbe->get(getMEName(
"PositionvsBX",
"LocalTriggerTheta", chId)));
306 if (ThetaPosvsBX && stat<4 && ThetaPosvsBX->GetEntries()>1) {
307 TH1D* BX = ThetaPosvsBX->ProjectionX();
308 int BXOK_bin = BX->GetEffectiveEntries()>=1 ? BX->GetMaximumBin(): 10;
309 double BX_OK = ThetaPosvsBX->GetXaxis()->GetBinCenter(BXOK_bin);
313 bookWheelHistos(wh,
"CorrectBXTheta");
315 std::map<std::string,MonitorElement*> *innerME = &(whME.find(wh)->second);
316 innerME->find(
fullName(
"CorrectBXTheta"))->second->setBinContent(sect,stat,BX_OK+0.00001);
328 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){
330 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){
332 for (
int wh=-2; wh<=2; ++wh){
333 std::map<std::string,MonitorElement*> *innerME = &(whME[wh]);
334 if(hwSource==
"COM") {
335 TH2F* matchWhSummary = getHisto<TH2F>(innerME->find(
fullName(
"MatchingSummary"))->second);
336 for (
int sect=1; sect<=12; ++sect){
339 for (
int stat=1; stat<=4; ++stat){
340 switch (static_cast<int>(matchWhSummary->GetBinContent(sect,stat))) {
347 if (matchNoData == 4) matchErr = 5;
348 cmsME.find(
fullName(
"MatchingSummary"))->second->setBinContent(sect,wh+3,matchErr);
352 TH2F* corrWhSummary = getHisto<TH2F>(innerME->find(
fullName(
"CorrFractionSummary"))->second);
353 TH2F* secondWhSummary = getHisto<TH2F>(innerME->find(
fullName(
"2ndFractionSummary"))->second);
354 for (
int sect=1; sect<=12; ++sect){
358 int secondNoData = 0;
359 for (
int stat=1; stat<=4; ++stat){
360 switch (static_cast<int>(corrWhSummary->GetBinContent(sect,stat))) {
366 switch (static_cast<int>(secondWhSummary->GetBinContent(sect,stat))) {
373 if (corrNoData == 4) corrErr = 5;
374 if (secondNoData == 4) secondErr = 5;
375 cmsME.find(
fullName(
"CorrFractionSummary"))->second->setBinContent(sect,wh+3,corrErr);
376 cmsME.find(
fullName(
"2ndFractionSummary"))->second->setBinContent(sect,wh+3,secondErr);
void beginRun(edm::Run const &run, edm::EventSetup const &context)
BeginRun.
virtual ~DTLocalTriggerTest()
Destructor.
void runClientDiagnostic()
Run client analysis.
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
DTLocalTriggerTest(const edm::ParameterSet &ps)
Constructor.
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.