Go to the documentation of this file.00001 #ifndef EcalBarrelSimHitsValidation_H
00002 #define EcalBarrelSimHitsValidation_H
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "FWCore/Framework/interface/Frameworkfwd.h"
00012 #include "FWCore/Framework/interface/EDAnalyzer.h"
00013
00014 #include "FWCore/Framework/interface/Event.h"
00015 #include "FWCore/Framework/interface/EventSetup.h"
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "FWCore/Framework/interface/MakerMacros.h"
00018
00019 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00020 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00021
00022 #include "DQMServices/Core/interface/DQMStore.h"
00023 #include "FWCore/ServiceRegistry/interface/Service.h"
00024
00025 #include "SimDataFormats/CaloHit/interface/PCaloHit.h"
00026 #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
00027 #include "SimDataFormats/ValidationFormats/interface/PValidationFormats.h"
00028
00029 #include <iostream>
00030 #include <fstream>
00031 #include <vector>
00032 #include <map>
00033 #include "DQMServices/Core/interface/MonitorElement.h"
00034
00035
00036 class EcalBarrelSimHitsValidation: public edm::EDAnalyzer{
00037
00038 typedef std::map<uint32_t,float,std::less<uint32_t> > MapType;
00039
00040 public:
00041
00043 EcalBarrelSimHitsValidation(const edm::ParameterSet& ps);
00044
00046 ~EcalBarrelSimHitsValidation();
00047
00048 protected:
00049
00051 void analyze(const edm::Event& e, const edm::EventSetup& c);
00052
00053
00054 void beginJob();
00055
00056
00057 void endJob(void);
00058
00059 private:
00060
00061 uint32_t getUnitWithMaxEnergy(MapType& themap);
00062
00063 virtual float energyInMatrixEB(int nCellInEta, int nCellInPhi,
00064 int centralEta, int centralPhi, int centralZ,
00065 MapType& themap);
00066
00067 std::vector<uint32_t> getIdsAroundMax(int nCellInEta, int nCellInPhi,
00068 int centralEta, int centralPhi, int centralZ,
00069 MapType& themap);
00070
00071
00072 bool fillEBMatrix(int nCellInEta, int nCellInPhi,
00073 int CentralEta, int CentralPhi,int CentralZ,
00074 MapType& fillmap, MapType& themap);
00075
00076 float eCluster2x2( MapType& themap);
00077 float eCluster4x4(float e33,MapType& themap);
00078
00079 std::string g4InfoLabel;
00080 std::string EBHitsCollection;
00081 std::string ValidationCollection;
00082
00083 bool verbose_;
00084
00085 DQMStore* dbe_;
00086
00087 std::string outputFile_;
00088
00089 int myEntries;
00090 float eRLength[26];
00091
00092 MonitorElement* menEBHits_;
00093
00094 MonitorElement* menEBCrystals_;
00095
00096 MonitorElement* meEBOccupancy_;
00097
00098 MonitorElement* meEBLongitudinalShower_;
00099
00100 MonitorElement* meEBhitEnergy_;
00101
00102 MonitorElement* meEBhitLog10Energy_;
00103
00104 MonitorElement* meEBhitLog10EnergyNorm_;
00105
00106 MonitorElement* meEBhitLog10Energy25Norm_;
00107
00108 MonitorElement* meEBhitEnergy2_;
00109
00110 MonitorElement* meEBcrystalEnergy_;
00111
00112 MonitorElement* meEBcrystalEnergy2_;
00113
00114 MonitorElement* meEBe1_;
00115 MonitorElement* meEBe4_;
00116 MonitorElement* meEBe9_;
00117 MonitorElement* meEBe16_;
00118 MonitorElement* meEBe25_;
00119
00120 MonitorElement* meEBe1oe4_;
00121 MonitorElement* meEBe1oe9_;
00122 MonitorElement* meEBe4oe9_;
00123 MonitorElement* meEBe9oe16_;
00124 MonitorElement* meEBe1oe25_;
00125 MonitorElement* meEBe9oe25_;
00126 MonitorElement* meEBe16oe25_;
00127 };
00128
00129 #endif