Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020 #include "CaloOnlineTools/EcalTools/plugins/EcalBxOrbitNumberGrapher.h"
00021
00022 using namespace cms;
00023 using namespace edm;
00024 using namespace std;
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 EcalBxOrbitNumberGrapher::EcalBxOrbitNumberGrapher(const edm::ParameterSet& iConfig) :
00038 digiProducer_(iConfig.getParameter<std::string>("RawDigis")),
00039 runNum_(-1),
00040 fileName_ (iConfig.getUntrackedParameter<std::string>("fileName", std::string("ecalURechHitHists")))
00041 {
00042
00043
00044 }
00045
00046
00047 EcalBxOrbitNumberGrapher::~EcalBxOrbitNumberGrapher()
00048 {
00049 }
00050
00051
00052
00053
00054
00055
00056
00057 void
00058 EcalBxOrbitNumberGrapher::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00059 {
00060 using namespace edm;
00061 using namespace cms;
00062
00063 int orbit = -100;
00064 int bx = -100;
00065 int numorbiterrors = 0;
00066 bool orbiterror = false;
00067
00068
00069 edm::Handle<EcalRawDataCollection> DCCHeaders;
00070 iEvent.getByLabel(digiProducer_, DCCHeaders);
00071 if (!DCCHeaders.isValid()) {
00072 edm::LogError("BxOrbitNumber") << "can't get the product for EcalRawDataCollection";
00073 }
00074
00075
00076 for ( EcalRawDataCollection::const_iterator headerItr= DCCHeaders->begin();headerItr != DCCHeaders->end();
00077 ++headerItr ) {
00078 headerItr->getEventSettings();
00079 int myorbit = headerItr->getOrbit();
00080 int mybx = headerItr->getBX();
00081
00082 if ( orbit == -100 )
00083 {
00084 orbit = myorbit;
00085 }
00086 else if (orbit != myorbit)
00087 {
00088 std::cout << " NOOOO This header has a conflicting orbit OTHER " << orbit << " new " << myorbit << std::endl;
00089 orbiterror = true;
00090 numorbiterrors++;
00091 orbitErrorBxDiffPlot_->Fill(myorbit - orbit);
00092 }
00093
00094 if ( bx == -100 )
00095 {
00096 bx = mybx;
00097 }
00098 else if (bx != mybx)
00099 {
00100 std::cout << " NOOOO This header has a conflicting bx OTHER " << bx << " new " << mybx << std::endl;
00101 }
00102
00103 }
00104
00105 if ( (bx != -100) & ( orbit != -100) )
00106 {
00107 std::cout << " Interesting event Orbit " << orbit << " BX " << bx << std::endl;
00108 bxnumberPlot_->Fill(bx);
00109 if (orbiterror)
00110 {
00111 orbitErrorPlot_->Fill(bx);
00112 }
00113 }
00114 numberofOrbitDiffPlot_->Fill(numorbiterrors);
00115
00116
00117 if(runNum_==-1)
00118 {
00119 runNum_ = iEvent.id().run();
00120 }
00121 }
00122
00123
00124
00125 void EcalBxOrbitNumberGrapher::initHists(int FED)
00126 {
00127
00128
00129 }
00130
00131
00132 void
00133 EcalBxOrbitNumberGrapher::beginJob()
00134 {
00135 bxnumberPlot_ = new TH1F("bxnumber", "BX number of interexting events",3600, 0., 3600.);
00136 orbitErrorPlot_ = new TH1F("bxOfOrbitDiffs", "BX number of interexting events with orbit changes",3600, 0., 3600.);
00137 orbitErrorBxDiffPlot_ = new TH1F("orbitErrorDiffPlot","Orbit Difference of those HEADERS that have a difference",20,-10.,10.);
00138 numberofOrbitDiffPlot_ = new TH1F("numberOfOrbitDiffsPlot","Number of Orbit Differences",54,0., 54.);
00139 }
00140
00141
00142 void
00143 EcalBxOrbitNumberGrapher::endJob()
00144 {
00145 using namespace std;
00146 fileName_ += ".bx.root";
00147
00148 TFile root_file_(fileName_.c_str() , "RECREATE");
00149
00150 bxnumberPlot_->Write();
00151 orbitErrorPlot_->Write();
00152 numberofOrbitDiffPlot_->Write();
00153 orbitErrorBxDiffPlot_->Write();
00154 root_file_.Close();
00155
00156 }
00157
00158
00159