00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "DQM/CSCMonitorModule/interface/CSCDQM_EventProcessor.h"
00020
00021 namespace cscdqm {
00022
00026 void EventProcessor::updateEfficiencyHistos() {
00027
00028 MonitorObject *me = 0, *me1 = 0;
00029
00030 if (config->getNEvents() > 0) {
00031
00032 if (getEMUHisto(h::EMU_CSC_REPORTING, me)) {
00033
00034 const TH2* rep = dynamic_cast<const TH2*>(me->getTH1());
00035
00037 const TObject *tobj = me->getRefRootObject();
00038
00042 if (tobj) {
00043 const TH2* ref = dynamic_cast<const TH2*>(tobj);
00044 summary.ReadReportingChambersRef(rep, ref, config->getEFF_COLD_THRESHOLD(), config->getEFF_COLD_SIGFAIL(), config->getEFF_HOT_THRESHOLD(), config->getEFF_HOT_SIGFAIL());
00045 } else {
00046 summary.ReadReportingChambers(rep, 1.0);
00047 }
00048
00049 if (getEMUHisto(h::EMU_CSC_FORMAT_ERRORS, me1)) {
00050 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00051 summary.ReadErrorChambers(rep, err, FORMAT_ERR, config->getEFF_ERR_THRESHOLD(), config->getEFF_ERR_SIGFAIL());
00052 }
00053
00054 if (getEMUHisto(h::EMU_CSC_L1A_OUT_OF_SYNC, me1)) {
00055 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00056 summary.ReadErrorChambers(rep, err, L1SYNC_ERR, config->getEFF_ERR_THRESHOLD(), config->getEFF_ERR_SIGFAIL());
00057 }
00058
00059 if (getEMUHisto(h::EMU_CSC_DMB_INPUT_FIFO_FULL, me1)) {
00060 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00061 summary.ReadErrorChambers(rep, err, FIFOFULL_ERR, config->getEFF_ERR_THRESHOLD(), config->getEFF_ERR_SIGFAIL());
00062 }
00063
00064 if (getEMUHisto(h::EMU_CSC_DMB_INPUT_TIMEOUT, me1)) {
00065 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00066 summary.ReadErrorChambers(rep, err, INPUTTO_ERR, config->getEFF_ERR_THRESHOLD(), config->getEFF_ERR_SIGFAIL());
00067 }
00068
00069 if (getEMUHisto(h::EMU_CSC_WO_ALCT, me1)) {
00070 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00071 summary.ReadErrorChambers(rep, err, NODATA_ALCT, config->getEFF_NODATA_THRESHOLD(), config->getEFF_NODATA_SIGFAIL());
00072 }
00073
00074 if (getEMUHisto(h::EMU_CSC_WO_CLCT, me1)) {
00075 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00076 summary.ReadErrorChambers(rep, err, NODATA_CLCT, config->getEFF_NODATA_THRESHOLD(), config->getEFF_NODATA_SIGFAIL());
00077 }
00078
00079 if (getEMUHisto(h::EMU_CSC_WO_CFEB, me1)) {
00080 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00081 summary.ReadErrorChambers(rep, err, NODATA_CFEB, config->getEFF_NODATA_THRESHOLD(), config->getEFF_NODATA_SIGFAIL());
00082 }
00083
00084 if (getEMUHisto(h::EMU_CSC_FORMAT_WARNINGS, me1)) {
00085 const TH2* err = dynamic_cast<const TH2*>(me1->getTH1());
00086 summary.ReadErrorChambers(rep, err, CFEB_BWORDS, config->getEFF_NODATA_THRESHOLD(), config->getEFF_NODATA_SIGFAIL());
00087 }
00088
00089 }
00090
00091 writeShifterHistograms();
00092
00097 if (getEMUHisto(h::EMU_PHYSICS_ME1, me)){
00098 LockType lock(me->mutex);
00099 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00100 summary.Write(tmp, 1);
00101 }
00102
00103 if (getEMUHisto(h::EMU_PHYSICS_ME2, me)){
00104 LockType lock(me->mutex);
00105 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00106 summary.Write(tmp, 2);
00107 }
00108
00109 if (getEMUHisto(h::EMU_PHYSICS_ME3, me)){
00110 LockType lock(me->mutex);
00111 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00112 summary.Write(tmp, 3);
00113 }
00114
00115 if (getEMUHisto(h::EMU_PHYSICS_ME4, me)){
00116 LockType lock(me->mutex);
00117 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00118 summary.Write(tmp, 4);
00119 }
00120
00121 if (getEMUHisto(h::EMU_PHYSICS_EMU, me)) {
00122 LockType lock(me->mutex);
00123 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00124 summary.WriteMap(tmp);
00125 }
00126
00127 }
00128
00133 if (config->getPROCESS_EFF_PARAMETERS()) {
00134
00135 {
00136
00137 Address adr;
00138 adr.mask.side = adr.mask.station = adr.mask.ring = true;
00139 adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
00140
00141 double e_detector = 0.0, e_side = 0.0, e_station = 0.0, e_ring = 0.0;
00142 uint32_t e_detector_ch = 0, e_side_ch = 0, e_station_ch = 0;
00143
00144 const HistoId parameters [] = {
00145 h::PAR_CSC_SIDEPLUS_STATION01_RING01,
00146 h::PAR_CSC_SIDEPLUS_STATION01_RING02,
00147 h::PAR_CSC_SIDEPLUS_STATION01_RING03,
00148 h::PAR_CSC_SIDEPLUS_STATION01,
00149 h::PAR_CSC_SIDEPLUS_STATION02_RING01,
00150 h::PAR_CSC_SIDEPLUS_STATION02_RING02,
00151 h::PAR_CSC_SIDEPLUS_STATION02,
00152 h::PAR_CSC_SIDEPLUS_STATION03_RING01,
00153 h::PAR_CSC_SIDEPLUS_STATION03_RING02,
00154 h::PAR_CSC_SIDEPLUS_STATION03,
00155 h::PAR_CSC_SIDEPLUS_STATION04_RING01,
00156 h::PAR_CSC_SIDEPLUS_STATION04_RING02,
00157 h::PAR_CSC_SIDEPLUS_STATION04,
00158 h::PAR_CSC_SIDEPLUS,
00159 h::PAR_CSC_SIDEMINUS_STATION01_RING01,
00160 h::PAR_CSC_SIDEMINUS_STATION01_RING02,
00161 h::PAR_CSC_SIDEMINUS_STATION01_RING03,
00162 h::PAR_CSC_SIDEMINUS_STATION01,
00163 h::PAR_CSC_SIDEMINUS_STATION02_RING01,
00164 h::PAR_CSC_SIDEMINUS_STATION02_RING02,
00165 h::PAR_CSC_SIDEMINUS_STATION02,
00166 h::PAR_CSC_SIDEMINUS_STATION03_RING01,
00167 h::PAR_CSC_SIDEMINUS_STATION03_RING02,
00168 h::PAR_CSC_SIDEMINUS_STATION03,
00169 h::PAR_CSC_SIDEMINUS_STATION04_RING01,
00170 h::PAR_CSC_SIDEMINUS_STATION04_RING02,
00171 h::PAR_CSC_SIDEMINUS_STATION04,
00172 h::PAR_CSC_SIDEMINUS
00173 };
00174
00175 bool calc = (config->getNEvents() > 0);
00176
00177 if (!calc) {
00178 e_detector = e_side = e_station = e_ring = -1.0;
00179 }
00180
00181 unsigned int parameter = 0;
00182 for (adr.side = 1; adr.side <= N_SIDES; adr.side++) {
00183
00184 if (calc) {
00185 e_side = 0.0;
00186 e_side_ch = 0;
00187 }
00188
00189 adr.mask.station = true;
00190 for (adr.station = 1; adr.station <= N_STATIONS; adr.station++) {
00191
00192 if (calc) {
00193 e_station = 0.0;
00194 e_station_ch = 0;
00195 }
00196
00197 adr.mask.ring = true;
00198 for (adr.ring = 1; adr.ring <= summary.getDetector().NumberOfRings(adr.station); adr.ring++) {
00199
00200 if (calc) {
00201 e_ring = summary.GetEfficiencyHW(adr);
00202 uint32_t ch = summary.getDetector().NumberOfChambers(adr.station, adr.ring);
00203 e_station += (e_ring * ch);
00204 e_station_ch += ch;
00205 }
00206
00207 if (summary.getDetector().NumberOfRings(adr.station) > 1) {
00208 if (getParHisto(parameters[parameter++], me)) me->Fill(e_ring);
00209 }
00210
00211 }
00212
00213 adr.mask.ring = false;
00214 if (calc) {
00215 e_side += e_station;
00216 e_side_ch += e_station_ch;
00217 e_station = e_station / e_station_ch;
00218 }
00219
00220 if (getParHisto(parameters[parameter++], me)) me->Fill(e_station);
00221
00222 }
00223
00224 adr.mask.station = false;
00225 if (calc) {
00226 e_detector += e_side;
00227 e_detector_ch += e_side_ch;
00228 e_side = e_side / e_side_ch;
00229 }
00230
00231 if (getParHisto(parameters[parameter++], me)) me->Fill(e_side);
00232
00233 }
00234
00235 if (calc) {
00236 e_detector = e_detector / e_detector_ch;
00237 }
00238
00239 if (getParHisto(h::PAR_REPORT_SUMMARY, me)) me->Fill(e_detector);
00240
00241 }
00242
00243 }
00244
00245 }
00246
00247 void EventProcessor::writeShifterHistograms() {
00248
00249 MonitorObject *me = 0;
00250
00251
00252 const int COLOR_GREEN = 1;
00253 const int COLOR_RED = 2;
00254 const int COLOR_BLUE = 3;
00255 const int COLOR_GREY = 4;
00256 const int COLOR_STANDBY = 5;
00257
00258 if (getEMUHisto(h::EMU_CSC_STATS_SUMMARY, me)) {
00259 LockType lock(me->mutex);
00260 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00261 if (!config->getIN_FULL_STANDBY()) {
00262 summary.WriteChamberState(tmp, 0x1, COLOR_GREEN, true, false);
00263 summary.WriteChamberState(tmp, HWSTATUSERRORBITS, COLOR_RED, false, true);
00264 }
00265 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00266 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false);
00267 }
00268
00269 if (getEMUHisto(h::EMU_CSC_STATS_OCCUPANCY, me)){
00270 LockType lock(me->mutex);
00271 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00272 if (!config->getIN_FULL_STANDBY()) {
00273 summary.WriteChamberState(tmp, 0x4, COLOR_RED, true, false);
00274 summary.WriteChamberState(tmp, 0x8, COLOR_BLUE, false, false);
00275 }
00276 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00277 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00278 }
00279
00280 if (getEMUHisto(h::EMU_CSC_STATS_FORMAT_ERR, me)){
00281 LockType lock(me->mutex);
00282 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00283 if (!config->getIN_FULL_STANDBY()) {
00284 summary.WriteChamberState(tmp, 0x10, COLOR_RED, true, false);
00285 }
00286 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00287 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00288 }
00289
00290 if (getEMUHisto(h::EMU_CSC_STATS_L1SYNC_ERR, me)){
00291 LockType lock(me->mutex);
00292 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00293 if (!config->getIN_FULL_STANDBY()) {
00294 summary.WriteChamberState(tmp, 0x20, COLOR_RED, true, false);
00295 }
00296 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00297 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00298 }
00299
00300 if (getEMUHisto(h::EMU_CSC_STATS_FIFOFULL_ERR, me)){
00301 LockType lock(me->mutex);
00302 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00303 if (!config->getIN_FULL_STANDBY()) {
00304 summary.WriteChamberState(tmp, 0x40, COLOR_RED, true, false);
00305 }
00306 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00307 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00308 }
00309
00310 if (getEMUHisto(h::EMU_CSC_STATS_INPUTTO_ERR, me)){
00311 LockType lock(me->mutex);
00312 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00313 if (!config->getIN_FULL_STANDBY()) {
00314 summary.WriteChamberState(tmp, 0x80, COLOR_RED, true, false);
00315 }
00316 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00317 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00318 }
00319
00320 if (getEMUHisto(h::EMU_CSC_STATS_WO_ALCT, me)){
00321 LockType lock(me->mutex);
00322 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00323 if (!config->getIN_FULL_STANDBY()) {
00324 summary.WriteChamberState(tmp, 0x100, COLOR_RED, true, false);
00325 }
00326 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00327 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00328 }
00329
00330 if (getEMUHisto(h::EMU_CSC_STATS_WO_CLCT, me)){
00331 LockType lock(me->mutex);
00332 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00333 if (!config->getIN_FULL_STANDBY()) {
00334 summary.WriteChamberState(tmp, 0x200, COLOR_RED, true, false);
00335 }
00336 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00337 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00338 }
00339
00340 if (getEMUHisto(h::EMU_CSC_STATS_WO_CFEB, me)){
00341 LockType lock(me->mutex);
00342 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00343 if (!config->getIN_FULL_STANDBY()) {
00344 summary.WriteChamberState(tmp, 0x400, COLOR_RED, true, false);
00345 }
00346 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00347 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00348 }
00349
00350 if (getEMUHisto(h::EMU_CSC_STATS_CFEB_BWORDS, me)){
00351 LockType lock(me->mutex);
00352 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00353 if (!config->getIN_FULL_STANDBY()) {
00354 summary.WriteChamberState(tmp, 0x800, COLOR_RED, true, false);
00355 }
00356 summary.WriteChamberState(tmp, 0x1000, COLOR_STANDBY, false);
00357 summary.WriteChamberState(tmp, 0x2, COLOR_GREY, false, false);
00358 }
00359
00360 }
00361
00366 void EventProcessor::standbyEfficiencyHistos(HWStandbyType& standby) {
00367
00368 Address adr;
00369 adr.mask.side = true;
00370 adr.mask.station = adr.mask.ring = adr.mask.chamber = adr.mask.layer = adr.mask.cfeb = adr.mask.hv = false;
00371
00372 adr.side = 1;
00373 summary.SetValue(adr, STANDBY, (standby.MeP ? 1 : 0));
00374 if (!standby.MeP) {
00375 summary.SetValue(adr, WAS_ON);
00376 }
00377
00378 adr.side = 2;
00379 summary.SetValue(adr, STANDBY, (standby.MeM ? 1 : 0));
00380 if (!standby.MeM) {
00381 summary.SetValue(adr, WAS_ON);
00382 }
00383
00384 MonitorObject *me = 0;
00385 if (getEMUHisto(h::EMU_CSC_STANDBY, me)){
00386 LockType lock(me->mutex);
00387 TH2* tmp = dynamic_cast<TH2*>(me->getTH1Lock());
00388
00389
00390 summary.WriteChamberState(tmp, 0x1000, 5);
00391
00392
00393 summary.WriteChamberState(tmp, 0x3000, 1, false);
00394
00395 }
00396
00397 }
00398
00399 }
00400