00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <memory>
00023 #include <vector>
00024 #include <map>
00025 #include <set>
00026
00027
00028 #include "FWCore/Framework/interface/Frameworkfwd.h"
00029 #include "FWCore/Framework/interface/EDAnalyzer.h"
00030 #include "FWCore/Framework/interface/Event.h"
00031 #include "FWCore/Framework/interface/EventSetup.h"
00032 #include "FWCore/Framework/interface/MakerMacros.h"
00033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00034 #include "FWCore/Framework/interface/ESHandle.h"
00035 #include "Geometry/EcalMapping/interface/EcalMappingRcd.h"
00036
00037 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
00038 #include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h"
00039 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00040 #include "DataFormats/DetId/interface/DetId.h"
00041 #include "DataFormats/EcalRawData/interface/EcalRawDataCollections.h"
00042 #include "DataFormats/EcalRawData/interface/EcalDCCHeaderBlock.h"
00043
00044 #include "Geometry/EcalMapping/interface/EcalElectronicsMapping.h"
00045 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00046 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00047
00048 #include "CaloOnlineTools/EcalTools/interface/EcalFedMap.h"
00049
00050 #include "TFile.h"
00051 #include "TH1F.h"
00052 #include "TGraph.h"
00053 #include "TNtuple.h"
00054
00055
00056
00057
00058
00059
00060 class EcalMipGraphs : public edm::EDAnalyzer {
00061 public:
00062 explicit EcalMipGraphs(const edm::ParameterSet&);
00063 ~EcalMipGraphs();
00064
00065
00066 private:
00067 virtual void beginJob(const edm::EventSetup&) ;
00068 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00069 virtual void endJob() ;
00070 std::string intToString(int num);
00071 void writeGraphs();
00072 void initHists(int);
00073 void selectEBHits(edm::Handle<EcalUncalibratedRecHitCollection> EBhits,
00074 int ievt, edm::ESHandle<CaloTopology> caloTopo);
00075 void selectEEHits(edm::Handle<EcalUncalibratedRecHitCollection> EEhits,
00076 int ievt, edm::ESHandle<CaloTopology> caloTopo);
00077 void selectEBDigis(edm::Handle<EBDigiCollection> EBdigisHandle, int ievt,
00078 std::map<int,EcalDCCHeaderBlock> FEDsAndDCCHeaders_);
00079 void selectEEDigis(edm::Handle<EEDigiCollection> EEdigisHandle, int ievt,
00080 std::map<int,EcalDCCHeaderBlock> FEDsAndDCCHeaders_);
00081
00082
00083
00084
00085 edm::InputTag EBUncalibratedRecHitCollection_;
00086 edm::InputTag EEUncalibratedRecHitCollection_;
00087 edm::InputTag EBDigis_;
00088 edm::InputTag EEDigis_;
00089 edm::InputTag headerProducer_;
00090
00091 int runNum_;
00092 int side_;
00093 int givenSeedCry_;
00094 double threshold_;
00095 std::string fileName_;
00096
00097 std::set<EBDetId> listEBChannels;
00098 std::set<EEDetId> listEEChannels;
00099
00100 int abscissa[10];
00101 int ordinate[10];
00102
00103 std::vector<TGraph> graphs;
00104 std::vector<int> maskedChannels_;
00105 std::vector<int> maskedFEDs_;
00106 std::vector<std::string> maskedEBs_;
00107 std::map<int,TH1F*> FEDsAndTimingHists_;
00108 std::map<int,float> crysAndAmplitudesMap_;
00109
00110 TH1F* allFedsTimingHist_;
00111
00112 TFile* file_;
00113 TNtuple* eventsAndSeedCrys_;
00114 EcalFedMap* fedMap_;
00115 const EcalElectronicsMapping* ecalElectronicsMap_;
00116
00117 int naiveEvtNum_;
00118 int graphCount;
00119 };