![]() |
![]() |
#include <DQM/EcalEndcapMonitorTasks/interface/EETimingTask.h>
Public Member Functions | |
EETimingTask (const edm::ParameterSet &ps) | |
Constructor. | |
virtual | ~EETimingTask () |
Destructor. | |
Protected Member Functions | |
void | analyze (const edm::Event &e, const edm::EventSetup &c) |
Analyze. | |
void | beginJob (const edm::EventSetup &c) |
BeginJob. | |
void | beginRun (const edm::Run &r, const edm::EventSetup &c) |
BeginRun. | |
void | cleanup (void) |
Cleanup. | |
void | endJob (void) |
EndJob. | |
void | endRun (const edm::Run &r, const edm::EventSetup &c) |
EndRun. | |
void | reset (void) |
Reset. | |
void | setup (void) |
Setup. | |
Private Attributes | |
DQMStore * | dqmStore_ |
edm::InputTag | EcalRawDataCollection_ |
edm::InputTag | EcalUncalibratedRecHitCollection_ |
bool | enableCleanup_ |
int | ievt_ |
bool | init_ |
bool | mergeRuns_ |
MonitorElement * | meTimeAmpli_ [18] |
MonitorElement * | meTimeMap_ [18] |
std::string | prefixME_ |
Definition at line 20 of file EETimingTask.h.
EETimingTask::EETimingTask | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 34 of file EETimingTask.cc.
References dqmStore_, EcalRawDataCollection_, EcalUncalibratedRecHitCollection_, enableCleanup_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), i, init_, mergeRuns_, meTimeAmpli_, meTimeMap_, and prefixME_.
00034 { 00035 00036 init_ = false; 00037 00038 dqmStore_ = Service<DQMStore>().operator->(); 00039 00040 prefixME_ = ps.getUntrackedParameter<string>("prefixME", ""); 00041 00042 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false); 00043 00044 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false); 00045 00046 EcalRawDataCollection_ = ps.getParameter<edm::InputTag>("EcalRawDataCollection"); 00047 EcalUncalibratedRecHitCollection_ = ps.getParameter<edm::InputTag>("EcalUncalibratedRecHitCollection"); 00048 00049 for (int i = 0; i < 18; i++) { 00050 meTimeMap_[i] = 0; 00051 meTimeAmpli_[i] = 0; 00052 } 00053 00054 }
EETimingTask::~EETimingTask | ( | ) | [virtual] |
void EETimingTask::analyze | ( | const edm::Event & | e, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
Analyze.
Implements edm::EDAnalyzer.
Definition at line 145 of file EETimingTask.cc.
References EcalDCCHeaderBlock::COSMIC, EcalDCCHeaderBlock::COSMICS_GLOBAL, EcalDCCHeaderBlock::COSMICS_LOCAL, EcalEndcap, EcalRawDataCollection_, EcalUncalibratedRecHitCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), ievt_, init_, Numbers::iSM(), LogDebug, meTimeAmpli_, meTimeMap_, EcalDCCHeaderBlock::MTCC, EcalDCCHeaderBlock::PHYSICS_GLOBAL, EcalDCCHeaderBlock::PHYSICS_LOCAL, setup(), and Numbers::subDet().
00145 { 00146 00147 bool isData = true; 00148 bool enable = false; 00149 int runType[18] = { -1 }; 00150 00151 Handle<EcalRawDataCollection> dcchs; 00152 00153 if ( e.getByLabel(EcalRawDataCollection_, dcchs) ) { 00154 00155 for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) { 00156 00157 if ( Numbers::subDet( *dcchItr ) != EcalEndcap ) continue; 00158 00159 int ism = Numbers::iSM( *dcchItr, EcalEndcap ); 00160 00161 runType[ism-1] = dcchItr->getRunType(); 00162 00163 if ( dcchItr->getRunType() == EcalDCCHeaderBlock::COSMIC || 00164 dcchItr->getRunType() == EcalDCCHeaderBlock::MTCC || 00165 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_GLOBAL || 00166 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_GLOBAL || 00167 dcchItr->getRunType() == EcalDCCHeaderBlock::COSMICS_LOCAL || 00168 dcchItr->getRunType() == EcalDCCHeaderBlock::PHYSICS_LOCAL ) enable = true; 00169 00170 } 00171 00172 } else { 00173 00174 isData = false; enable = true; 00175 LogWarning("EETimingTask") << EcalRawDataCollection_ << " not available"; 00176 00177 } 00178 00179 if ( ! enable ) return; 00180 00181 if ( ! init_ ) this->setup(); 00182 00183 ievt_++; 00184 00185 Handle<EcalUncalibratedRecHitCollection> hits; 00186 00187 if ( e.getByLabel(EcalUncalibratedRecHitCollection_, hits) ) { 00188 00189 int neh = hits->size(); 00190 LogDebug("EETimingTask") << "event " << ievt_ << " hits collection size " << neh; 00191 00192 for ( EcalUncalibratedRecHitCollection::const_iterator hitItr = hits->begin(); hitItr != hits->end(); ++hitItr ) { 00193 00194 EEDetId id = hitItr->id(); 00195 00196 int ix = id.ix(); 00197 int iy = id.iy(); 00198 00199 int ism = Numbers::iSM( id ); 00200 00201 if ( ism >= 1 && ism <= 9 ) ix = 101 - ix; 00202 00203 float xix = ix - 0.5; 00204 float xiy = iy - 0.5; 00205 00206 if ( isData ) { 00207 00208 if ( ! ( runType[ism-1] == EcalDCCHeaderBlock::COSMIC || 00209 runType[ism-1] == EcalDCCHeaderBlock::MTCC || 00210 runType[ism-1] == EcalDCCHeaderBlock::COSMICS_GLOBAL || 00211 runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_GLOBAL || 00212 runType[ism-1] == EcalDCCHeaderBlock::COSMICS_LOCAL || 00213 runType[ism-1] == EcalDCCHeaderBlock::PHYSICS_LOCAL ) ) continue; 00214 00215 } 00216 00217 LogDebug("EETimingTask") << " det id = " << id; 00218 LogDebug("EETimingTask") << " sm, ix, iy " << ism << " " << ix << " " << iy; 00219 00220 MonitorElement* meTimeMap = 0; 00221 MonitorElement* meTimeAmpli = 0; 00222 00223 meTimeMap = meTimeMap_[ism-1]; 00224 meTimeAmpli = meTimeAmpli_[ism-1]; 00225 00226 float xval = hitItr->amplitude(); 00227 if ( xval <= 0. ) xval = 0.0; 00228 float yval = hitItr->jitter() + 5.0; 00229 if ( yval <= 0. ) yval = 0.0; 00230 float zval = hitItr->pedestal(); 00231 if ( zval <= 0. ) zval = 0.0; 00232 00233 LogDebug("EETimingTask") << " hit amplitude " << xval; 00234 LogDebug("EETimingTask") << " hit jitter " << yval; 00235 LogDebug("EETimingTask") << " hit pedestal " << zval; 00236 00237 if ( meTimeAmpli ) meTimeAmpli->Fill(xval, yval); 00238 00239 if ( xval > 16. ) { 00240 if ( meTimeMap ) meTimeMap->Fill(xix, xiy, yval); 00241 } 00242 00243 } 00244 00245 } else { 00246 00247 LogWarning("EETimingTask") << EcalUncalibratedRecHitCollection_ << " not available"; 00248 00249 } 00250 00251 }
void EETimingTask::beginJob | ( | const edm::EventSetup & | c | ) | [protected, virtual] |
BeginJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 60 of file EETimingTask.cc.
References dqmStore_, ievt_, Numbers::initGeometry(), prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().
00060 { 00061 00062 ievt_ = 0; 00063 00064 if ( dqmStore_ ) { 00065 dqmStore_->setCurrentFolder(prefixME_ + "/EETimingTask"); 00066 dqmStore_->rmdir(prefixME_ + "/EETimingTask"); 00067 } 00068 00069 Numbers::initGeometry(c, false); 00070 00071 }
void EETimingTask::beginRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
BeginRun.
Reimplemented from edm::EDAnalyzer.
Definition at line 73 of file EETimingTask.cc.
References mergeRuns_, and reset().
00073 { 00074 00075 if ( ! mergeRuns_ ) this->reset(); 00076 00077 }
Cleanup.
Definition at line 119 of file EETimingTask.cc.
References dqmStore_, edm::getName(), i, init_, meTimeMap_, prefixME_, DQMStore::removeElement(), and DQMStore::setCurrentFolder().
Referenced by endJob().
00119 { 00120 00121 if ( ! init_ ) return; 00122 00123 if ( dqmStore_ ) { 00124 dqmStore_->setCurrentFolder(prefixME_ + "/EETimingTask"); 00125 00126 for ( int i = 0; i < 18; i++ ) { 00127 if ( meTimeMap_[i] ) dqmStore_->removeElement( meTimeMap_[i]->getName() ); 00128 meTimeMap_[i] = 0; 00129 } 00130 00131 } 00132 00133 init_ = false; 00134 00135 }
EndJob.
Reimplemented from edm::EDAnalyzer.
Definition at line 137 of file EETimingTask.cc.
References cleanup(), enableCleanup_, and ievt_.
00137 { 00138 00139 LogInfo("EETimingTask") << "analyzed " << ievt_ << " events"; 00140 00141 if ( enableCleanup_ ) this->cleanup(); 00142 00143 }
void EETimingTask::endRun | ( | const edm::Run & | r, | |
const edm::EventSetup & | c | |||
) | [protected, virtual] |
Reset.
Definition at line 83 of file EETimingTask.cc.
References i, meTimeAmpli_, meTimeMap_, and MonitorElement::Reset().
Referenced by beginRun().
00083 { 00084 00085 for (int i = 0; i < 18; i++) { 00086 if ( meTimeMap_[i] ) meTimeMap_[i]->Reset(); 00087 if ( meTimeAmpli_[i] ) meTimeAmpli_[i]->Reset(); 00088 } 00089 00090 }
Setup.
Definition at line 92 of file EETimingTask.cc.
References DQMStore::book2D(), DQMStore::bookProfile2D(), dqmStore_, histo, i, init_, Numbers::ix0EE(), Numbers::iy0EE(), meTimeAmpli_, meTimeMap_, prefixME_, Numbers::sEE(), MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), and DQMStore::tag().
Referenced by analyze().
00092 { 00093 00094 init_ = true; 00095 00096 char histo[200]; 00097 00098 if ( dqmStore_ ) { 00099 dqmStore_->setCurrentFolder(prefixME_ + "/EETimingTask"); 00100 00101 for (int i = 0; i < 18; i++) { 00102 sprintf(histo, "EETMT timing %s", Numbers::sEE(i+1).c_str()); 00103 meTimeMap_[i] = dqmStore_->bookProfile2D(histo, histo, 50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50., 50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50., 4096, 0., 4096., "s"); 00104 meTimeMap_[i]->setAxisTitle("jx", 1); 00105 meTimeMap_[i]->setAxisTitle("jy", 2); 00106 dqmStore_->tag(meTimeMap_[i], i+1); 00107 00108 sprintf(histo, "EETMT timing vs amplitude %s", Numbers::sEE(i+1).c_str()); 00109 meTimeAmpli_[i] = dqmStore_->book2D(histo, histo, 200, 0., 200., 100, 0., 10.); 00110 meTimeAmpli_[i]->setAxisTitle("amplitude", 1); 00111 meTimeAmpli_[i]->setAxisTitle("jitter", 2); 00112 dqmStore_->tag(meTimeAmpli_[i], i+1); 00113 } 00114 00115 } 00116 00117 }
DQMStore* EETimingTask::dqmStore_ [private] |
Definition at line 60 of file EETimingTask.h.
Referenced by beginJob(), cleanup(), EETimingTask(), and setup().
bool EETimingTask::enableCleanup_ [private] |
int EETimingTask::ievt_ [private] |
bool EETimingTask::init_ [private] |
Definition at line 74 of file EETimingTask.h.
Referenced by analyze(), cleanup(), EETimingTask(), and setup().
bool EETimingTask::mergeRuns_ [private] |
MonitorElement* EETimingTask::meTimeAmpli_[18] [private] |
Definition at line 72 of file EETimingTask.h.
Referenced by analyze(), EETimingTask(), reset(), and setup().
MonitorElement* EETimingTask::meTimeMap_[18] [private] |
Definition at line 71 of file EETimingTask.h.
Referenced by analyze(), cleanup(), EETimingTask(), reset(), and setup().
std::string EETimingTask::prefixME_ [private] |
Definition at line 62 of file EETimingTask.h.
Referenced by beginJob(), cleanup(), EETimingTask(), and setup().