#include <CaloOnlineTools/EcalTools/plugins/EcalMipGraphs.h>
Implementation: <Notes on="" implementation>="">
Definition at line 60 of file EcalMipGraphs.h.
EcalMipGraphs::EcalMipGraphs | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 36 of file EcalMipGraphs.cc.
References abscissa, allFedsTimingHist_, fedMap_, edm::ParameterSet::getUntrackedParameter(), graphCount, i, maskedChannels_, maskedEBs_, maskedFEDs_, and naiveEvtNum_.
00036 : 00037 EBUncalibratedRecHitCollection_ (iConfig.getParameter<edm::InputTag>("EcalUncalibratedRecHitCollectionEB")), 00038 EEUncalibratedRecHitCollection_ (iConfig.getParameter<edm::InputTag>("EcalUncalibratedRecHitCollectionEE")), 00039 EBDigis_ (iConfig.getParameter<edm::InputTag>("EBDigiCollection")), 00040 EEDigis_ (iConfig.getParameter<edm::InputTag>("EEDigiCollection")), 00041 headerProducer_ (iConfig.getParameter<edm::InputTag> ("headerProducer")), 00042 runNum_(-1), 00043 side_ (iConfig.getUntrackedParameter<int>("side", 3)), 00044 givenSeedCry_ (iConfig.getUntrackedParameter<int>("seedCry",0)), 00045 threshold_ (iConfig.getUntrackedParameter<double>("amplitudeThreshold", 12.0)), 00046 fileName_ (iConfig.getUntrackedParameter<std::string>("fileName", std::string("ecalMipGraphs"))) 00047 { 00048 vector<int> listDefaults; 00049 listDefaults.push_back(-1); 00050 00051 maskedChannels_ = iConfig.getUntrackedParameter<vector<int> >("maskedChannels", listDefaults); 00052 maskedFEDs_ = iConfig.getUntrackedParameter<vector<int> >("maskedFEDs", listDefaults); 00053 00054 vector<string> defaultMaskedEBs; 00055 defaultMaskedEBs.push_back("none"); 00056 maskedEBs_ = iConfig.getUntrackedParameter<vector<string> >("maskedEBs",defaultMaskedEBs); 00057 00058 fedMap_ = new EcalFedMap(); 00059 00060 string title1 = "Jitter for all FEDs"; 00061 string name1 = "JitterAllFEDs"; 00062 allFedsTimingHist_ = new TH1F(name1.c_str(),title1.c_str(),14,-7,7); 00063 00064 // load up the maskedFED list with the proper FEDids 00065 if(maskedFEDs_[0]==-1) 00066 { 00067 //if "actual" EB id given, then convert to FEDid and put in listFEDs_ 00068 if(maskedEBs_[0] != "none") 00069 { 00070 maskedFEDs_.clear(); 00071 for(vector<string>::const_iterator ebItr = maskedEBs_.begin(); ebItr != maskedEBs_.end(); ++ebItr) 00072 { 00073 maskedFEDs_.push_back(fedMap_->getFedFromSlice(*ebItr)); 00074 } 00075 } 00076 } 00077 00078 for (int i=0; i<10; i++) abscissa[i] = i; 00079 naiveEvtNum_ = 0; 00080 graphCount = 0; 00081 00082 }
EcalMipGraphs::~EcalMipGraphs | ( | ) |
void EcalMipGraphs::analyze | ( | const edm::Event & | iEvent, | |
const edm::EventSetup & | iSetup | |||
) | [private, virtual] |
Implements edm::EDAnalyzer.
Definition at line 96 of file EcalMipGraphs.cc.
References EBDigis_, EBUncalibratedRecHitCollection_, EEDigis_, EEUncalibratedRecHitCollection_, edm::EventID::event(), eventsAndSeedCrys_, file_, fileName_, edm::EventSetup::get(), edm::Event::getByLabel(), graphs, headerProducer_, edm::Event::id(), intToString(), listEBChannels, listEEChannels, LogDebug, naiveEvtNum_, edm::EventID::run(), runNum_, selectEBDigis(), selectEBHits(), selectEEDigis(), selectEEHits(), and writeGraphs().
00097 { 00098 00099 // get the headers 00100 // (one header for each supermodule) 00101 edm::Handle<EcalRawDataCollection> DCCHeaders; 00102 iEvent.getByLabel(headerProducer_, DCCHeaders); 00103 map<int,EcalDCCHeaderBlock> FEDsAndDCCHeaders_; 00104 00105 for (EcalRawDataCollection::const_iterator headerItr= DCCHeaders->begin(); 00106 headerItr != DCCHeaders->end (); 00107 ++headerItr) 00108 { 00109 FEDsAndDCCHeaders_[headerItr->id()+600] = *headerItr; 00110 } 00111 00112 int ievt = iEvent.id().event(); 00113 naiveEvtNum_++; 00114 00115 if(runNum_==-1) 00116 { 00117 runNum_ = iEvent.id().run(); 00118 fileName_+=intToString(runNum_); 00119 fileName_+=".graph.root"; 00120 file_ = TFile::Open(fileName_.c_str(),"RECREATE"); 00121 eventsAndSeedCrys_ = new TNtuple("eventsSeedCrys","Events and Seed Crys Mapping","LV1A:ic:fed"); 00122 } 00123 00124 //We only want the 3x3's for this event... 00125 listEBChannels.clear(); 00126 listEEChannels.clear(); 00127 Handle<EcalUncalibratedRecHitCollection> EBhits; 00128 Handle<EcalUncalibratedRecHitCollection> EEhits; 00129 ESHandle<CaloTopology> caloTopo; 00130 iSetup.get<CaloTopologyRecord>().get(caloTopo); 00131 iEvent.getByLabel(EBUncalibratedRecHitCollection_, EBhits); 00132 iEvent.getByLabel(EEUncalibratedRecHitCollection_, EEhits); 00133 LogDebug("EcalMipGraphs") << "event " << ievt << " EBhits collection size " << EBhits->size(); 00134 LogDebug("EcalMipGraphs") << "event " << ievt << " EEhits collection size " << EEhits->size(); 00135 00136 selectEBHits(EBhits, ievt, caloTopo); 00137 selectEEHits(EEhits, ievt, caloTopo); 00138 00139 // Now, retrieve the crystal digi from the event 00140 edm::Handle<EBDigiCollection> EBdigisHandle; 00141 iEvent.getByLabel(EBDigis_, EBdigisHandle); 00142 edm::Handle<EEDigiCollection> EEdigisHandle; 00143 iEvent.getByLabel(EEDigis_, EEdigisHandle); 00144 00145 selectEBDigis(EBdigisHandle, ievt, FEDsAndDCCHeaders_); 00146 selectEEDigis(EEdigisHandle, ievt, FEDsAndDCCHeaders_); 00147 00148 if(graphs.size()==0) 00149 return; 00150 00151 writeGraphs(); 00152 }
void EcalMipGraphs::beginJob | ( | const edm::EventSetup & | c | ) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 430 of file EcalMipGraphs.cc.
References ecalElectronicsMap_, edm::EventSetup::get(), and edm::ESHandle< T >::product().
00431 { 00432 edm::ESHandle< EcalElectronicsMapping > handle; 00433 c.get< EcalMappingRcd >().get(handle); 00434 ecalElectronicsMap_ = handle.product(); 00435 }
Reimplemented from edm::EDAnalyzer.
Definition at line 439 of file EcalMipGraphs.cc.
References allFedsTimingHist_, TestMuL1L2Filter_cff::cerr, lat::endl(), eventsAndSeedCrys_, FEDsAndTimingHists_, file_, intToString(), maskedChannels_, and writeGraphs().
00440 { 00441 writeGraphs(); 00442 eventsAndSeedCrys_->Write(); 00443 for(map<int,TH1F*>::const_iterator itr = FEDsAndTimingHists_.begin(); 00444 itr != FEDsAndTimingHists_.end(); ++itr) 00445 { 00446 TH1F* hist = itr->second; 00447 if(hist!=0) 00448 hist->Write(); 00449 else 00450 { 00451 cerr << "EcalMipGraphs: Error: This shouldn't happen!" << endl; 00452 } 00453 } 00454 allFedsTimingHist_->Write(); 00455 file_->Close(); 00456 std::string channels; 00457 for(std::vector<int>::const_iterator itr = maskedChannels_.begin(); 00458 itr != maskedChannels_.end(); ++itr) 00459 { 00460 channels+=intToString(*itr); 00461 channels+=","; 00462 } 00463 00464 LogWarning("EcalMipGraphs") << "Masked channels are: " << channels << " and that is all!"; 00465 }
Definition at line 415 of file EcalMipGraphs.cc.
References fedMap_, FEDsAndTimingHists_, EcalFedMap::getSliceFromFed(), intToString(), and std.
Referenced by selectEBHits(), and selectEEHits().
00416 { 00417 using namespace std; 00418 00419 string title1 = "Jitter for "; 00420 title1.append(fedMap_->getSliceFromFed(FED)); 00421 string name1 = "JitterFED"; 00422 name1.append(intToString(FED)); 00423 TH1F* timingHist = new TH1F(name1.c_str(),title1.c_str(),14,-7,7); 00424 FEDsAndTimingHists_[FED] = timingHist; 00425 FEDsAndTimingHists_[FED]->SetDirectory(0); 00426 }
std::string EcalMipGraphs::intToString | ( | int | num | ) | [private] |
Definition at line 468 of file EcalMipGraphs.cc.
Referenced by analyze(), endJob(), and initHists().
00469 { 00470 using namespace std; 00471 ostringstream myStream; 00472 myStream << num << flush; 00473 return(myStream.str()); //returns the string form of the stringstream object 00474 }
void EcalMipGraphs::selectEBDigis | ( | edm::Handle< EBDigiCollection > | EBdigisHandle, | |
int | ievt, | |||
std::map< int, EcalDCCHeaderBlock > | FEDsAndDCCHeaders_ | |||
) | [private] |
Referenced by analyze().
void EcalMipGraphs::selectEBHits | ( | edm::Handle< EcalUncalibratedRecHitCollection > | EBhits, | |
int | ievt, | |||
edm::ESHandle< CaloTopology > | caloTopo | |||
) | [private] |
Definition at line 278 of file EcalMipGraphs.cc.
References allFedsTimingHist_, EcalUncalibratedRecHit::amplitude(), crysAndAmplitudesMap_, EcalElectronicsId::dccId(), ecalElectronicsMap_, eventsAndSeedCrys_, FEDsAndTimingHists_, find(), EcalElectronicsMapping::getElectronicsId(), givenSeedCry_, EBDetId::hashedIndex(), EBDetId::ic(), EcalUncalibratedRecHit::id(), initHists(), EcalUncalibratedRecHit::jitter(), listEBChannels, maskedChannels_, maskedFEDs_, naiveEvtNum_, HLT_VtxMuL3::result, side_, and threshold_.
Referenced by analyze().
00280 { 00281 for (EcalUncalibratedRecHitCollection::const_iterator hitItr = EBhits->begin(); hitItr != EBhits->end(); ++hitItr) 00282 { 00283 EcalUncalibratedRecHit hit = (*hitItr); 00284 EBDetId det = hit.id(); 00285 EcalElectronicsId elecId = ecalElectronicsMap_->getElectronicsId(det); 00286 int hashedIndex = det.hashedIndex(); 00287 int ic = det.ic(); 00288 int FEDid = 600+elecId.dccId(); 00289 float ampli = hit.amplitude(); 00290 float jitter = hit.jitter(); 00291 00292 vector<int>::iterator result; 00293 result = find(maskedFEDs_.begin(), maskedFEDs_.end(), FEDid); 00294 if(result != maskedFEDs_.end()) 00295 { 00296 LogWarning("EcalMipGraphs") << "skipping uncalRecHit for FED " << FEDid << " ; amplitude " << ampli; 00297 continue; 00298 } 00299 result = find(maskedChannels_.begin(), maskedChannels_.end(), hashedIndex); 00300 if (result != maskedChannels_.end()) 00301 { 00302 LogWarning("EcalMipGraphs") << "skipping uncalRecHit for channel: " << ic << " in fed: " << FEDid << " with amplitude " << ampli ; 00303 continue; 00304 } 00305 00306 if(ampli > threshold_ && !givenSeedCry_) 00307 { 00308 // only produce output if no seed cry is given by user and amplitude makes cut 00309 LogWarning("EcalMipGraphs") << "channel: " << ic << " in fed: " << FEDid << " ampli: " << ampli << " jitter " << jitter 00310 << " Event: " << ievt; 00311 } 00312 00313 if(hashedIndex == givenSeedCry_ || (!givenSeedCry_ && ampli > threshold_)) 00314 { 00315 eventsAndSeedCrys_->Fill(naiveEvtNum_, ic, FEDid); 00316 crysAndAmplitudesMap_[hashedIndex] = ampli; 00317 vector<DetId> neighbors = caloTopo->getWindow(det,side_,side_); 00318 for(vector<DetId>::const_iterator itr = neighbors.begin(); itr != neighbors.end(); ++itr) 00319 { 00320 listEBChannels.insert(*itr); 00321 } 00322 } 00323 00324 TH1F* timingHist = FEDsAndTimingHists_[FEDid]; 00325 if(timingHist==0) 00326 { 00327 initHists(FEDid); 00328 timingHist = FEDsAndTimingHists_[FEDid]; 00329 } 00330 timingHist->Fill(hit.jitter()); 00331 allFedsTimingHist_->Fill(hit.jitter()); 00332 } 00333 }
void EcalMipGraphs::selectEEDigis | ( | edm::Handle< EEDigiCollection > | EEdigisHandle, | |
int | ievt, | |||
std::map< int, EcalDCCHeaderBlock > | FEDsAndDCCHeaders_ | |||
) | [private] |
Referenced by analyze().
void EcalMipGraphs::selectEEHits | ( | edm::Handle< EcalUncalibratedRecHitCollection > | EEhits, | |
int | ievt, | |||
edm::ESHandle< CaloTopology > | caloTopo | |||
) | [private] |
Definition at line 335 of file EcalMipGraphs.cc.
References allFedsTimingHist_, EcalUncalibratedRecHit::amplitude(), crysAndAmplitudesMap_, EcalElectronicsId::dccId(), ecalElectronicsMap_, eventsAndSeedCrys_, FEDsAndTimingHists_, find(), EcalElectronicsMapping::getElectronicsId(), givenSeedCry_, EEDetId::hashedIndex(), EcalUncalibratedRecHit::id(), initHists(), EcalUncalibratedRecHit::jitter(), listEEChannels, maskedChannels_, maskedFEDs_, naiveEvtNum_, HLT_VtxMuL3::result, side_, EcalElectronicsId::stripId(), threshold_, EcalElectronicsId::towerId(), and EcalElectronicsId::xtalId().
Referenced by analyze().
00337 { 00338 for (EcalUncalibratedRecHitCollection::const_iterator hitItr = EEhits->begin(); hitItr != EEhits->end(); ++hitItr) 00339 { 00340 EcalUncalibratedRecHit hit = (*hitItr); 00341 EEDetId det = hit.id(); 00342 EcalElectronicsId elecId = ecalElectronicsMap_->getElectronicsId(det); 00343 int hashedIndex = det.hashedIndex(); 00344 int FEDid = 600+elecId.dccId(); 00345 int ic = 10000*FEDid+100*elecId.towerId()+5*(elecId.stripId()-1)+elecId.xtalId(); 00346 float ampli = hit.amplitude(); 00347 float jitter = hit.jitter(); 00348 00349 vector<int>::iterator result; 00350 result = find(maskedFEDs_.begin(), maskedFEDs_.end(), FEDid); 00351 if(result != maskedFEDs_.end()) 00352 { 00353 LogWarning("EcalMipGraphs") << "skipping uncalRecHit for FED " << FEDid << " ; amplitude " << ampli; 00354 continue; 00355 } 00356 result = find(maskedChannels_.begin(), maskedChannels_.end(), hashedIndex); 00357 if (result != maskedChannels_.end()) 00358 { 00359 LogWarning("EcalMipGraphs") << "skipping uncalRecHit for channel: " << ic << " in fed: " << FEDid << " with amplitude " << ampli ; 00360 continue; 00361 } 00362 00363 if(ampli > threshold_ && !givenSeedCry_) 00364 { 00365 // only produce output if no seed cry is given by user and amplitude makes cut 00366 LogWarning("EcalMipGraphs") << "channel: " << ic << " in fed: " << FEDid << " ampli: " << ampli << " jitter " << jitter 00367 << " Event: " << ievt; 00368 } 00369 00370 if(hashedIndex == givenSeedCry_ || (!givenSeedCry_ && ampli > threshold_)) 00371 { 00372 eventsAndSeedCrys_->Fill(naiveEvtNum_, ic, FEDid); 00373 crysAndAmplitudesMap_[hashedIndex] = ampli; 00374 vector<DetId> neighbors = caloTopo->getWindow(det,side_,side_); 00375 for(vector<DetId>::const_iterator itr = neighbors.begin(); itr != neighbors.end(); ++itr) 00376 { 00377 listEEChannels.insert(*itr); 00378 } 00379 } 00380 00381 TH1F* timingHist = FEDsAndTimingHists_[FEDid]; 00382 if(timingHist==0) 00383 { 00384 initHists(FEDid); 00385 timingHist = FEDsAndTimingHists_[FEDid]; 00386 } 00387 00388 timingHist->Fill(hit.jitter()); 00389 allFedsTimingHist_->Fill(hit.jitter()); 00390 } 00391 00392 }
void EcalMipGraphs::writeGraphs | ( | ) | [private] |
Definition at line 394 of file EcalMipGraphs.cc.
References file_, graphCount, and graphs.
Referenced by analyze(), and endJob().
00395 { 00396 int graphCount = 0; 00397 file_->cd(); 00398 std::vector<TGraph>::iterator gr_it; 00399 for (gr_it = graphs.begin(); gr_it != graphs.end(); gr_it++ ) 00400 { 00401 graphCount++; 00402 if(graphCount % 100 == 0) 00403 LogInfo("EcalMipGraphs") << "Writing out graph " << graphCount << " of " 00404 << graphs.size(); 00405 00406 (*gr_it).Write(); 00407 } 00408 00409 graphs.clear(); 00410 }
int EcalMipGraphs::abscissa[10] [private] |
TH1F* EcalMipGraphs::allFedsTimingHist_ [private] |
Definition at line 110 of file EcalMipGraphs.h.
Referenced by EcalMipGraphs(), endJob(), selectEBHits(), and selectEEHits().
std::map<int,float> EcalMipGraphs::crysAndAmplitudesMap_ [private] |
edm::InputTag EcalMipGraphs::EBDigis_ [private] |
const EcalElectronicsMapping* EcalMipGraphs::ecalElectronicsMap_ [private] |
Definition at line 115 of file EcalMipGraphs.h.
Referenced by beginJob(), selectEBHits(), and selectEEHits().
edm::InputTag EcalMipGraphs::EEDigis_ [private] |
TNtuple* EcalMipGraphs::eventsAndSeedCrys_ [private] |
Definition at line 113 of file EcalMipGraphs.h.
Referenced by analyze(), endJob(), selectEBHits(), and selectEEHits().
EcalFedMap* EcalMipGraphs::fedMap_ [private] |
std::map<int,TH1F*> EcalMipGraphs::FEDsAndTimingHists_ [private] |
Definition at line 107 of file EcalMipGraphs.h.
Referenced by endJob(), initHists(), selectEBHits(), and selectEEHits().
TFile* EcalMipGraphs::file_ [private] |
Definition at line 112 of file EcalMipGraphs.h.
Referenced by analyze(), endJob(), and writeGraphs().
std::string EcalMipGraphs::fileName_ [private] |
int EcalMipGraphs::givenSeedCry_ [private] |
int EcalMipGraphs::graphCount [private] |
std::vector<TGraph> EcalMipGraphs::graphs [private] |
edm::InputTag EcalMipGraphs::headerProducer_ [private] |
std::set<EBDetId> EcalMipGraphs::listEBChannels [private] |
std::set<EEDetId> EcalMipGraphs::listEEChannels [private] |
std::vector<int> EcalMipGraphs::maskedChannels_ [private] |
Definition at line 104 of file EcalMipGraphs.h.
Referenced by EcalMipGraphs(), endJob(), selectEBHits(), and selectEEHits().
std::vector<std::string> EcalMipGraphs::maskedEBs_ [private] |
std::vector<int> EcalMipGraphs::maskedFEDs_ [private] |
Definition at line 105 of file EcalMipGraphs.h.
Referenced by EcalMipGraphs(), selectEBHits(), and selectEEHits().
int EcalMipGraphs::naiveEvtNum_ [private] |
Definition at line 117 of file EcalMipGraphs.h.
Referenced by analyze(), EcalMipGraphs(), selectEBHits(), and selectEEHits().
int EcalMipGraphs::ordinate[10] [private] |
Definition at line 101 of file EcalMipGraphs.h.
int EcalMipGraphs::runNum_ [private] |
int EcalMipGraphs::side_ [private] |
double EcalMipGraphs::threshold_ [private] |