00001 #ifndef DQM_HCALMONITORTASKS_HCALLASERMONITOR_H
00002 #define DQM_HCALMONITORTASKS_HCALLASERMONITOR_H
00003
00004 #include "DQM/HcalMonitorTasks/interface/HcalBaseMonitor.h"
00005 #include "DataFormats/HcalDigi/interface/HcalUnpackerReport.h"
00006 #include "DQMServices/Core/interface/DQMStore.h"
00007 #include "DQMServices/Core/interface/MonitorElement.h"
00008 #include "DataFormats/HcalDigi/interface/HcalLaserDigi.h"
00009
00016 static const float adc2fc_[128] = { -0.5, 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5,
00017 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 15., 17.,
00018 19., 21., 23., 25., 27., 29.5,
00019 32.5, 35.5, 38.5, 42., 46., 50., 54.5, 59.5,
00020 64.5, 59.5, 64.5, 69.5, 74.5,
00021 79.5, 84.5, 89.5, 94.5, 99.5, 104.5, 109.5,
00022 114.5, 119.5, 124.5, 129.5, 137.,
00023 147., 157., 167., 177., 187., 197., 209.5, 224.5,
00024 239.5, 254.5, 272., 292.,
00025 312., 334.5, 359.5, 384.5, 359.5, 384.5, 409.5,
00026 434.5, 459.5, 484.5, 509.5,
00027 534.5, 559.5, 584.5, 609.5, 634.5, 659.5, 684.5, 709.5,
00028 747., 797., 847.,
00029 897., 947., 997., 1047., 1109.5, 1184.5, 1259.5,
00030 1334.5, 1422., 1522., 1622.,
00031 1734.5, 1859.5, 1984.5, 1859.5, 1984.5, 2109.5,
00032 2234.5, 2359.5, 2484.5,
00033 2609.5, 2734.5, 2859.5, 2984.5, 3109.5,
00034 3234.5, 3359.5, 3484.5, 3609.5, 3797.,
00035 4047., 4297., 4547., 4797., 5047., 5297.,
00036 5609.5, 5984.5, 6359.5, 6734.5,
00037 7172., 7672., 8172., 8734.5, 9359.5, 9984.5 };
00038
00039
00040
00041
00042 class HcalLaserMonitor: public HcalBaseMonitor {
00043
00044 public:
00045 HcalLaserMonitor();
00046 ~HcalLaserMonitor();
00047
00048 void setup( const edm::ParameterSet&, DQMStore* );
00049 void processEvent( const HBHEDigiCollection&, const HODigiCollection&,
00050 const HFDigiCollection&, const HcalLaserDigi&,
00051 const HcalDbService& );
00052 void reset();
00053 void done();
00054
00055 private:
00056 void perChanHists( const int, const HcalDetId, const float*,
00057 map<HcalDetId, MonitorElement*>&,
00058 map<HcalDetId, MonitorElement*>&,
00059 map<HcalDetId, MonitorElement*>&,
00060 const string );
00061
00062 map<HcalDetId, MonitorElement*>::iterator meIter_;
00063
00064 bool doPerChannel_;
00065
00066 int sigS0_, sigS1_;
00067 float adcThresh_;
00068
00069 int ievt_;
00070 HcalCalibrations calibs_;
00071
00072 MonitorElement* meEVT_;
00073
00074 struct {
00075 map<HcalDetId,MonitorElement*> perChanShape_;
00076 map<HcalDetId,MonitorElement*> perChanTime_;
00077 map<HcalDetId,MonitorElement*> perChanEnergy_;
00078
00079 MonitorElement* allShapePedSub_;
00080
00081 MonitorElement* allTime_;
00082 MonitorElement* allEnergy_;
00083
00084
00085 MonitorElement* rms_shape_;
00086 MonitorElement* mean_shape_;
00087
00088 MonitorElement* rms_time_;
00089 MonitorElement* mean_time_;
00090
00091 MonitorElement* rms_energy_;
00092 MonitorElement* mean_energy_;
00093 } hbHists, heHists, hfHists, hoHists;
00094
00095 struct {
00096 MonitorElement* numChannels_;
00097
00098 MonitorElement* trigger_;
00099 MonitorElement* rawOptosync_;
00100 MonitorElement* clockOptosync_;
00101
00102 MonitorElement* rawOptosync_Trigger_;
00103 } TDCHists;
00104
00105 MonitorElement* QADC_[32];
00106
00107
00108 MonitorElement* MEAN_MAP_TIME_L1_;
00109 MonitorElement* MEAN_MAP_TIME_L2_;
00110 MonitorElement* MEAN_MAP_TIME_L3_;
00111 MonitorElement* MEAN_MAP_TIME_L4_;
00112 MonitorElement* RMS_MAP_TIME_L1_;
00113 MonitorElement* RMS_MAP_TIME_L2_;
00114 MonitorElement* RMS_MAP_TIME_L3_;
00115 MonitorElement* RMS_MAP_TIME_L4_;
00116
00117 MonitorElement* MEAN_MAP_SHAPE_L1_;
00118 MonitorElement* MEAN_MAP_SHAPE_L2_;
00119 MonitorElement* MEAN_MAP_SHAPE_L3_;
00120 MonitorElement* MEAN_MAP_SHAPE_L4_;
00121 MonitorElement* RMS_MAP_SHAPE_L1_;
00122 MonitorElement* RMS_MAP_SHAPE_L2_;
00123 MonitorElement* RMS_MAP_SHAPE_L3_;
00124 MonitorElement* RMS_MAP_SHAPE_L4_;
00125
00126 MonitorElement* MEAN_MAP_ENERGY_L1_;
00127 MonitorElement* MEAN_MAP_ENERGY_L2_;
00128 MonitorElement* MEAN_MAP_ENERGY_L3_;
00129 MonitorElement* MEAN_MAP_ENERGY_L4_;
00130 MonitorElement* RMS_MAP_ENERGY_L1_;
00131 MonitorElement* RMS_MAP_ENERGY_L2_;
00132 MonitorElement* RMS_MAP_ENERGY_L3_;
00133 MonitorElement* RMS_MAP_ENERGY_L4_;
00134 };
00135
00136 #endif