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
00028 #ifndef TRG_VERSION
00029 #define TRG_VERSION 0x32
00030 #endif
00031
00032 #include "l3CoordinateTransformer.h"
00033 #include "FtfFinder.h"
00034 #include "FtfDedx.h"
00035 #include "daqFormats.h"
00036 #include "sizes.h"
00037
00038
00039 class sectorGeometry {
00040 public:
00041 double phiMin ;
00042 double phiMax ;
00043 double phiShift ;
00044 double etaMin ;
00045 double etaMax ;
00046 };
00047
00048 class FtfSl3: public FtfFinder
00049 {
00050
00051 private:
00052 int sectorNr;
00053 short debugLevel ;
00054 double xyError ;
00055 double zError ;
00056
00057 sectorGeometry* sectorGeo ;
00058
00059 public:
00060 int minTimeBin ;
00061 int maxTimeBin ;
00062 int minClusterCharge ;
00063 int maxClusterCharge ;
00064 int embedded;
00065
00066
00067
00068
00069 FtfSl3 ( l3CoordinateTransformer* inTrans ) {
00070 debugLevel = 0 ;
00071 xyError = 0.3 ;
00072 zError = 1.0 ;
00073 minTimeBin = 0 ;
00074 maxTimeBin = 380 ;
00075 minClusterCharge = 80 ;
00076 maxClusterCharge = 100000 ;
00077 coordinateTransformer = inTrans ;
00078 sectorGeo = new sectorGeometry[24];
00079 fDedx = new FtfDedx(inTrans);
00080 };
00081 ~FtfSl3 ( ) {
00082 if ( track != 0 ) delete []track ;
00083 if ( hit != 0 ) delete []hit ;
00084 delete []sectorGeo ;
00085 delete fDedx;
00086 };
00087
00088
00089
00090
00091 inline l3CoordinateTransformer* getCoordinateTransformer()
00092 { return (l3CoordinateTransformer*)coordinateTransformer ; } ;
00093
00094
00095
00096 sectorGeometry* getSectorGeometry ( int n ) {
00097 if ( n < 1 && n > 24 ) {
00098 printf ( "FtfSl3::getSectorGeometry: wrong sector %d, returning sector 1 \n", n ) ;
00099 n = 0 ;
00100 }
00101 return &(sectorGeo[n]);
00102 }
00103
00104
00105 int fillTracks ( int maxBytes, char* buff, unsigned int token ) ;
00106 int fillHits ( unsigned int maxBytes, char* buff, unsigned int token ) ;
00107 float getXyError ( ) { return xyError ; } ;
00108 float getZError ( ) { return zError ; } ;
00109 int getNrTracks ( ) ;
00110
00111 int canItBeMerged ( FtfTrack* thisTrack ) ;
00112 int dEdx ( ) ;
00113 int processSector ( ) ;
00114
00115
00116 int readMezzanine ( int sector, int readOutBoard,
00117 int MezzanninneNr, struct TPCMZCLD_local *mzcld );
00118 int readSector ( struct bankHeader *bank ) ;
00119 int readSector (DATAP *datap, int sector);
00120 int readSector ( struct TPCSECLP *seclp1, struct TPCSECLP *seclp2 );
00121
00122 int setTrackingAngles(int hypersector);
00123 int readSectorFromEvpReader(int sector);
00124
00125 int setParameters ( ) ;
00126 void setCoordinateTransformer ( l3CoordinateTransformer* in )
00127 { coordinateTransformer = (void *)in ; } ;
00128 void setDebugLevel ( int _debugLevel ) { debugLevel = _debugLevel ; } ;
00129 void setSector ( int _sector ) { sectorNr = _sector ; } ;
00130 void setXyError ( float _xyError ) { xyError = _xyError ; } ;
00131 void setZError ( float _zError ) { zError = _zError ; } ;
00132 int setup ( int maxHitsIn=szSL3_default_mHits, int maxTracksIn=szSL3_default_mTracks ) ;
00133 void Print() const{};
00134 private:
00135 void* coordinateTransformer ;
00136 FtfDedx *fDedx;
00137
00138 };
00139 #endif