Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-02 05:10:04

0001 /** \class DoubleCollectionMerger
0002  *
0003  * \author Per Ahrens
0004  *
0005  *  Clean Up from Christian Winter & Sebastian Brommer, KIT
0006  */
0007 #ifndef TauAnalysis_MCEmbeddingTools_DoubleCollectionMerger_H
0008 #define TauAnalysis_MCEmbeddingTools_DoubleCollectionMerger_H
0009 
0010 #include "DataFormats/Common/interface/Handle.h"
0011 #include "FWCore/Framework/interface/Event.h"
0012 #include "FWCore/Framework/interface/MakerMacros.h"
0013 #include "FWCore/Framework/interface/stream/EDProducer.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015 
0016 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0017 #include "DataFormats/Common/interface/SortedCollection.h"
0018 
0019 #include <iostream>
0020 #include <map>
0021 #include <string>
0022 
0023 template <typename T1, typename T2, typename T3, typename T4>
0024 class DoubleCollectionMerger : public edm::stream::EDProducer<> {
0025 public:
0026   explicit DoubleCollectionMerger(const edm::ParameterSet &);
0027   ~DoubleCollectionMerger() override;
0028 
0029 private:
0030   void produce(edm::Event &, const edm::EventSetup &) override;
0031 
0032   typedef T1 MergeCollection1;
0033   typedef T2 BaseHit1;
0034   typedef T3 MergeCollection2;
0035   typedef T4 BaseHit2;
0036   std::map<std::string, std::vector<edm::EDGetTokenT<MergeCollection1>>> inputs1_;
0037   std::map<std::string, std::vector<edm::EDGetTokenT<MergeCollection2>>> inputs2_;
0038 
0039   void fill_output_obj(std::unique_ptr<MergeCollection1> &output1,
0040                        std::vector<edm::Handle<MergeCollection1>> &inputCollections1);
0041   void fill_output_obj(std::unique_ptr<MergeCollection2> &output2,
0042                        std::vector<edm::Handle<MergeCollection2>> &inputCollections2);
0043   void fill_output_obj_digiflag(std::unique_ptr<MergeCollection1> &output,
0044                                 std::vector<edm::Handle<MergeCollection1>> &inputCollections);
0045   void fill_output_obj_digiflag(std::unique_ptr<MergeCollection2> &output,
0046                                 std::vector<edm::Handle<MergeCollection2>> &inputCollections);
0047   void fill_output_obj_hcaldigi(std::unique_ptr<MergeCollection1> &output,
0048                                 std::vector<edm::Handle<MergeCollection1>> &inputCollections);
0049   void fill_output_obj_hcaldigi(std::unique_ptr<MergeCollection2> &output,
0050                                 std::vector<edm::Handle<MergeCollection2>> &inputCollections);
0051 };
0052 #endif