Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:30:39

0001 #ifndef L1Trigger_TrackerDTC_Stub_h
0002 #define L1Trigger_TrackerDTC_Stub_h
0003 
0004 #include "L1Trigger/TrackerDTC/interface/Setup.h"
0005 
0006 #include <utility>
0007 #include <vector>
0008 
0009 namespace trackerDTC {
0010 
0011   // representation of a stub
0012   class Stub {
0013   public:
0014     Stub(const edm::ParameterSet&, const Setup&, SensorModule*, const TTStubRef&);
0015     ~Stub() {}
0016 
0017     // underlying TTStubRef
0018     TTStubRef ttStubRef() const { return ttStubRef_; }
0019     // did pass pt and eta cut
0020     bool valid() const { return valid_; }
0021     // stub bend in quarter pitch units
0022     int bend() const { return bend_; }
0023     // bit accurate representation of Stub
0024     TTDTC::BV frame(int region) const;
0025     // checks stubs region assignment
0026     bool inRegion(int region) const;
0027 
0028   private:
0029     // truncates double precision to f/w integer equivalent
0030     double digi(double value, double precision) const;
0031     // 64 bit stub in hybrid data format
0032     TTDTC::BV formatHybrid(int region) const;
0033     // 64 bit stub in tmtt data format
0034     TTDTC::BV formatTMTT(int region) const;
0035 
0036     // stores, calculates and provides run-time constants
0037     const Setup* setup_;
0038     // representation of an outer tracker sensormodule
0039     SensorModule* sm_;
0040     // underlying TTStubRef
0041     TTStubRef ttStubRef_;
0042     // chosen TT algorithm
0043     bool hybrid_;
0044     // passes pt and eta cut
0045     bool valid_;
0046     // column number in pitch units
0047     int col_;
0048     // row number in half pitch units
0049     int row_;
0050     // bend number in quarter pitch units
0051     int bend_;
0052     // reduced row number for look up
0053     int rowLUT_;
0054     // sub row number inside reduced row number
0055     int rowSub_;
0056     // stub r w.r.t. an offset in cm
0057     double r_;
0058     // stub phi w.r.t. detector region centre in rad
0059     double phi_;
0060     // stub z w.r.t. an offset in cm
0061     double z_;
0062     // slope of linearized stub phi in rad / pitch
0063     double m_;
0064     // intercept of linearized stub phi in rad
0065     double c_;
0066     // radius of a column of strips/pixel in cm
0067     double d_;
0068     // range of stub qOverPt in 1/cm
0069     std::pair<double, double> qOverPt_;
0070     // range of stub cot(theta)
0071     std::pair<double, double> cot_;
0072     // range of stub extrapolated phi to radius chosenRofPhi in rad
0073     std::pair<double, double> phiT_;
0074     // shared regions this stub belongs to [0-1]
0075     std::vector<int> regions_;
0076   };
0077 
0078 }  // namespace trackerDTC
0079 
0080 #endif