00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 #ifndef STAR_StFtpcTrackingParams
00082 #define STAR_StFtpcTrackingParams
00083
00084 #ifndef ROOT_Rtypes
00085 #include "Rtypes.h"
00086 #endif
00087
00088
00089 #include "SystemOfUnits.h"
00090 #include "StThreeVectorD.hh"
00091 #include "StMatrixD.hh"
00092 #include "Stypes.h"
00093
00094 #ifndef ST_NO_NAMESPACES
00095 using namespace units;
00096 #endif
00097
00098 #include "tables/St_ftpcTrackingPars_Table.h"
00099 #include "tables/St_ftpcDimensions_Table.h"
00100 #include "tables/St_ftpcPadrowZ_Table.h"
00101 #include "tables/St_ftpcdEdxPars_Table.h"
00102 #include "tables/St_ftpcCoordTrans_Table.h"
00103
00104 #include "StTpcDb/StTpcDb.h"
00105
00106 #include "StarMagField.h"
00107
00108 class St_ftpcDimensions;
00109 class St_ftpcPadrowZ;
00110 class St_ftpcdEdxPars;
00111 class StGlobalCoordinate;
00112 class StFtpcLocalCoordinate;
00113 class StTpcDb;
00114
00115 class StFtpcTrackingParams
00116 {
00117 private:
00118
00119 static StFtpcTrackingParams* mInstance;
00120
00121 char mStart;
00122
00123 Int_t mReturnCode;
00124
00126 Double_t mInnerRadius;
00127 Double_t mOuterRadius;
00128 Int_t mNumberOfPadRows;
00129 Int_t mNumberOfPadRowsPerSide;
00130 Double_t *mPadRowPosZ;
00131
00133 Double_t mMaxVertexPosZWarning;
00134 Double_t mMaxVertexPosZError;
00135
00137 Int_t mHistoBins;
00138 Double_t mHistoMin;
00139 Double_t mHistoMax;
00140 Double_t mMaxDcaVertex;
00141 Int_t mMinNumTracks;
00142
00144 Int_t mRowSegments;
00145 Int_t mPhiSegments;
00146 Int_t mEtaSegments;
00147
00149 Bool_t mLaser[4];
00150 Bool_t mVertexConstraint[4];
00151 Int_t mMaxTrackletLength[4];
00152 Int_t mMinTrackLength[4];
00153 Int_t mRowScopeTracklet[4];
00154 Int_t mRowScopeTrack[4];
00155 Int_t mPhiScope[4];
00156 Int_t mEtaScope[4];
00157 Double_t mMaxDca[4];
00158
00160 Double_t mMaxAngleTracklet[4];
00161
00163 Double_t mMaxAngleTrack[4];
00164 Double_t mMaxCircleDist[4];
00165 Double_t mMaxLengthDist[4];
00166
00168 Double_t mMaxDist;
00169 Double_t mMinPointRatio;
00170 Double_t mMaxPointRatio;
00171
00172
00173 Int_t mDebugLevel;
00174 Int_t mIdMethod;
00175 Int_t mNoAngle;
00176 Int_t mMaxHit;
00177 Int_t mMinHit;
00178 Int_t mMaxTrack;
00179
00180 Double_t mPadLength;
00181 Double_t mFracTrunc;
00182 Double_t mAip;
00183 Double_t mALargeNumber;
00184
00185
00186 StMatrixD *mFtpcRotationY[2];
00187 StMatrixD *mFtpcRotationYInverse[2];
00188 StMatrixD *mFtpcRotationX[2];
00189 StMatrixD *mFtpcRotationXInverse[2];
00190 StMatrixD *mFtpcRotation[2];
00191 StMatrixD *mFtpcRotationInverse[2];
00192 Double_t mInstallationPointY[2];
00193 Double_t mInstallationPointX[2];
00194 Double_t mInstallationPointZ[2];
00195 Double_t mObservedVertexOffsetY[2];
00196 Double_t mObservedVertexOffsetX[2];
00197
00198 char mEnd;
00199
00200
00201 StMatrixD mTpcToGlobalRotation;
00202 StMatrixD mGlobalToTpcRotation;
00203 StThreeVectorD mTpcPositionInGlobal;
00204
00205 protected:
00206
00207 StFtpcTrackingParams(St_ftpcTrackingPars *trackPars = 0,
00208 St_ftpcdEdxPars *dEdxPars = 0,
00209 St_ftpcDimensions *dimensions = 0,
00210 St_ftpcPadrowZ *padrow_z = 0);
00211 StFtpcTrackingParams();
00212
00213 Int_t InitTrackingParams(ftpcTrackingPars_st *trackParsTable);
00214 Int_t InitdEdx(ftpcdEdxPars_st *dEdxParsTable);
00215 Int_t InitDimensions(ftpcDimensions_st* dimensionsTable);
00216 Int_t InitPadRows(ftpcPadrowZ_st* padrowzTable);
00217 Int_t InitCoordTransformation();
00218 Int_t InitCoordTransformation(ftpcCoordTrans_st* ftpcCoordTrans);
00219 Int_t InitSpaceTransformation();
00220
00221 public:
00222
00223 static StFtpcTrackingParams* Instance(Bool_t debug,
00224 St_ftpcTrackingPars *trackPars,
00225 St_ftpcdEdxPars *dEdxPars,
00226 St_ftpcDimensions *dimensions,
00227 St_ftpcPadrowZ *padrow_z);
00228 static StFtpcTrackingParams* Instance(Bool_t debug,
00229 St_ftpcCoordTrans *ftpcCoordTrans,
00230 TDataSet *RunLog);
00231 static StFtpcTrackingParams* Instance();
00232
00233 virtual ~StFtpcTrackingParams();
00234
00235 void PrintParams();
00236
00237 Int_t GetReturnCode() { return mReturnCode; }
00238
00240
00241 Double_t InnerRadius();
00242 Double_t OuterRadius();
00243 Int_t NumberOfPadRows();
00244 Int_t NumberOfPadRowsPerSide();
00245 Double_t PadRowPosZ(Int_t row);
00247
00248
00250
00251 Double_t MaxVertexPosZWarning();
00252 Double_t MaxVertexPosZError();
00254
00255
00257
00258 Int_t HistoBins();
00259 Double_t HistoMin();
00260 Double_t HistoMax();
00261 Double_t MaxDcaVertex();
00262 Int_t MinNumTracks();
00264
00266
00267 Int_t RowSegments();
00268 Int_t PhiSegments();
00269 Int_t EtaSegments();
00271
00272
00274
00275 Bool_t Laser(Int_t tracking_method);
00276 Bool_t VertexConstraint(Int_t tracking_method);
00277 Int_t MaxTrackletLength(Int_t tracking_method);
00278 Int_t MinTrackLength(Int_t tracking_method);
00279 Int_t RowScopeTracklet(Int_t tracking_method);
00280 Int_t RowScopeTrack(Int_t tracking_method);
00281 Int_t PhiScope(Int_t tracking_method);
00282 Int_t EtaScope(Int_t tracking_method);
00283 Double_t MaxDca(Int_t tracking_method);
00285
00287 Double_t MaxAngleTracklet(Int_t tracking_method);
00288
00289
00291
00292 Double_t MaxAngleTrack(Int_t tracking_method);
00293 Double_t MaxCircleDist(Int_t tracking_method);
00294 Double_t MaxLengthDist(Int_t tracking_method);
00296
00297
00299
00300 Double_t MaxDist();
00301 Double_t MinPointRatio();
00302 Double_t MaxPointRatio();
00304
00305
00307
00308 Int_t DebugLevel();
00309 Int_t IdMethod();
00310 Int_t NoAngle();
00311 Int_t MaxHit();
00312 Int_t MinHit();
00313 Int_t MaxTrack();
00314
00315 Double_t PadLength();
00316 Double_t FracTrunc();
00317 Double_t Aip();
00318 Double_t ALargeNumber();
00320
00321
00323 StMatrixD TpcToGlobalRotation();
00324 StMatrixD GlobalToTpcRotation();
00325 StThreeVectorD TpcPositionInGlobal();
00326
00327
00329
00330 StMatrixD FtpcRotation(Int_t i);
00331 StMatrixD FtpcRotationInverse(Int_t i);
00332 StMatrixD FtpcRotationX(Int_t i);
00333 StMatrixD FtpcRotationXInverse(Int_t i);
00334 StMatrixD FtpcRotationY(Int_t i);
00335 StMatrixD FtpcRotationYInverse(Int_t i);
00336 Double_t InstallationPointX(Int_t i);
00337 Double_t InstallationPointY(Int_t i);
00338 Double_t InstallationPointZ(Int_t i);
00339 Double_t ObservedVertexOffsetY(Int_t i);
00340 Double_t ObservedVertexOffsetX(Int_t i);
00342
00343
00344 StarMagField *MagField() {return StarMagField::Instance();}
00345 Double_t MagFieldFactor(){ return StarMagField::Instance()->GetFactor();}
00346
00347 ClassDef(StFtpcTrackingParams,0)
00348 };
00349
00350 #endif