00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FTFSL3
00025 #define FTFSL3
00026
00027 #include "Stl3Util/base/St_l3_Coordinate_Transformer.h"
00028 #include "Stl3Util/ftf/FtfFinder.h"
00029 #include "Stl3Util/ftf/FtfDedx.h"
00030
00031 #include "Stl3Util/foreign/daqFormats.h"
00032
00033
00034 class sectorGeometry {
00035 public:
00036 double phiMin ;
00037 double phiMax ;
00038 double phiShift ;
00039 double etaMin ;
00040 double etaMax ;
00041 };
00042
00043 class FtfSl3: public FtfFinder
00044 {
00045
00046 private:
00047 static const int NSECTORS = 24;
00048
00049 int sectorNr;
00050 short debugLevel ;
00051 double xyError ;
00052 double zError ;
00053
00054 sectorGeometry* sectorGeo ;
00055
00056 public:
00057 int minTimeBin ;
00058 int maxTimeBin ;
00059 int minClusterCharge ;
00060 int maxClusterCharge ;
00061 int embedded;
00062
00063
00064
00065
00066 FtfSl3 ( St_l3_Coordinate_Transformer* inTrans ) {
00067 debugLevel = 0 ;
00068 xyError = 0.3 ;
00069 zError = 1.0 ;
00070 minTimeBin = 0 ;
00071 maxTimeBin = 380 ;
00072 minClusterCharge = 80 ;
00073 maxClusterCharge = 100000 ;
00074 coordinateTransformer = inTrans ;
00075 sectorGeo = new sectorGeometry[NSECTORS];
00076 fDedx = new FtfDedx(inTrans);
00077 };
00078
00079
00080 ~FtfSl3 ( ) {
00081 if ( track != 0 ) delete []track ;
00082 if ( hit != 0 ) delete []hit ;
00083 delete []sectorGeo ;
00084 delete fDedx;
00085 };
00086
00087
00088
00089 St_l3_Coordinate_Transformer* getCoordinateTransformer()
00090 { return (St_l3_Coordinate_Transformer*)coordinateTransformer ; } ;
00091
00092
00093 sectorGeometry* getSectorGeometry ( int n ) {
00094 if ( n < 1 && n > NSECTORS ) {
00095 printf ( "FtfSl3::getSectorGeometry: wrong sector %d, returning sector 1 \n", n ) ;
00096 n = 0 ;
00097 }
00098 return &(sectorGeo[n]);
00099 }
00100
00101
00102 int fillTracks ( int maxBytes, char* buff, unsigned int token ) ;
00103 int fillHits ( unsigned int maxBytes, char* buff, unsigned int token ) ;
00104 float getXyError ( ) { return xyError ; } ;
00105 float getZError ( ) { return zError ; } ;
00106 int getNrTracks ( ) ;
00107
00108 int canItBeMerged ( FtfTrack* thisTrack ) ;
00109 int dEdx ( ) ;
00110 int processSector ( ) ;
00111 int readMezzanine ( int sector, int readOutBoard,
00112 int MezzanninneNr, struct TPCMZCLD_local *mzcld );
00113 int readSector ( struct TPCSECLP *seclp ) ;
00114 int readSector ( struct TPCSECLP *seclp1, struct TPCSECLP *seclp2 );
00115 int setParameters ( ) ;
00116 void setCoordinateTransformer ( St_l3_Coordinate_Transformer* in )
00117 { coordinateTransformer = (void *)in ; } ;
00118 void setDebugLevel ( int _debugLevel ) { debugLevel = _debugLevel ; } ;
00119 void setSector ( int _sector ) { sectorNr = _sector ; } ;
00120 void setXyError ( float _xyError ) { xyError = _xyError ; } ;
00121 void setZError ( float _zError ) { zError = _zError ; } ;
00122 int setup ( int maxHitsIn=20000, int maxTracksIn=2000 ) ;
00123 void Print() const{};
00124 private:
00125 void* coordinateTransformer ;
00126 FtfDedx *fDedx;
00127
00128 };
00129 #endif