00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef GL3EVENT
00012 #define GL3EVENT
00013
00014
00015 #ifndef TRG_VERSION
00016 #define TRG_VERSION 0x32
00017 #endif
00018
00019 #include <stdio.h>
00020 #include <stdlib.h>
00021 #include <string.h>
00022 #include <math.h>
00023
00024 #include "l3Coordinates.h"
00025 #include "l3CoordinateTransformer.h"
00026
00027 #include "sizes.h"
00028 #include "daqFormats.h"
00029
00030
00031 #include "l3TrgReader.h"
00032
00033
00034 #include "FtfGeneral.h"
00035 #include "gl3Track.h"
00036 #include "gl3Hit.h"
00037 #include "gl3Sector.h"
00038 #include "FtfPara.h"
00039 #include "gl3LMVertexFinder.h"
00040 #include "gl3Histo.h"
00041
00042 #include "gl3EMC.h"
00043 #ifdef OLD_DAQ_READER
00044 #include <evpReader.hh>
00045 #else
00046 #include <DAQ_READER/daqReader.h>
00047 #endif
00048 #include "sizes.h"
00049
00050 #define GL3_READ_TPC_TRACKS 0x01
00051 #define GL3_READ_TPC_CLUSTERS 0x02
00052 #define GL3_READ_ALL 0xffff
00053
00054 class gl3Event {
00055 public:
00056
00057 gl3Event( l3CoordinateTransformer* inTrans,
00058 l3EmcCalibration* inBemcCalibint,
00059 l3EmcCalibration* inEemcCalibint,
00060 int mxHits=szGL3_default_mHits, int mxTracks=szGL3_default_mTracks);
00061
00062 ~gl3Event( );
00063
00064 int setup ( int mHits=szGL3_default_mHits, int mTracks = szGL3_default_mTracks);
00065 int resetEvent ( );
00066
00067
00068
00069
00070
00071
00072
00073
00074 #ifdef OLD_DAQ_READER
00075 int readFromEvpReader(evpReader *evp,
00076 #else
00077 int readFromEvpReader(daqReader *rdr,
00078 #endif
00079 char *mem,
00080 float defaultbField=.5,
00081 float bField=1000,
00082 int what=GL3_READ_ALL);
00083
00084 void readClustersFromEvpReader(int sector);
00085
00086 short getBusy ( ) { return busy; };
00087 gl3Track* getTrack ( int n );
00088 gl3Hit* getHit ( int n );
00089 gl3Sector* getSector ( int n );
00090
00091 int getNTracks ( ) { return nTracks; };
00092 int getNMergedTracks ( ) { return nMergedTracks; };
00093 int getNBadTracks ( ) { return nBadTracks; };
00094 int getNHits ( ) { return nHits ; };
00095
00096 l3TrgReader *getTrgData() { return &trgData; };
00097
00098 l3xyzCoordinate getVertex() {return vertex;};
00099 l3xyzCoordinate getLMVertex() {return lmVertex;};
00100
00101 l3CoordinateTransformer* getCoordinateTransformer()
00102 { return coordinateTransformer; };
00103
00104 int getTrgCmd();
00105 int getTrgWord();
00106 int getCTB(int n);
00107 int getZDC(int n);
00108 double getZDCVertex();
00109
00110 int getToken() { return trgData.token; };
00111 void setToken(int tk) {trgData.token = tk;};
00112
00113
00114 unsigned int getBXingLo();
00115 unsigned int getBXingHi();
00116 unsigned long long getBXing();
00117
00118 void setHitProcessing ( int hitPro ) { hitProcessing = hitPro; };
00119 void setVertexFinderMethod ( int _in ) { vertexFinder = _in; };
00120 void setLMVertexFinder ( gl3LMVertexFinder* _in ) { lmv = _in; };
00121
00122 void setMaxSectorNForTrackMerging ( int _in )
00123 { maxSectorNForTrackMerging = _in; };
00124
00125 void setBField ( float _bField )
00126 {
00127 para.bField = fabs(_bField);
00128 para.bFieldPolarity = int(_bField/fabs(_bField));
00129 };
00130
00131 void setCoordinateTransformer ( l3CoordinateTransformer* in )
00132 { coordinateTransformer = in; };
00133
00134
00135
00136 int readL3Data (L3_P* buffer);
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 int finalizeReconstruction();
00147
00148 int readSectorHits ( char* buffer, int nSectorTracks );
00149 int readSectorTracks ( char* buffer );
00150
00151
00152 void addTracks ( short sector, int nTracks, local_track* track );
00153 int makeVertex ();
00154
00155 int fillTracks ( int maxBytes, char* buffer, unsigned int token );
00156
00157 int nMergableTracks;
00158
00159 gl3EMC emc;
00160
00161 private:
00162
00163
00164
00165
00166 int hitProcessing;
00167
00168
00169
00170
00171 int vertexFinder;
00172
00173
00174
00175
00176
00177
00178
00179
00180 int minNoOfHitsOnTrackUsedForVertexCalc;
00181 double minMomUsedForVertexCalc;
00182
00183
00184
00185
00186
00187
00188 gl3Hit* hit;
00189 gl3Track* track;
00190 int* trackIndex;
00191
00192 int busy;
00193 int maxSectorNForTrackMerging;
00194 int maxTracks;
00195 int maxTracksSector;
00196 int nTracks;
00197 int maxHits;
00198 int nHits;
00199 int nMergedTracks;
00200 int nBadTracks;
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212 l3TrgReader trgData;
00213
00214
00215 l3xyzCoordinate vertex, lmVertex;
00216
00217
00218
00219
00220
00221 FtfPara para;
00222 FtfContainer* trackContainer;
00223 gl3Sector sectorInfo[24];
00224
00225
00226 gl3Histo* hVz ;
00227 gl3Histo* hVx ;
00228 gl3Histo* hVy ;
00229
00230
00231 l3CoordinateTransformer* coordinateTransformer;
00232 gl3LMVertexFinder *lmv;
00233
00234 static const int nSectors = 24;
00235
00236 };
00237 #endif
00238