00001 #ifndef DigitizerFP420_h 00002 #define DigitizerFP420_h 00003 00005 #include "boost/shared_ptr.hpp" 00006 00007 #include "FWCore/Framework/interface/EDProducer.h" 00008 #include "FWCore/Framework/interface/Event.h" 00009 #include "DataFormats/Common/interface/Handle.h" 00010 #include "FWCore/Framework/interface/EventSetup.h" 00011 00012 #include "DataFormats/Common/interface/EDProduct.h" 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 00015 #include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00016 00018 //#include "SimG4Core/Watcher/interface/SimWatcher.h" 00019 00020 #include "Geometry/CommonDetUnit/interface/GeomDetType.h" 00021 #include "SimG4CMS/FP420/interface/FP420NumberingScheme.h" 00022 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00023 //#include "SimG4CMS/FP420/interface/FP420G4Hit.h" 00024 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" 00025 //#include "SimG4CMS/FP420/interface/FP420G4HitCollection.h" 00026 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h" 00027 00028 #include "SimRomanPot/SimFP420/interface/FP420DigiMain.h" 00029 00030 #include "DataFormats/FP420Digi/interface/DigiCollectionFP420.h" 00031 #include "DataFormats/FP420Digi/interface/HDigiFP420.h" 00032 //#include "SimRomanPot/SimFP420/interface/DigiCollectionFP420.h" 00033 00034 #include <CLHEP/Vector/ThreeVector.h> 00035 #include <string> 00036 #include<vector> 00037 #include <iostream> 00038 #include <map> 00039 00040 namespace cms 00041 { 00042 class DigitizerFP420: public edm::EDProducer 00043 { 00044 public: 00045 // typedef DigiCollectionFP420<unsigned int, HDigiFP420> DigiColFP420; 00046 00047 explicit DigitizerFP420(const edm::ParameterSet& conf); 00048 00049 virtual ~DigitizerFP420(); 00050 00051 // virtual void produce(PSimHitCollection*, DigiCollectionFP420&); 00052 virtual void produce(edm::Event& e, const edm::EventSetup& c); 00053 00054 // virtual void prodfun(MixCollection<PSimHit>*, DigiCollectionFP420 &); 00055 // virtual void prodfun(std::auto_ptr<MixCollection<PSimHit> >*, DigiCollectionFP420 &); 00056 00057 00058 // virtual void prodfun(std::auto_ptr<MixCollection<PSimHit> >&, DigiCollectionFP420 &); 00059 00060 private: 00061 // std::vector<PSimHit> theStripHits; 00062 typedef std::vector<std::string> vstring; 00063 typedef std::map<unsigned int, std::vector<PSimHit>,std::less<unsigned int> > simhit_map; 00064 typedef simhit_map::iterator simhit_map_iterator; 00065 simhit_map SimHitMap; 00066 00067 edm::ParameterSet conf_; 00068 vstring trackerContainers; 00069 00070 // HitDigitizerFP420* theHitDigitizerFP420; 00071 // FP420DigiMain stripDigitizer_; 00072 FP420DigiMain* stripDigitizer_; 00073 FP420NumberingScheme * theFP420NumberingScheme; 00074 // FP420DigiMain * theFP420DigiMain; 00075 int numStrips; // number of strips in the module 00076 00077 int dn0, sn0, pn0, verbosity; 00078 00079 00080 std::vector<HDigiFP420> collector; 00081 00082 // DigiCollectionFP420 * output; 00083 00084 00085 // std::vector<edm::DetSet<HDigiFP420> > output; 00086 00087 // DigiCollectionFP420* poutput; 00088 00089 // std::map<GeomDetType* , boost::shared_ptr<FP420DigiMain> > theAlgoMap; 00090 // std::vector<edm::DetSet<HDigiFP420> > outputfinal; 00091 // std::vector<edm::DetSet<HDigiFP420SimLink> > theDigiLinkVector; 00092 // std::vector<edm::DetSet<PixelDigi> > theDigiVector; 00093 00094 00095 00096 00097 // G4ThreeVector bfield(G4ThreeVector); 00098 // G4ThreeVector bfield(double, double, double); 00099 // G4ThreeVector bfield(float, float, float); 00100 // G4ThreeVector bfield(); 00101 00102 00103 }; 00104 } 00105 00106 #endif