00001 // $Id: RBCProcessRPCSimDigis.h,v 1.2 2009/12/25 07:05:21 elmer Exp $ 00002 #ifndef INTERFACE_RBCPROCESSRPCSIMDIGIS_H 00003 #define INTERFACE_RBCPROCESSRPCSIMDIGIS_H 1 00004 00005 // Include files 00006 #include "FWCore/Framework/interface/Frameworkfwd.h" 00007 #include "FWCore/Framework/interface/ESHandle.h" 00008 00009 #include "Geometry/RPCGeometry/interface/RPCRoll.h" 00010 #include "Geometry/RPCGeometry/interface/RPCGeometry.h" 00011 #include "Geometry/Records/interface/MuonGeometryRecord.h" 00012 #include "Geometry/RPCGeometry/interface/RPCGeometry.h" 00013 00014 #include "DataFormats/MuonDetId/interface/RPCDetId.h" 00015 00016 #include "DataFormats/Common/interface/DetSetVector.h" 00017 #include "SimDataFormats/RPCDigiSimLink/interface/RPCDigiSimLink.h" 00018 00019 // From project 00020 #include "L1Trigger/RPCTechnicalTrigger/interface/RBCInput.h" 00021 #include "L1Trigger/RPCTechnicalTrigger/interface/RPCInputSignal.h" 00022 #include "L1Trigger/RPCTechnicalTrigger/interface/RPCData.h" 00023 #include "L1Trigger/RPCTechnicalTrigger/interface/ProcessInputSignal.h" 00024 00025 #include <stdlib.h> 00026 #include <iostream> 00027 #include <fstream> 00028 #include <ios> 00029 #include <cmath> 00030 #include <map> 00031 #include <vector> 00032 00040 class RBCProcessRPCSimDigis : public ProcessInputSignal { 00041 public: 00043 RBCProcessRPCSimDigis(); 00044 00045 RBCProcessRPCSimDigis( const edm::ESHandle<RPCGeometry> &, 00046 const edm::Handle<edm::DetSetVector<RPCDigiSimLink> > & ); 00047 00048 int next(); 00049 00050 void reset(); 00051 00052 void configure(); 00053 00054 void initialize( std::vector<RPCData*> & ); 00055 00056 void builddata(); 00057 00058 void print_output(); 00059 00060 RPCInputSignal * retrievedata() { 00061 return m_lbin; 00062 }; 00063 00064 void rewind() {}; 00065 void showfirst() {}; 00066 00067 virtual ~RBCProcessRPCSimDigis( ); 00068 00069 protected: 00070 00071 private: 00072 00073 int getBarrelLayer(const int &, const int &); 00074 00075 void setDigiAt( int , int ); 00076 00077 void setInputBit( std::bitset<15> & , int ); 00078 00079 const edm::ESHandle<RPCGeometry> * m_ptr_rpcGeom; 00080 const edm::Handle<edm::DetSetVector<RPCDigiSimLink> > * m_ptr_digiSimLink; 00081 00082 edm::DetSetVector<RPCDigiSimLink>::const_iterator m_linkItr; 00083 edm::DetSet<RPCDigiSimLink>::const_iterator m_digiItr; 00084 00085 RPCData * m_block; 00086 00087 RPCInputSignal * m_lbin; 00088 00089 std::map<int, int> m_layermap; 00090 00091 std::map<int, RBCInput*> m_data; 00092 00093 std::map<int, std::vector<RPCData*> > m_vecDataperBx; 00094 00095 bool m_debug; 00096 int m_maxBxWindow; 00097 00098 std::vector<int> m_wheelid; 00099 std::vector<int> m_sec1id; 00100 std::vector<int> m_sec2id; 00101 00102 00103 }; 00104 #endif // INTERFACE_RBCPROCESSRPCSIMDIGIS_H