00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TMDCTsf_FLAG_
00014 #define TMDCTsf_FLAG_
00015
00016 #ifdef TRKRECO_DEBUG_DETAIL
00017 #ifndef TRKRECO_DEBUG
00018 #define TRKRECO_DEBUG
00019 #endif
00020 #endif
00021
00022 #include "TrkReco/TMLink.h"
00023 #include "TrkReco/TSegment.h"
00024
00025 #include <string>
00026
00027 #define HEP_SHORT_NAMES
00028 #include "CLHEP/Alist/AList.h"
00029
00030
00031
00032 #define TMDCTSF_MIN_LAYERS 3
00033
00035 class TMDCTsf {
00036
00037 public:
00039
00040
00042
00043
00044
00045
00046 TMDCTsf(unsigned sl);
00047
00049 virtual ~TMDCTsf();
00050
00051 public:
00053 void dump(const std::string & message = std::string(""),
00054 const std::string & prefix = std::string("")) const;
00055
00056 public:
00058 AList<TSegment> segments(const AList<TMLink> & links);
00059 AList<TSegment> createTsf(unsigned) const;
00060
00062 void solveLeftRight(void);
00063
00064 private:
00066 bool create(const AList<int> & offset,
00067 const AList<int> & width,
00068 const TMDCWire * const);
00069
00071
00072
00073 double alpha(unsigned, TMLink *) const;
00074
00075 private:
00076 unsigned _sl;
00077 double _angle;
00078
00079 AList<TMLink> _all;
00080 AList<TMLink> _links;
00081
00082
00083
00084 AList<TMDCWire> _wires;
00085
00086 static TMDC * _cdc;
00087
00088 private:
00089
00090
00091
00092
00093 };
00094
00095
00096
00097 #ifdef TMDCTsf_NO_INLINE
00098 #define inline
00099 #else
00100 #undef inline
00101 #define TMDCTsf_INLINE_DEFINE_HERE
00102 #endif
00103
00104 #ifdef TMDCTsf_INLINE_DEFINE_HERE
00105
00106
00107
00108 #endif
00109
00110 #undef inline
00111
00112 #endif