File indexing completed on 2024-04-06 12:32:42
0001 #ifndef MixCollectionValidation_H
0002 #define MixCollectionValidation_H
0003
0004
0005 #include "FWCore/Framework/interface/Frameworkfwd.h"
0006
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/Framework/interface/MakerMacros.h"
0009
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "FWCore/ServiceRegistry/interface/Service.h"
0012 #include "FWCore/Utilities/interface/InputTag.h"
0013
0014 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
0015 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0016
0017 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
0018 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0019
0020 #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h"
0021 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0022
0023
0024 #include <DQMServices/Core/interface/DQMEDAnalyzer.h>
0025 #include <DQMServices/Core/interface/DQMStore.h>
0026
0027 #include <string>
0028
0029
0030
0031
0032
0033 class MixCollectionValidation : public DQMEDAnalyzer {
0034 public:
0035 explicit MixCollectionValidation(const edm::ParameterSet &);
0036 ~MixCollectionValidation() override;
0037 void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0038 void analyze(const edm::Event &, const edm::EventSetup &) override;
0039
0040 private:
0041 edm::ParameterSet mixObjextsSet_;
0042
0043 template <class T1, class T2>
0044 void fillMultiplicity(T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_);
0045
0046 template <class T1, class T2>
0047 void fillGenParticleMulti(T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_);
0048
0049 template <class T1, class T2>
0050 void fillSimHitTime(T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_);
0051
0052 template <class T1, class T2>
0053 void fillCaloHitTime(T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_);
0054
0055
0056
0057
0058
0059
0060
0061
0062 edm::EDGetTokenT<CrossingFrame<edm::HepMCProduct>> crossingFrame_Hep_Token_;
0063 edm::EDGetTokenT<CrossingFrame<SimTrack>> crossingFrame_SimTr_Token_;
0064 edm::EDGetTokenT<CrossingFrame<SimVertex>> crossingFrame_SimVtx_Token_;
0065 std::vector<edm::EDGetTokenT<CrossingFrame<PSimHit>>> crossingFrame_PSimHit_Tokens_;
0066 std::vector<edm::EDGetTokenT<CrossingFrame<PCaloHit>>> crossingFrame_PCaloHit_Tokens_;
0067
0068 std::string outputFile_;
0069 int minbunch_;
0070 int maxbunch_;
0071
0072 bool verbose_;
0073
0074 MonitorElement *nrHepMCProductH_;
0075 MonitorElement *nrSimTrackH_;
0076 MonitorElement *nrSimVertexH_;
0077
0078 std::map<std::string, MonitorElement *> SimHitNrmap_;
0079 std::map<std::string, MonitorElement *> SimHitTimemap_;
0080
0081 std::map<std::string, MonitorElement *> CaloHitNrmap_;
0082 std::map<std::string, MonitorElement *> CaloHitTimemap_;
0083
0084 std::vector<edm::InputTag> HepMCProductTags_;
0085 std::vector<edm::InputTag> SimTrackTags_;
0086 std::vector<edm::InputTag> SimVertexTags_;
0087 std::vector<edm::InputTag> PSimHitTags_;
0088 std::vector<edm::InputTag> PCaloHitTags_;
0089
0090 int nbin_;
0091 };
0092
0093 #endif