00001 //------------------------------------------------- 00002 // 00011 // 00012 //-------------------------------------------------- 00013 #ifndef DT_TS_THETA_H 00014 #define DT_TS_THETA_H 00015 00016 //------------------------------------ 00017 // Collaborating Class Declarations -- 00018 //------------------------------------ 00019 class DTBtiCard; 00020 class DTBtiTrigData; 00021 class DTTrigGeom; 00022 00023 //---------------------- 00024 // Base Class Headers -- 00025 //---------------------- 00026 #include "L1Trigger/DTUtilities/interface/DTGeomSupplier.h" 00027 #include "L1TriggerConfig/DTTPGConfig/interface/BitArray.h" 00028 #include "L1Trigger/DTTriggerServerTheta/interface/DTChambThSegm.h" 00029 #include "L1TriggerConfig/DTTPGConfig/interface/DTConfigTSTheta.h" 00030 #include "L1TriggerConfig/DTTPGConfig/interface/DTConfigManager.h" 00031 #include "L1Trigger/DTUtilities/interface/DTCache.h" 00032 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00033 00034 //--------------- 00035 // C++ Headers -- 00036 //--------------- 00037 #include <vector> 00038 00039 // --------------------- 00040 // -- Class Interface -- 00041 // --------------------- 00042 00043 typedef std::vector<DTChambThSegm> DTChambThVector; 00044 typedef DTCache < DTChambThSegm, DTChambThVector > DTTSThetaManager; 00045 00046 class DTTSTheta : public DTTSThetaManager, public DTGeomSupplier { 00047 00048 public: 00049 00051 //DTTSTheta(DTTrigGeom*, DTBtiCard*, edm::ParameterSet&); 00052 DTTSTheta(DTTrigGeom*, DTBtiCard*); 00053 00055 ~DTTSTheta(); 00056 00058 inline DTConfigTSTheta* config() const { return _config; } 00059 00061 void setConfig(const DTConfigManager *conf); 00062 00064 int nSegm(int step); 00065 00067 const DTChambThSegm* segment(int step, unsigned n); 00068 00070 int nTrig(int step); 00071 00073 int nHTrig(int step); 00074 00076 LocalPoint localPosition(const DTTrigData*) const; 00077 00079 LocalVector localDirection(const DTTrigData*) const; 00080 00082 void print(const DTTrigData* trig) const; 00083 00085 void reconstruct() { loadDTTSTheta(); runDTTSTheta(); } 00086 00087 private: 00088 00090 void loadDTTSTheta(); 00091 00093 void runDTTSTheta(); 00094 00096 void add_btiT(int step, const DTBtiTrigData* btitrig); 00097 00099 void localClear(); 00100 00102 BitArray<DTConfigTSTheta::NCELLTH>* btiMask(int step) const; 00103 00105 BitArray<DTConfigTSTheta::NCELLTH>* btiQual(int step) const; 00106 00107 private: 00108 00109 DTBtiCard* _bticard; 00110 00111 DTConfigTSTheta* _config; 00112 00113 // Input data 00114 BitArray<DTConfigTSTheta::NCELLTH> _trig[DTConfigTSTheta::NSTEPL-DTConfigTSTheta::NSTEPF+1]; 00115 BitArray<DTConfigTSTheta::NCELLTH> _Htrig[DTConfigTSTheta::NSTEPL-DTConfigTSTheta::NSTEPF+1]; 00116 int _ntrig[DTConfigTSTheta::NSTEPL-DTConfigTSTheta::NSTEPF+1]; 00117 int _nHtrig[DTConfigTSTheta::NSTEPL-DTConfigTSTheta::NSTEPF+1]; 00118 00119 }; 00120 00121 #endif