Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-10-14 01:43:31

0001 /*! \brief   Definition of all the relevant data types
0002  *
0003  *  \author Andrew W. Rose
0004  *  \author Nicola Pozzobon
0005  *  \date   2013, Jul 12
0006  *
0007  */
0008 
0009 #ifndef L1_TRACK_TRIGGER_TYPES_H
0010 #define L1_TRACK_TRIGGER_TYPES_H
0011 
0012 /// Standard CMS Formats
0013 #include "DataFormats/Common/interface/Ref.h"
0014 #include "DataFormats/Common/interface/Ptr.h"
0015 #include "DataFormats/Common/interface/DetSetVector.h"
0016 #include "DataFormats/Phase2TrackerDigi/interface/Phase2TrackerDigi.h"
0017 #include "DataFormats/L1TrackTrigger/interface/TTCluster.h"
0018 #include "DataFormats/L1TrackTrigger/interface/TTStub.h"
0019 #include "DataFormats/L1TrackTrigger/interface/TTTrack.h"
0020 #include "DataFormats/L1TrackTrigger/interface/TTTrack_TrackWord.h"
0021 #include "DataFormats/L1TrackTrigger/interface/TTBV.h"
0022 
0023 #include <bitset>
0024 
0025 /// Templated aliases
0026 template <typename T>
0027 using TTClusterDetSetVecT = edmNew::DetSetVector<TTCluster<T>>;
0028 template <typename T>
0029 using TTStubDetSetVecT = edmNew::DetSetVector<TTStub<T>>;
0030 
0031 template <typename T>
0032 using TTClusterRefT = edm::Ref<TTClusterDetSetVecT<T>, TTCluster<T>>;
0033 template <typename T>
0034 using TTStubRefT = edm::Ref<TTStubDetSetVecT<T>, TTStub<T>>;
0035 
0036 template <typename T>
0037 using TTTrackPtrT = edm::Ptr<TTTrack<T>>;
0038 
0039 /// Specialized aliases
0040 typedef edm::Ref<edm::DetSetVector<Phase2TrackerDigi>, Phase2TrackerDigi> Ref_Phase2TrackerDigi_;
0041 
0042 typedef TTClusterDetSetVecT<Ref_Phase2TrackerDigi_> TTClusterDetSetVec;
0043 typedef TTStubDetSetVecT<Ref_Phase2TrackerDigi_> TTStubDetSetVec;
0044 
0045 typedef TTClusterRefT<Ref_Phase2TrackerDigi_> TTClusterRef;
0046 typedef TTStubRefT<Ref_Phase2TrackerDigi_> TTStubRef;
0047 
0048 typedef edmNew::DetSet<TTStub<Ref_Phase2TrackerDigi_>> TTStubDetSet;
0049 typedef edmNew::DetSet<TTCluster<Ref_Phase2TrackerDigi_>> TTClusterDetSet;
0050 
0051 typedef edm::Ref<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>, TTTrack<Ref_Phase2TrackerDigi_>> TTTrackRef;
0052 typedef TTTrackPtrT<Ref_Phase2TrackerDigi_> TTTrackPtr;
0053 
0054 namespace tt {
0055   // types including digitized info on an optical link
0056 
0057   // emp framework firmware frame (64 bit word)
0058   typedef std::bitset<TTBV::S_> Frame;
0059   // reference to TTStub with bit accurate f/w word
0060   typedef std::pair<TTStubRef, Frame> FrameStub;
0061   // reference to TTTrack with bit accurate f/w word, only used before TFP output since TFP output uses more then one frame per TTTrack
0062   typedef std::pair<TTTrackRef, Frame> FrameTrack;
0063   typedef std::vector<FrameStub> StreamStub;
0064   typedef std::vector<FrameTrack> StreamTrack;
0065   typedef std::vector<Frame> Stream;
0066   typedef std::vector<StreamStub> StreamsStub;
0067   typedef std::vector<StreamTrack> StreamsTrack;
0068   typedef std::vector<Stream> Streams;
0069   typedef std::map<TTTrackRef, TTTrackRef> TTTrackRefMap;
0070   typedef std::vector<TTTrack<Ref_Phase2TrackerDigi_>> TTTracks;
0071 }  // namespace tt
0072 
0073 #endif