00001 //------------------------------------------------- 00002 // 00016 // 00017 //-------------------------------------------------- 00018 #ifndef DT_BTI_CARD_H 00019 #define DT_BTI_CARD_H 00020 00021 //------------------------------------ 00022 // Collaborating Class Declarations -- 00023 //------------------------------------ 00024 class DTBtiChip; 00025 class DTBtiTrig; 00026 class DTTrigGeom; 00027 class DTTTrigBaseSync; 00028 00029 //---------------------- 00030 // Base Class Headers -- 00031 //---------------------- 00032 #include "DataFormats/DTDigi/interface/DTDigiCollection.h" 00033 #include "L1Trigger/DTUtilities/interface/DTGeomSupplier.h" 00034 #include "DataFormats/MuonDetId/interface/DTBtiId.h" 00035 #include "L1Trigger/DTBti/interface/DTBtiTrigData.h" 00036 #include "L1Trigger/DTUtilities/interface/DTCache.h" 00037 #include "L1TriggerConfig/DTTPGConfig/interface/DTConfigBti.h" 00038 #include "L1TriggerConfig/DTTPGConfig/interface/DTConfigManager.h" 00039 00040 00041 //--------------- 00042 // C++ Headers -- 00043 //--------------- 00044 #include <vector> 00045 #include <map> 00046 00047 namespace edm {class ParameterSet; class Event; class EventSetup;} 00048 00049 // --------------------- 00050 // -- Class Interface -- 00051 // --------------------- 00052 00053 typedef std::map< int,DTBtiChip*,std::less<int> > BTIContainer; 00054 typedef BTIContainer::const_iterator BTI_const_iter; 00055 typedef BTIContainer::iterator BTI_iter; 00056 00057 typedef std::map<DTBtiId,DTConfigBti> ConfBtiMap; 00058 00059 typedef DTCache<DTBtiTrigData,std::vector<DTBtiTrigData> > BTICache; 00060 00061 class DTBtiCard : public BTICache, public DTGeomSupplier { 00062 00063 public: 00064 00066 DTBtiCard(DTTrigGeom *); 00067 00069 ~DTBtiCard(); 00070 00072 void clearCache(); 00073 00075 void setConfig(const DTConfigManager *conf); 00076 00078 inline bool debug() const {return _debug;} 00079 00081 DTBtiChip* getBTI(int sl, int n) const; 00082 00084 DTBtiChip* getBTI(const DTBtiId& btiid) const { 00085 return getBTI(btiid.superlayer(),btiid.bti()); 00086 } 00087 00089 LocalPoint localPosition(const DTTrigData*) const; 00091 LocalVector localDirection(const DTTrigData*) const; 00092 00094 std::vector<DTBtiChip*> btiList(int); 00095 00100 DTBtiTrig* storeTrigger(DTBtiTrigData); 00101 00102 // run the trigger algorithm 00103 virtual void reconstruct(const DTDigiCollection dtDigis) { clearCache();loadBTI(dtDigis); runBTI(); } 00104 00106 DTConfigBti* config_bti(DTBtiId& btiid) const; 00107 00109 inline bool useAcceptParamFlag() { return _flag_acc; } 00110 00111 private: 00112 00114 void loadBTI(const DTDigiCollection dtDigis); 00115 00117 void runBTI(); 00118 00120 DTBtiChip* activeGetBTI(int sl, int n); 00121 00123 DTBtiChip* activeGetBTI(const DTBtiId& btiid) { 00124 return activeGetBTI(btiid.superlayer(),btiid.bti()); 00125 } 00126 00128 void localClear(); 00129 00130 private: 00131 00132 BTIContainer _btimap[3]; 00133 ConfBtiMap _conf_bti_map; //bti configuration map for this chamber 00134 00135 std::vector<DTDigi*> _digis; 00136 00137 bool _debug; 00138 DTConfigPedestals* _pedestals; 00139 00140 bool _flag_acc; 00141 }; 00142 00143 #endif