![]() |
![]() |
#include <DQM/DTMonitorClient/src/DTLocalTriggerTest.h>
Public Member Functions | |
DTLocalTriggerTest (const edm::ParameterSet &ps) | |
Constructor. | |
virtual | ~DTLocalTriggerTest () |
Destructor. | |
Protected Member Functions | |
void | beginJob (const edm::EventSetup &c) |
Begin Job. | |
void | runClientDiagnostic () |
Run client analysis. |
Definition at line 20 of file DTLocalTriggerTest.h.
DTLocalTriggerTest::DTLocalTriggerTest | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 36 of file DTLocalTriggerTest.cc.
References DTLocalTriggerBaseTest::baseFolder, and DTLocalTriggerBaseTest::setConfig().
00036 { 00037 00038 setConfig(ps,"DTLocalTrigger"); 00039 baseFolder = "DT/03-LocalTrigger/"; 00040 00041 }
DTLocalTriggerTest::~DTLocalTriggerTest | ( | ) | [virtual] |
void DTLocalTriggerTest::beginJob | ( | const edm::EventSetup & | c | ) | [protected, virtual] |
Begin Job.
Reimplemented from DTLocalTriggerBaseTest.
Definition at line 48 of file DTLocalTriggerTest.cc.
References DTLocalTriggerBaseTest::beginJob(), DTLocalTriggerBaseTest::bookCmsHistos(), DTLocalTriggerBaseTest::bookWheelHistos(), edm::ParameterSet::getUntrackedParameter(), DTLocalTriggerBaseTest::hwSource, DTLocalTriggerBaseTest::hwSources, DTLocalTriggerBaseTest::parameters, DTLocalTriggerBaseTest::trigSource, and DTLocalTriggerBaseTest::trigSources.
00048 { 00049 00050 DTLocalTriggerBaseTest::beginJob(c); 00051 00052 00053 vector<string>::const_iterator iTr = trigSources.begin(); 00054 vector<string>::const_iterator trEnd = trigSources.end(); 00055 vector<string>::const_iterator iHw = hwSources.begin(); 00056 vector<string>::const_iterator hwEnd = hwSources.end(); 00057 00058 00059 //Booking 00060 if(parameters.getUntrackedParameter<bool>("staticBooking", true)){ 00061 for (; iTr != trEnd; ++iTr){ 00062 trigSource = (*iTr); 00063 for (; iHw != hwEnd; ++iHw){ 00064 hwSource = (*iHw); 00065 // Loop over the TriggerUnits 00066 for (int wh=-2; wh<=2; ++wh){ 00067 // for (int sect=1; sect<=12; ++sect){ 00068 // //bookSectorHistos(wh,sect,"","CorrectBXPhi"); 00069 // bookSectorHistos(wh,sect,"","CorrFractionPhi"); 00070 // bookSectorHistos(wh,sect,"","2ndFractionPhi"); 00071 // if (hwSource!="DCC") { 00072 // //bookSectorHistos(wh,sect,"","CorrectBXTheta"); 00073 // bookSectorHistos(wh,sect,"","HFractionTheta"); 00074 // } 00075 // } 00076 bookWheelHistos(wh,"","CorrectBXPhi"); 00077 bookWheelHistos(wh,"","ResidualBXPhi"); 00078 bookWheelHistos(wh,"","CorrFractionPhi"); 00079 bookWheelHistos(wh,"","2ndFractionPhi"); 00080 bookWheelHistos(wh,"","TriggerInclusivePhi"); 00081 if (hwSource!="DCC") { 00082 bookWheelHistos(wh,"","CorrectBXTheta"); 00083 bookWheelHistos(wh,"","HFractionTheta"); 00084 } 00085 } 00086 } 00087 } 00088 } 00089 // Summary test histo booking (only static) 00090 for (iTr = trigSources.begin(); iTr != trEnd; ++iTr){ 00091 trigSource = (*iTr); 00092 for (iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){ 00093 hwSource = (*iHw); 00094 // Loop over the TriggerUnits 00095 for (int wh=-2; wh<=2; ++wh){ 00096 bookWheelHistos(wh,"","CorrFractionSummary"); 00097 bookWheelHistos(wh,"","2ndFractionSummary"); 00098 } 00099 bookCmsHistos("CorrFractionSummary"); 00100 bookCmsHistos("2ndFractionSummary"); 00101 } 00102 } 00103 00104 }
void DTLocalTriggerTest::runClientDiagnostic | ( | ) | [protected, virtual] |
Run client analysis.
Implements DTLocalTriggerBaseTest.
Definition at line 106 of file DTLocalTriggerTest.cc.
References DTLocalTriggerBaseTest::bookWheelHistos(), DTLocalTriggerBaseTest::cmsME, DTLocalTriggerBaseTest::dbe, end, find(), DTLocalTriggerBaseTest::fullName(), DQMStore::get(), DTLocalTriggerBaseTest::getMEName(), edm::ParameterSet::getUntrackedParameter(), DTLocalTriggerBaseTest::hwSource, DTLocalTriggerBaseTest::hwSources, DTLocalTriggerBaseTest::parameters, DTLocalTriggerBaseTest::trigSource, DTLocalTriggerBaseTest::trigSources, and DTLocalTriggerBaseTest::whME.
00106 { 00107 00108 // Loop over Trig & Hw sources 00109 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){ 00110 trigSource = (*iTr); 00111 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){ 00112 hwSource = (*iHw); 00113 // Loop over the TriggerUnits 00114 for (int stat=1; stat<=4; ++stat){ 00115 for (int wh=-2; wh<=2; ++wh){ 00116 for (int sect=1; sect<=12; ++sect){ 00117 DTChamberId chId(wh,stat,sect); 00118 // int sector_id = (wh+3)+(sect-1)*5; 00119 // uint32_t indexCh = chId.rawId(); 00120 00121 00122 // Perform DCC/DDU common plot analysis (Phi ones) 00123 TH2F * BXvsQual = getHisto<TH2F>(dbe->get(getMEName("BXvsQual","LocalTriggerPhi", chId))); 00124 TH1F * BestQual = getHisto<TH1F>(dbe->get(getMEName("BestQual","LocalTriggerPhi", chId))); 00125 TH2F * Flag1stvsQual = getHisto<TH2F>(dbe->get(getMEName("Flag1stvsQual","LocalTriggerPhi", chId))); 00126 if (BXvsQual && Flag1stvsQual && BestQual) { 00127 00128 int corrSummary = 1; 00129 int secondSummary = 1; 00130 00131 if (BestQual->GetEntries()>1) { 00132 00133 TH1D* BXHH = BXvsQual->ProjectionY("",6,7,""); 00134 TH1D* Flag1st = Flag1stvsQual->ProjectionY(); 00135 int BXOK_bin = BXHH->GetEntries()>=1 ? BXHH->GetMaximumBin() : 51; 00136 double BXMean = BXHH->GetEntries()>=1 ? BXHH->GetMean() : 51; 00137 double BX_OK = BXvsQual->GetYaxis()->GetBinCenter(BXOK_bin); 00138 double trigsFlag2nd = Flag1st->GetBinContent(2); 00139 double trigs = Flag1st->GetEntries(); 00140 double besttrigs = BestQual->GetEntries(); 00141 double besttrigsCorr = BestQual->Integral(5,7,""); 00142 delete BXHH; 00143 delete Flag1st; 00144 00145 double corrFrac = besttrigsCorr/besttrigs; 00146 double secondFrac = trigsFlag2nd/trigs; 00147 if (corrFrac < parameters.getUntrackedParameter<double>("corrFracError",.5)){ 00148 corrSummary = 2; 00149 } 00150 else if (corrFrac < parameters.getUntrackedParameter<double>("corrFracWarning",.6)){ 00151 corrSummary = 3; 00152 } 00153 else { 00154 corrSummary = 0; 00155 } 00156 if (secondFrac > parameters.getUntrackedParameter<double>("secondFracError",.2)){ 00157 secondSummary = 2; 00158 } 00159 else if (secondFrac > parameters.getUntrackedParameter<double>("secondFracWarning",.1)){ 00160 secondSummary = 3; 00161 } 00162 else { 00163 secondSummary = 0; 00164 } 00165 00166 // if( secME[sector_id].find(fullName("CorrFractionPhi")) == secME[sector_id].end() ){ 00167 // //bookSectorHistos(wh,sect,"","CorrectBXPhi"); 00168 // bookSectorHistos(wh,sect,"","CorrFractionPhi"); 00169 // bookSectorHistos(wh,sect,"","2ndFractionPhi"); 00170 // } 00171 if( whME[wh].find(fullName("CorrectBXPhi")) == whME[wh].end() ){ 00172 bookWheelHistos(wh,"","ResidualBXPhi"); 00173 bookWheelHistos(wh,"","CorrectBXPhi"); 00174 bookWheelHistos(wh,"","CorrFractionPhi"); 00175 bookWheelHistos(wh,"","2ndFractionPhi"); 00176 bookWheelHistos(wh,"","TriggerInclusivePhi"); 00177 } 00178 //std::map<std::string,MonitorElement*> *innerME = &(secME[sector_id]); 00179 //innerME->find(fullName("CorrectBXPhi"))->second->setBinContent(stat,BX_OK); 00180 //innerME->find(fullName("CorrFractionPhi"))->second->setBinContent(stat,corrFrac); 00181 //innerME->find(fullName("2ndFractionPhi"))->second->setBinContent(stat,secondFrac); 00182 00183 std::map<std::string,MonitorElement*> *innerME = &(whME[wh]); 00184 innerME->find(fullName("CorrectBXPhi"))->second->setBinContent(sect,stat,BX_OK+0.00001); 00185 innerME->find(fullName("ResidualBXPhi"))->second->setBinContent(sect,stat,round(25.*(BXMean-BX_OK))+0.00001); 00186 innerME->find(fullName("CorrFractionPhi"))->second->setBinContent(sect,stat,corrFrac); 00187 innerME->find(fullName("TriggerInclusivePhi"))->second->setBinContent(sect,stat,besttrigs); 00188 innerME->find(fullName("2ndFractionPhi"))->second->setBinContent(sect,stat,secondFrac); 00189 00190 } 00191 00192 whME[wh].find(fullName("CorrFractionSummary"))->second->setBinContent(sect,stat,corrSummary); 00193 whME[wh].find(fullName("2ndFractionSummary"))->second->setBinContent(sect,stat,secondSummary); 00194 00195 } 00196 00197 // Perform DCC/DDU common plot analysis (Theta ones) 00198 TH2F * ThetaBXvsQual = getHisto<TH2F>(dbe->get(getMEName("ThetaBXvsQual","LocalTriggerTheta", chId))); 00199 TH1F * ThetaBestQual = getHisto<TH1F>(dbe->get(getMEName("ThetaBestQual","LocalTriggerTheta", chId))); 00200 00201 // no theta triggers in stat 4! 00202 if (ThetaBXvsQual && ThetaBestQual && stat<4 && ThetaBestQual->GetEntries()>1) { 00203 TH1D* BXH = ThetaBXvsQual->ProjectionY("",4,4,""); 00204 int BXOK_bin = BXH->GetEffectiveEntries()>=1 ? BXH->GetMaximumBin(): 10; 00205 double BX_OK = ThetaBXvsQual->GetYaxis()->GetBinCenter(BXOK_bin); 00206 double trigs = ThetaBestQual->GetEntries(); 00207 double trigsH = ThetaBestQual->GetBinContent(4); 00208 delete BXH; 00209 00210 // if( secME[sector_id].find(fullName("HFractionTheta")) == secME[sector_id].end() ){ 00211 // // bookSectorHistos(wh,sect,"","CorrectBXTheta"); 00212 // bookSectorHistos(wh,sect,"","HFractionTheta"); 00213 // } 00214 //std::map<std::string,MonitorElement*> *innerME = &(secME.find(sector_id)->second); 00215 // innerME->find(fullName("CorrectBXTheta"))->second->setBinContent(stat,BX_OK); 00216 //innerME->find(fullName("HFractionTheta"))->second->setBinContent(stat,trigsH/trigs); 00217 00218 if( whME[wh].find(fullName("HFractionTheta")) == whME[wh].end() ){ 00219 bookWheelHistos(wh,"","CorrectBXTheta"); 00220 bookWheelHistos(wh,"","HFractionTheta"); 00221 } 00222 std::map<std::string,MonitorElement*> *innerME = &(whME.find(wh)->second); 00223 innerME->find(fullName("CorrectBXTheta"))->second->setBinContent(sect,stat,BX_OK); 00224 innerME->find(fullName("HFractionTheta"))->second->setBinContent(sect,stat,trigsH/trigs); 00225 00226 } 00227 00228 } 00229 } 00230 } 00231 } 00232 } 00233 00234 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){ 00235 trigSource = (*iTr); 00236 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){ 00237 hwSource = (*iHw); 00238 for (int wh=-2; wh<=2; ++wh){ 00239 std::map<std::string,MonitorElement*> *innerME = &(whME[wh]); 00240 TH2F* corrWhSummary = getHisto<TH2F>(innerME->find(fullName("CorrFractionSummary"))->second); 00241 TH2F* secondWhSummary = getHisto<TH2F>(innerME->find(fullName("2ndFractionSummary"))->second); 00242 for (int sect=1; sect<=12; ++sect){ 00243 int corrErr = 0; 00244 int secondErr = 0; 00245 int corrNoData = 0; 00246 int secondNoData = 0; 00247 for (int stat=1; stat<=4; ++stat){ 00248 switch (static_cast<int>(corrWhSummary->GetBinContent(sect,stat))) { 00249 case 1: 00250 corrNoData++; 00251 case 2: 00252 corrErr++; 00253 } 00254 switch (static_cast<int>(secondWhSummary->GetBinContent(sect,stat))) { 00255 case 1: 00256 secondNoData++; 00257 case 2: 00258 secondErr++; 00259 } 00260 } 00261 if (corrNoData == 4) corrErr = 5; 00262 if (secondNoData == 4) secondErr = 5; 00263 cmsME.find(fullName("CorrFractionSummary"))->second->setBinContent(sect,wh+3,corrErr); 00264 cmsME.find(fullName("2ndFractionSummary"))->second->setBinContent(sect,wh+3,secondErr); 00265 } 00266 } 00267 } 00268 } 00269 00270 }